How does PoxNora Work?

Discussion in 'General Discussion' started by Sokolov, Jun 7, 2017.

  1. Sokolov

    Sokolov The One True Cactuar Octopi

    I decided to make this post because it seems a number of people have questions on or unsure what the structure of PoxNora is like from a technical perspective.

    Programmers may cringe at my simple explanations ;)

    PoxNora the game is essentially made up of 4 parts: Users, Server, Client and Database.


    upload_2017-6-7_18-17-24.png


    Client
    This is what is known as the "front-end." For the purposes of this discussion, we are ignoring the website, but the website is also a front-end "client" type of interface.

    The client is what takes input from the user, and displays information to the user. The client makes requests to the server to obtain the information it needs and structures it in a way that makes sense to the user - sometimes the information will be on the server itself (for example, how an ability works), or it may need to request it from the database (for example, to get your gold total).

    Note that the client cannot get anything it wants - the functions it calls must be supported by the server in some way.

    The client also holds all the files for what to display for the runes - so that when the server says, "SHOW ME THE GRIMLIC" it pulls up the appropriate file and puts it on your screen.

    For a non-quite right analogy, the client is your computer's monitor, graphics card, keyboard and mouse - it displays stuff and takes input, but it really doesn't know what to do with any of it unless the server tells it something.

    If something is displaying incorrectly (for example, the Sporegill's sprite), then that is a client issue. On the other hand, if an icon is missing, it might be a client issue (the file is missing), OR a database issue (the name for the icon is misnamed or missing there).

    Server
    The server is the brains of the operation and has many parts. The server is where the AI is stored, where the matchmaking happens, and what controls your account stuff.

    For gameplay, the server is also the decider of what happens - if the client is ever wrong about the position of a unit, the server will correct it. This is why people then to say that server based games cannot be hacked - which is not technically true, but modifying the client will simply make your game run incorrectly and not actually accomplish anything as the server is always the authority on the true state of the game. Thus, you'd have to hack the server itself, which is much harder.

    All of the abilities, spells, etc. and the way they function are on the server. Thus, almost all gameplay bugs are server related, though in some cases it can be database (for example, if the AP cost is incorrect).

    Database
    There are 2 main parts to the database: the user database and the rune database.

    The user database is exactly what it sounds like - it is the information for the users - your login, email, your runes, game history, all that stuff. When websites get hacked and information is released - the stuff people are afraid of is normally the user database because it can often contain private information.

    The rune database is the "design side" of the game and houses all of the information related to the game. Every single rune, achievement, quest, pre-made decks are defined in this database. As the Game Designer, this is where I live most of the time.

    Typically, if a new rune is created, it is created in the database by the designer, its related assets are added to the client by an artist, and the code for any new abilities added to the server by a programmer.

    Abilities are defined here as well:
    upload_2017-6-7_18-26-52.png

    As you can see, there are a number of parameters here that can be adjusted, but changing the FUNCTIONALITY of the ability requires a server change.

    ~

    Feel free to ask questions :)
     
    aseryen, newsbuff, Andoid and 9 others like this.
  2. diahru

    diahru The King of Potatoes

    This is really cool!

    1. Will the devs change and updated the website as well since there is a new client, in order to make website features more accessible?
    2. That rune Template you show look simplistic, so how do you add in additional abilities, rune type, Image, and Sprite file?
     
  3. GoldTiger

    GoldTiger I need me some PIE!

    Can you explain how upgrades work again? From what I heard its not as simple as changing a 1 from a 2 like in your abilities tool. Supposedly you must create a whole new "set" of upgrades if it didn't already exist? Why is this so?
     
  4. SireofSuns

    SireofSuns I need me some PIE!

    So, I may be misunderstanding, the database cannot be changed without changing the server? Is that correct?
    For example, if you want to change the nora cost of the ability, does this require a full server update or no?
     
  5. iPox

    iPox Forum Royalty

    Cool. Thanks for the infrastructure insight.
     
  6. Markoth

    Markoth Lord Inquisitor

    [​IMG]
     
  7. MikeLin

    MikeLin I need me some PIE!

    No, think of it this way:
    A database is like the bookshelf in your house. And your house is like the server. When you switch or remove books from the bookshelf, you do not have to change anything to your house.

    I think the only times servers need to be updated, in regards to database, is when u add a new database (connecting database to server) like paving the walkway in your house to your bookshelf.
     
    SireofSuns likes this.
  8. darklord48

    darklord48 Forum Royalty

    Databases are filled with tables. Each table has a bunch of columns and rows. Additional rows can be added at any time as that is just another entry in the database, like another user on the forums. Each column is a piece of data. Username, Post Count, Like Count, etc would all be columns for the forum users table. If another column was added to the table, say Dislike Count, that can be done without a server restart, but that column is useless until the server is updated with new code, which would require a restart. The same is true for additional tables in the database. They can be added behind the scenes, but until the server is updated with new code to access the new table, that table is useless.

    Think of tables in a database like shelves on a bookshelf. You built a robot that can reach up to the shelves and pull books off the shelf for you. The server is the robot. You can change books on the shelf without a problem, your robot doesn't care what the books are, as long as they're the same size as the other books on that shelf. Your robot can get books from every shelf it has been programmed to access, but if you add a new shelf, then the robot needs to be updated.
     
    SireofSuns likes this.
  9. Skeezick

    Skeezick Forum Royalty

    How does it work?
    it doesnt
     
    Protick, Baskitkase and DiCEM0nEY like this.
  10. Sokolov

    Sokolov The One True Cactuar Octopi

    Been very busy, will answer when I can :)
     
  11. Protick

    Protick I need me some PIE!

    Sok, I think the best thing to do would be to make a list of all current known bugs much like the cactuar crate, so people don't report the same bugs over and over.
    The bugs sub forums is like a monkey's cage. It's best if all gets reported in a single thread which also makes it easier for you to address the issues

    If you don't have the time for it I can make a list for you to get started
     
    Last edited: Jun 22, 2017
  12. diahru

    diahru The King of Potatoes

    @Protick Yes please that would be really useful :D
     
  13. LadyJava

    LadyJava The King of Potatoes

    cant play the game if no live people are around to play lol a year ago there was a bigger fan base now its wtf
     
  14. Baskitkase

    Baskitkase Forum Royalty

    ftfy:
    [​IMG]
     
    Alan and Lushiris like this.
  15. Sokolov

    Sokolov The One True Cactuar Octopi

    1. Probably, though there are no specific plans right now
    2. II only showed a portion of it, here's the other half:

    upload_2017-7-25_13-21-48.png

    Note that sprites and images are not specifically defined, but rather keyed to ID. So whatever the ID of the unit is, is the name of the image file it looks for basically.
     
  16. Sokolov

    Sokolov The One True Cactuar Octopi

    To create upgrades, I do the following:
    1. Create an upgrade set
    2. Assign the upgrade set (this is automatic by creating the upgrade set within the tool under the champion for which I want it assigned)
    3. Assign abilities to the upgrade set
    Changing upgrades is as easy as removing an ability and adding a different one.

    The problem is that when the original DOG revamp happened, many champions were assigned the SAME upgrade set to save time and effort, and to give each "race" or "theme" the same flavor. The idea was that all Draksar would have X upgrade set, and all Vampyres would have Y upgrade set which is not a bad goal, but also isn't what Pox is and ended up making tons of champions feel homogeneous.

    So now, if you change the contents of an upgrade set under one champion, but that same set is being used by another champion - BOTH of the champions are affected - and the tool doesn't tell you that this has occurred. That's the problem I have described in the past which is why you have seen errors in upgrade adjustments (particularly cases where the same ability is on an upgrade and on base or on another upgrade line is often this situation).
     
    Last edited: Aug 9, 2017
  17. Nora That

    Nora That I need me some PIE!

    Oh but there ARE people playing. Although recently I've been questioning my own "peopleness"...
     
  18. Imba

    Imba The King of Potatoes

    I would like to add one small contention, not that it is particularly important. Feel free to disregard this if you find me to be pedantic.

    You said: "... Thus, you'd have to hack the server, which is much harder"

    This isn't necessarily true, it just requires more creativity. You can't directly attack a client in order to change the state of a game, but a compromised client still provides an advantage if only for the fact that it grants direct control over the calls the client makes to the server. If you can control the communication stream between the client and the server, that's enough of a starting point for the potential to do some serious damage. From there you can poke and prod and attempt to find a server call that is unprotected or flawed in some way; something that contains a weakness. For instance, maybe the server protects against a call like sixul moved 50 spaces, but maybe it doesn't protect against a seemingly innocuous call like listavailablerunes(playerid), then passing in the player id of your opponent. And if it does, there will always be another call that was overlooked. Obviously this is a very simplistic illustration that would not work ANYWHERE in its current form.

    I have never attempted such an exploit on this particular game (or rather any exploit of this game) and I won't provide any specific examples lest some unscrupulous individual should attempt something similar, but I think it's important to understand that each point of entry introduces risk that should be taken seriously.
     
    Tweek516 and xaznsoulx like this.
  19. xaznsoulx

    xaznsoulx Supreme Dream Team 夢想 隊

    @Imba Miss you man where have you been?
     
  20. Imba

    Imba The King of Potatoes

    @xaznsoulx: Hey man, I missed you too! I got really depressed with the new client to the point where playing the game was just a chore. Decided to take a break until things got better, and am hoping to come back now :)
     

Share This Page