Client-server Action Synchronisation

Chris wrote:
The problem is what happens when the server decides that the action can't have occurred - that's when the game gets badly out of sync.

Can you write some code for trap charges when this occurs? When the player could not have thrown a trap at said monster/direction, the trap simply disappears from the stack and does not land. Need something to ask if the thrown trap exists anymore, and if no, return it to the player. Ive thrown several traps at an enemy before and because they are in the next room, yet desynced in front of me, i get beat down because my skills magically disappeared and cant always escape.
Theory craft, its why I have used all 24 character slots and the strangest builds you'll ever see.
Chris wrote:

Games using client action prediction like ours run into exactly the same sync issues that we do unless they cheat on certain aspects of the simulation. For example, it's common for Action RPGs to do some combination of the following:
  • Entities can hit each other from a long distance away
  • There's no chance to hit - all hits occur for sure

Unfortunately, we don't want to do any of those things! They each individually ruin part of the hardcore experience: by allowing combat/movement cheats, preventing accuracy from existing as a mechanic, prevent stunlock, preventing people getting blocked in, etc.

Due to the fact that we want to have hardcore game mechanics (i.e. ones where position matters and it's difficult to cheat in PvP), the only option for us has been to put a lot of work into improving our combat simulation and resync code.

From a results standpoint, saying you hit me, but you hit me for 0 damage is the same thing as avoiding a hit entirely. So what if you change the code so that all hits are guaranteed, but then you do an initial roll (based on evasion & accuracy) to check whether or not I take 0 damage from the hit or the "actual" damage (based on armor, resists, or whatever).

Or am I just adding in another step here that doesn't solve the problem?
Unlimited Blade Works - Illya (Animate Weapon Ranger)
SVD wrote:
another gameplay issue regarding synchronisation (semi off-topic):

imo path of exile does a poor job of displaying damage over time based effects.

All the visual indications are hard to see in cluttered scenarios and there is virtually NO audio indicating anything.

-corrupting blood
-chaos damage zombie cloud
-burn from burning ground
-incapacitation due to bear trap / vaal rain of arrows.

these aspects don't matter too much in a world that is always in sync, but when your character moves differently than you would think, audio and visual indicators to effects being applied on your character could help out very much.

-coloring of the screen when under the effect of these status effects (like vision applying to life, coloring could be used)
- audio indication:
- coughing when standing in chaos damage
- boiling sound for corrupting blood / burn
- etc.

the more information you receive the better you can tackle desync situations

yea im liking this
my additional idea would be to have these sound/visualstates being sent over the
network as very small packets
so you would basically hear the CB even tho you couldnt see the boss (cuz youre desynched)
hopefully at least, it would require less data maybe being sent over the network
on the other hand maybe its bad to add this if it creates a bigger dataflow,
but maybe it just be a tiny byte or something that indicates these things

Guess I'll never be able to return to PoE.

For me as a gamer smooth gameplay is above everything else. I'm sure you were told this before many times and you hate it, but I repeat: your closest competitor Diablo 3 doesn't have desync issues (almost). I mean, in D3 I desync once per day and it's hardly noticeable. In PoE I can't even count how often I desynced. It became normal. And that is really sad.

Still in D3 there are stuns, freezes, knockback, "cyclon", teleports, "leap slam", pets who fight for you, skills that suck enemies close to you (imagine that in PoE! desyncfest! vaal cyclone for example), you can't run through monsters, you can prevent monster attacks by hitting them hard enough, you can physicaly dodge some attacks and most of the projectiles, there is "dodge" stat, "block" stat etc. The only thing it is missing is "accuracy" stat. Guess what? I gladly trade that "accuracy" crap for smooth gameplay without desyncs.

You can say "go play your D3 you $#$@!" Well, I'm actually playing it. But it doesn't have that great skill tree, builds variability, and the overall leveling expirience is much better in PoE.

I just want you to make desync unnoticeable, like in D3. -_- I want to play your game! But I just can't take desync anymore.
I find it weird that you're unwilling to compromise on desync issues, because I'm pretty sure teleporting from a screen away back into a pack of mobs is much worse than most of the negative effects you listed.

Diablo 3 feels a lot better to play. Yeah, I said that. I don't care about what compromises they made to make that happen because I don't notice them when playing AT ALL. That's what matters to the consumer, GGG.
Last edited by faction55 on Apr 21, 2014, 10:50:02 AM
sidtherat wrote:
DexDeus wrote:
So d3's approach is.

Mobs are ghosts - run through them all you like
Skills have massive AoE - doesnt really matter where they are on the server - you'll hit them
Minimal room obstuctions
Doorways are large
Corridors are wide
Mechanics are basic - no accuracy mechanic for example, calculations are minimal

So the way you play is charge in and do your big AoE and just run around killing with no real tactics in mind, all you have to do is watch your health a bit and kill...

I dont want this ... i want a hardcore game...

are you sure you have played d3 at all?

half of these are wrong and 'complicated mechanics' - there are accuracy/evasion (d3 has dodge/block as well) and stun. just two.

Half is wrong? Only one point he made is wrong, mobs aren't ghosts. I'd also like to add that in D3, movement and gameplay is generally a lot slower (the epitome of this is the Crusader, thanks for the 20 second cooldowns, Blizz). And you forgot Knockback :) All these mechanics cause desync, but also allow for a deeper game experience. I'm okay with it.
GGG banning all political discussion shortly after getting acquired by China is a weird coincidence.

The way I understand it, big part of desynchronizaniation issue is your zone design. The more debris, doorways, narrow corridors and other obstacles you place into a zone, the worse the desynch issue becomes.

Now I *think* I understand why you went this way - to make life of mutiboxers and botters harder - but I do not think the effect is worth it.

Here is what I would do:

- make minor obstacles ethereal / pass-thru-able
- minimize hardblocks in all zones
- simplify indoor / complex zones
- force synch more aggressively

Focusing on smoother gameplay should be worth it from business standpoint since people who buy your microtransactions are those who enjoy actually playing the game. Desynch takes away large part of the enjoyment. I would attack the botters from another angle (mainly client datamining, but that is another topic).

Peace out and thanks for reading.

EDIT: Great job on bringing back the Development Manifesto btw. The community needs to hear that you actually see and work on the issues that players identify.
Last edited by vilik on Apr 21, 2014, 11:04:59 AM
demonskye wrote:

So, my question is: If you've implemented a system that is checking EVERY swing, why not limit that system to something like every (random -- 10%) of swings are sent to the server. If the server goes "Hey, I really think that should have hit based on what we're seeing" it flags it. Continue this process for some time, and then start doing robust gameplay logging on the accounts that have come up most flagged. The people who are cheating might not be getting hit at all. Finding and banning one or more of these people would take hardly any time or effort at all.

If the client is reverse-engineered, this would definitely be exploited, expecially in HC leagues. There are other ways to reduce communications while keeping instant response of the client (and there has been a loooong discussion some months ago about that), but it requres a complete rework of the code.

Chris wrote:
Desync is not affected by stress on our servers (as explained in the above article). Buying more servers doesn't solve the problem. We have enough servers currently. When they're overloaded, they fail to spawn new areas, rather than affecting combat prediction.

This is a big surprise for me. So why limit the /oos command to 0.1/sec? Most of my cyclone Marauder deaths are that I cast /oos (my brain do it 'automatically' whenever i use cyclone in strange situations), but i get desynced immediately after: I loose the control of my char, I cannot leech and all I can do is drink a few flasks, cross fingers and spam my /oos macro until the server accept again the resync command. I understand that frequent automatic updates can be bad for gameplay, but if I request the update, it is because I need the resync.

Roma timezone (Italy)
Last edited by HellGauss on Apr 21, 2014, 11:04:10 AM
Hoping for some goods news on "Cyclone" as the de-sync is excessively more than on my Split Arrow / EK build.
what exactly prevents the server from sending map coordinates to the client at a moderate rate, so that the client can decide whether the offset is acceptable and request a resync if necessary and outside of the cooldown?
make it optional if you like, idk....

just to get rid of that /oos metagame until an actual solution is found. It's really weird, that the /oos script is more or less your most important skill in this game.
maybe you could introduce a resync skill gem so we can link it with cwdt...
Last edited by Rawfoss on Apr 21, 2014, 11:23:29 AM

Report Forum Post

Report Account:

Report Type

Additional Info