[Suggestion] Game client optimization will always be a thing...

Discussion in 'PlanetSide 2 Gameplay Discussion' started by TommySharks, Feb 12, 2020.

  1. TommySharks

    Hello, everyone!
    If devs will ever read this i would happy to suggest some idea for game client optimization.
    Well, i know that you're working on Escalation update which is really cool and i'm sure adding new content to shake this game a little bit and draw some attention from both new and old players that are currently playing something else but will be happy to return and have some new experience here - that's main priority. But if you achieve success (and i wish you to do so) the game population will grow and obviously scales of battles will get bigger too. That is the point where most mediorce PC's will experience massive FPS drops (i bet they already do). For modern first person shooter there's a standards of 120fps minimum limit. Beyond this limit on player's performance beside personal skill level his hardware also start applying some effect. The lower average FPS - the more influence from hardware. I bet there's not many people in 96+/96+ hex can stand and say: "hey! i got 120+ fps i'm totally fine!". Well, in average fps between 60 - 120 fps you can kind of perform but a lot of mediocre PC's will not have even 60fps. And that's probably half of current gaming community already, imagine when more people join. Beyond 60fps the hardware influence on players gameplay become a huge problem...

    Well, its common problem for any MMO project. For example, in EVE online developers made a special settings in options menu that are designed (and tested) exclusively for major scale battles. Okay, i'm done telling obvious things now what i suggest?

    I suggest to start from workaround. Yes there's a special word in programming - workaround. In short words it's temporary measure to make your current task working while you're developing real feature in order to replace this workaround in the near future. Basically programmers buying some time with this thing.

    Why not start from Infrared vision implant? Currently, if you use this implant with ALT+F feature you will see that your current fps will not change or even get slightly worse. But it should limit your vision range (aka draw distance) set beyond minimal 500m radius to 125m so only buy this mechanic your fps should grow for reasonable amount. Also this implant minimizes weapon/explosion effects and replaces player models with low polygonal white objects. At least it shows you that but in reality literally nothing happens beside the color change of surrounding objects. Your vision limited to 125m but the game client still draws it above for distance set in your graphic options menu. So, again, why not to start from Infrared vision implant? This could be nice platform to develop and test some optimization methods that could be implemented as new settings for game client in near future. I would rework Infrared vision implant (at least for things a mentioned before) to give more optimized view to players (and possibly IRNV scopes too but this can be a challenging because of quick changing between optimized view and regular one) and allow to craft specifically this implant via craft menu using ISO-4 currency to give players this workaround as option to improve their performance if they plan to join a hex with massive fights going on. Honestly, there's nothing special in this implant to be exclusive and super rare - people not using it too much. But they will if it would give them some additional performance in heavy overpopped areas.

    That's it. I think i said everything i wanted. Really hopping for major performance optimization updates in future. Thank you for your attention!

    p.s. There's literally no limit in optimizing your methods. For example: people were using like 15 years ago mathematical concepts and theorems based on odds to filter data in search engines. And still, beside really nice results people had to put a lot of human work to constantly adapt their data filters and review results they were getting. Now, these days, a lot of human work has been replaced by recursive neuron networks. Modern search engines work like 500% effective than 15 years ago - that's a real example of code optimization right there lol xDD
  2. TommySharks

    Resuming all those words above, here's the simple step-by-step plan:
    1) Take Infrared implant.
    2) Force it to change draw distance of all environment to 125m
    3) Replace that color changed player models with simplified low polygonal ones people woudn't even notice difference cause of total white color.
    4) Replace the actual color changed animations of explosions and flying projectiles by simplyfied versions of them.
    5) Analyze environment, figure what you can replace with simplified versions of surrounding objects without making them look ugly. I'm sure there's got to be some methods to do that.
    6) Add option in implant craft menu "Infrared vision" and allow people craft it for ISO-4
    7) Profit xD

    8*) Analyze experience you got from doing that and try to figure what you can do to improve the rest of game content.
  3. csvfr

    Server side optimization will also be a thing, something that can't be compensated for by a better PC. Regardless if you have a $10.000 prosumer grade computer 2080 ti etc. server ping and latency both > 100ms kills the gaming experience for all. This can be quite common during prime time on Cobalt.
  4. TommySharks


    Totally agree. But that's just another case of optimization efforts. They both should have same priority and both are important.

    The math is simple for me: i have 56ms on average playing on Miller that means if i would have high end PC conf or quite terrible barely holding 17fps the targets in both cases will resync in 17fps frequency because 56ms is 1 / 0.056 = 17.857 parts of 1 second (almost same as 17fps) the only difference will be that high end PC conf will hold the environment and animations super smooth.

    But in the other side 25fps drops in major battles is 1 / 25 = 0.04 or 40ms of natural hardware delay so in case i would sit in close proximity to game server having ping less than 20ms that wouln't matter because hardware negates this still to 40ms.

    I would say if we have to deal with 100ms+ ping then, yes, server side problems become a serious thing. But in cases less than 100ms hardware fps drops will take relatively equal effect and must be resolved with same priority.

    In my case with avg. 56ms ping to Miller and 25fps drops which is 40ms delay the hardware delay more important cause i can't do much with that 56ms - its natural ping comming from routing to game server and all i can do is hope for best (if devs will open new server closer geographically to my location) but if i get less fps drops during the major fights that would be a huge for my case. That is a reason why i created this thread - i believe we should have some tools to adjust our graphics settings to adapt in different scenarios. The way i see this is implementation of settings presets: "normal" and "major scale" which should be bound to some hotkey so user could quickly adapt to given situation because overpop can occur surprisingly fast. Yes, i know some settings are require to full restart of game client but as a programmer myself i know that there's no limit for ideas that can change everything.

    The golden rule for every MMO developer is that they HAVE to hold the balance in their ambitious ideas and don't forget a simple fact that more than half of their customers running mediorce hardware and add the fact that the things their players do have much higher scales than any other single-player game. That is why Fortnite has a big success in the past simply that because they just used cartoon style of animations to hide low polygonal objects behind them and users didn't even noticed because hand-painting style of cartoons really looks like that. I'm not calling to rewrite everything in cartoon style and do same thing because not all people like this and myself included but i point attention to this as example of methods that are exist and can be used to improve performance without making things look ugly.
  5. TommySharks

    One example from my personal experience in real life:
    As i mentioned before i'm programmer myself and teamleader of developing groups. And i had a task from my boss to find more people cause we were creating new dev. department. I didn't count amount of interviewed people but it looks like around 30 ppl came to find themselves a new job. I gave all of them a simple task: You have an numbers array [0,1,2,3,4,5,6,7,8,9] now write a function which takes this array as an argument and returns array [9,8,7,6,5,4,3,2,1,0] so what you need too do is obvious now start doing your task, remember, you're not limited in time but taking too much time to think will not impress me because i want to finish this as soon as its possible and go home.
    And people started working. A lot of them started to write functions where they creating decremental cycles using that decremental iterator as array cell address and rewrite those numbers in new array containing data i asked from them...
    But there was 1 guy that just put a 1 string that just was simply returning exact result i asked for without any actions affecting it - just copy pasted data from task description.
    I asked him:
    - "Why you didn't used logical operations cycles like your opponents were doing?"
    - "Why i shouldn't bother if you asked to return array we all already know exactly how it should look like?".
    And then i realized that this is a guy i'm looking for - perfect sharp mind, he doesn't use calculating power where he doesn't need to. I asked him:
    - "But what if i gave you task to write function which takes unknown numbers array probably even multidimensional and return this flipped version like in our previous task but for this array?"
    - "Then i still would avoid using those logical cycles cause there's a proper mathematical functions for tasks like that. Using logical cycles maybe looks like easy approach but in fact the more dimensions we have the more complicated cycles we would write and more calculating power waste as result. By the way they all was wrong because its better to write recursive function instead of those cycles cause its more flexible method."
    -"Congratulations then. You're the guy we looking for."

    This guy from the start had proper mindset optimized for tasks he receiving and completing them in most profitable way. No wonder that his new dev. department achieved much success under his leadership xDD
    Now imagine how many possible logical constructions may occur in game client code that are exist only as overkill wasting calculating power....
  6. csvfr

    That math is wrong. Hardware delay adds to network delay there is no sync.

    Example with 50 fps the hardware delay is 20ms, so when an eneny comes into your view/sights that's an initial delay.
    Furthermore you'll have a reaction delay of ~200ms before you can aim and shoot. Then comes 50ms server latency before your shooting is with the server, yet another 50ms before this is sent to the victim, then he needs to react (another 200ms + hardware delay) before firing back, with the same 50ms+50ms for this to be sent back to you. So all in all from the moment you start firing on an unsuspecting enemy there is a delay of about 0.5 seconds before you notice a reaction, 0.2 of which is due to the network and only 0.04 attributable to client hardware delay. Often this means that you can kill the enemy without taking much counterfire, if any at all, and that the enemy will just hear a bunch of bullets before being instagibbed.

    Keep in mind players might come from other FPS's which feel much more responsive and tense, this because of servers with less lag.
  7. TommySharks


    That math isn't wrong, it's just simplified. You can't deny any of my statements but, in fact you using same logic just adding more numbers into it.
    This 200ms "reaction delay". In math we call number like this a constants and everything that are constant can be removed out of equasion. Imagine someone already pointing the gun at you and you just running in some direction - there's no 200ms reaction delay, user just pulls trigger and dumps his magazine in your direction with no delays except for network latency.
    And i don't understand your 50ms+50ms formula. Everything happens simultaneously. If you shooting someone for you and your victim result of hit-or-miss value will arrive for both of you in same time - because everything is synchronized. In case when you both have equal network latency. In case when your victim has bigger latency he may miss few package synchronization sessions and will teleport on your screen as result if difference would be big enough. But you will still be able to kill him because everything is synchronized. That would be definitely more challenging but when you adjust your target lead to his teleport distances and land a shot directly at that place and then send a package with that info to server it will save a hit result. Because everything is synchronized and despite him missing some package sync sessions you found the one he doesn't miss and put your action in there so in next session he wouldn't miss he will receive a hit result from server even if he's sees himself already behind cover... This is how i die a lot xDD Apparently i lag a lot also xDD

    Nobody say that code optimization for game client or for server-side software is irrelevant. We went sideways discussing some details that are not contain much interest for main topic.

    p.s. Yes, that is why topic like this are here for. To draw devs attention in order to bring for those players more of that feeling. The more of that CS:Go (or same type of game) lan game performance feeling we achieve here - the more overall positive impression this game will leave in hearts and minds of those players.
  8. csvfr

    Yeah I know some math yes what I'm saying is that: from the moment the trigger is pulled on a Player 1 screen it will not be visible before L1+L2+H2 time on a Player 2 screen, where
    • L1 = latency of player 1, time for the shooting event to travel from Player 1 to the server
    • L2 = latency of player 2, time for the shooting event to travel from the server to Player 2
    • H2 = hardware delay of Player 2
    So already the network latency makes up 80% of the total lag, and for a reaction from Player 2 to arrive back with Player 1 the same network route must be travelled resulting in 2x the lag. That's what I mean with 50ms+50ms, it's example values for L1 and L2. In the meantime Player 1 is free to kill Player 2 on his screen as an effect of the client side hit detection planetside 2 has. In fact this means that everything happens asynchronously, and it is for instance possible for both players to kill the other on their respective screens resulting in death for both players.
  9. TommySharks

    Your L1 and L2 happens at the same time (^^,)

    p.s. And players killing each other at same time not because of desync but due to low muzzle velocities. If they would have hitscan weapons then you wouldn't ever see that happen. Desync may happen but not as intented feature it would be rather technical issue...

    p.p.s. Btw what are we doing last few posts called forum flood, lets stop this its not important to topic. If you worried so much about server performance - fine, then create corresponding thread for that. I don't mind if you do so (^^,) You didn't tell me what you think about the suggestion - that is more important!
  10. csvfr

    No they happen sequentially - everything must pass through the server. As when I'm typing and posting this response, it first goes to the forum server, then to your computer.
    I have raised some points already, perhaps not directly enough so let me summarize:
    As developer resources spent on optimizing is scarce, they should be directed towards where they have the greatest effect. This might very well be with the servers instead of the only the game client, or even a combination of the two. Regardling lag shaving off 5ms from the server would be twice as noticable as on the game client. Some players, e.g. those from an FPS background, might hold this more dear than marginally smoother animations.

    This is not to be interpreted as I'm "much worried" about server performance nor that it necessarily fits in an own thread. In fact it complements your proposal, and you should argue why SOE/DBG/RPG's programmers should focus their efforts as you have prescribed, even though it might be more beneficial to optimize the server on a per ms basis.

Share This Page