Client-server Action Synchronisation
" If you're dying to desync after you've been playing the game a while and you know what it is, it's because you're shit at the game. It's easy to avoid and a macro can solve desync whenever it does happen. |
|
" Hackers will just probe the servers with dummy accounts until they can figure out what the optimal values are for each circumstance and use a program to only feed the server optimal values. Also, how can the server know what is reasonable without simulating the running its own instance and being fed info by the client in the first place? Computer specifications:
Windows 10 Pro x64 | AMD Ryzen 5800X3D | ASUS Crosshair VIII Hero (WiFi) Motherboard | 16GB 3600MHz RAM | MSI Geforce 1070Ti Gamer | Corsair AX 760watt PSU | Samsung 860 Pro 512GB SSD & WD Black FZEX HDD |
|
" You serious? I get desync very rarely in d3, but when I do, it's mostly in a3 small doorway areas, especially with the exploder mobs around that can stun you with their big dmg explosion. Also, desync in solaris/lunaris temple is miles better than desync in vaal pyramid - big, open rooms and doors vs small doors and rooms filled with impassable obstructions. D3 has almost no indestructible doodads - basically only the various weapon/armor racks are impassable and I've had issues fighting around those - not comparable to PoE issues but they're there, and they're not there when I fight in completely open terrain. Different level design can easily alleviate this in PoE but it's not a trivial issue from developer hours spent perspective to change what already exists so drastically. | |
Since you mentioned Brutus hook specifically, I'd like to talk about that.
What I've been noticing in that fight is that I can -dodge the hook -hear the hook hit me anyway and see my character get stunned -take up to 2 seconds for me to actually get pulled Obviously I'm not actually dodging it (which is understandable at ~80 ping, I don't mind that or that the hitbox is big). It's just frustrating to that my client KNOWS I got hit (because I heard the hit) but DOESN'T know I got pulled. |
|
" The major problem for me, at least, is that desync is such an issue that it makes certain builds (which I VERY MUCH would have liked to pursue) - like cyclone, flicker strike, etc. - practically impossible to run successfully most of the time. I use speed as both an increased damage source as well as a source of increased survivability to make my build work. When I'm not hitting the monsters because flicker strike can't even target the correct positions of monsters each strike, it makes me die VERY quickly. There are a myriad of other specific issues related to desync, of course - most of which you (Chris) have broadly touched on already. The fact that the way your game architecture is set up, is preventing people from using certain builds is abysmal. This is not a small issue. You said it yourself, desync is a very hot topic - and with GOOD reason. I acknowledge your counterpoints to changing the way you handle client-server interaction and all the drawbacks of doing it the way MOBAs (for example) do it; but even given all of that, I STRONGLY suggest you reconsider doing it this way. I personally don't care how long it takes to 'rewrite most of the game' as long as you start working on it. I fully recognize what an undertaking this will be - as a developer myself - but, honestly, I respectfully submit that you made a mistake in your initial design decision to set the game up to use this type of client-server interaction in the first place and the time has long since passed to begin working on correcting it. I fully believe the payoff for re-coding to use the alternate method of client-server interaction, mentioned before, will be well worth it in the long-run. The bottom line, here, is: If there is an issue that causes players to not be able to rely on their inputs to produce expected results, then there is something very wrong.. something that needs to be fixed. I am proud of and happy with almost every aspect of your game. This one issue is the single massive misstep in the game's development/design. Last edited by Darkfyre#6647 on Apr 21, 2014, 1:11:46 PM
|
|
" I did read all the original manifestos when they came out, it's been a while so I don't remember much of them, I did not the read the recent edits but I did read the newly added info, my post was based on that, I'll grant you that everything is already explained but there's so much info, I would just want a simple answer. " Thanks for pointing this out, nice post |
|
You mentioned that sometimes the hit calculation is at issue. That is, the server knows the outcome of a hit, but the client doesn't. That can be alleviated by syncing random number generators on the two, and partitioning those RNGs more finely. E.g. if currently two hits in different orders from different monsters can throw off the RNG, split the RNG across the monsters (instead of sharing one common RNG).
The more you supply each kind of action with its own RNG source, the better the synchronization will be maintained across client and server. |
|
" what game are you playing? That is exactly what all my melee duelists do! A lot of times I don't look at the screen just click and watch my health/flasks especially on most bosses since I'm life leech based and can just leech through damage with the appropriate flask/w leech on it i.e. topaz for lit mobs/ amethyst for chaos etc all with life leech mod on them S L O W E R
|
|
One of the reason D3 desyncs less is because all non-sustained attacks will connect. Although you can Dodge attacks in D3, D3 treats dodging as a simple % chance to dodge the attack as the calculation is still performed even if you physically moved out of the way of the attack (There are a handful of exceptions though, certain specific skills in the game will allow the player to move out of the way without risk of being hurt by the attack).
With POE something like 99% of attacks can be dodged by moving out of the way of the attack, completely avoiding damage in the process! This approach is much harder for a prediction model to handle well. There are also critical hits that the client might not know has occurred, which stunned you/an enemy momentarily causing you/an enemy to go out of sync with the server! And the trusty ability to have your/an enemy attack outright fail/miss. Remove these mechanics and it will be as stable and perfect as D3's infrastructure but the gameplay will suffer. Computer specifications: Windows 10 Pro x64 | AMD Ryzen 5800X3D | ASUS Crosshair VIII Hero (WiFi) Motherboard | 16GB 3600MHz RAM | MSI Geforce 1070Ti Gamer | Corsair AX 760watt PSU | Samsung 860 Pro 512GB SSD & WD Black FZEX HDD Last edited by Nicholas_Steel#0509 on Apr 21, 2014, 1:31:00 PM
|
|
Also from my own experiences using Quartz flasks even just running around regularly gets rid of about 90% of desyncs, which lead me to believe that 90% of desyncs are caused by player/monster collisions and because of that, desync will never go away
S L O W E R Last edited by ampdecay#1924 on Apr 21, 2014, 1:29:18 PM
|
|