Client-server Action Synchronisation

"
sidtherat wrote:
"
Macattackmicmac wrote:
Just something to the people who support the idea of the 'cluncky system' (the MOBA one cant remember the name)
Can you imagine trying to avoid vaal lasers or smash if there was a 1/4 second delay (most of the time). I would prefer the occasional dysync where I can still see him preparing to smash and can move out of the way, than being caught on the edge of his smash because by the time the computer reacted his animation was pretty much complete.


1/4 second is 250ms - this is 5 times more than typical lag

any my current ping to poe servers is around 30ms so it is ~10 times more than reality

funny stuff - you probably are desynced (positionally) more than you think. try typing /oos in a town from time to time. you can desync there too!


I live in New Zealand ping below 150 is unusual at the moment. The example of 0.25 seconds was a ball park figure. I am aware that i get very desynced and frequently /oos just to see if I am desynced.
I'm not sure where you live but regularly playing poe with 30ms ping is a dream for me, so that is why I think GGG has gone for this. because otherwise their own game would be unplayable for them
"
Freesland2 wrote:

Except with desync, you are fucked too. With 1000ms ping, the desyncs make the game as unplayable as with 1 sec delay. On the standard 40-150 ping, the game experience would be improved.


Exactly,

@DexDeus:
And you're forgetting that latency is mostly out of GGG's control since it is most likely caused by the environment of the player!
Like the poster above says: If there is a lot of latency with the current system, players will also have a problem. The only difference is that the problem is experienced in a different way.
Last edited by Startkabels#3733 on Apr 21, 2014, 7:11:59 AM
"
Startkabels wrote:
"
DexDeus wrote:

You can get it as good as you can and we have to put up with it, you HAVE chosen the best way.


Well that's discussable.

I agree with you that the current approach is better than option 1 for sure, but I'm not convinced that it was a better idea than option 2. That also depends on all the reasons involved in not choosing option 2, for example financial concerns.

I wouldn't switch to opinion 2 anymore, because of the overhaul


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...
Me too and I agree actually, but it's definitely not the latency argument that makes this system a bad choice.

Chris talks about "much more latency" but we're talking milliseconds here...

Like I said: I think GGG is taking the right approach, I was just making a side note.
Last edited by Startkabels#3733 on Apr 21, 2014, 7:17:51 AM
"
DexDeus wrote:
"
Startkabels wrote:
"
DexDeus wrote:

You can get it as good as you can and we have to put up with it, you HAVE chosen the best way.


Well that's discussable.

I agree with you that the current approach is better than option 1 for sure, but I'm not convinced that it was a better idea than option 2. That also depends on all the reasons involved in not choosing option 2, for example financial concerns.

I wouldn't switch to opinion 2 anymore, because of the overhaul


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.
First of all, ty for the update.

I personally feel like desynch (or what most ppl call desynch) is more than just calculations being wrong. Sometimes it feels like FPS, latency and synch are strangely connected. If your FPS drops, latency goes up and you eventually desynch.

Desynch alone would probably not be such a big problem if the rest of the game worked perfectly. A big issue for me seems to be the really really bad preloading - some effects are barely being loaded until the very moment they appear. Especially blue effects kill any FPS left.

So even if it will be hard to fix, it would be really nice to actually see a change on synch problems while also having improvements to the actual client (AMD graphics kinda bite with POE) so the game runs more smoothly overall.

*edit: Speaking of MOBAs and their "lag" issues: You should have a look at Heroes of Newerth. Unless the servers / your connection sucks on a given day theres absolutely no lag or annoying response time as it can be seen in Dota 2. HON is near instant and feels very responsive.
Last edited by KiwiHaze#5338 on Apr 21, 2014, 8:01:12 AM
"
Make_A_Witch_Foundation wrote:
-Some players frequently call things things "desync" that aren't related to action sync.

Athene dying to CB for example... /oos OMG I MOVED, DESYNC


Athene is a noob
http://www.myit-media.de/the_end.html
Ahoy Chris,

I'll toss my .02 in on this matter, as my background is in network engineering. (I currently work for Akamai, so I know quite a bit about this sort of thing as traffic routing / peering is my career).

I read the entirety of your first post and I'm somewhat surprised that the design team hasn't considered moving from the damage calculation models that they're using to a partial-trust model in order to reduce the reliance of constant peer-to-peer communication. As we all know, the internet is only about 99% reliable on it's best day. Packets get dropped, lost in between peers, routed wrong, or a client / server will error and a packet won't be sent. A 3-way handshake might not sync, or there can be any of a million layer 1-3 errors that happen along the way.

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.

Another feasible solution which I somewhat enjoy is the idea of a "pause", though this isn't viable in multi-player games. If you're playing single player and the game hasn't received a keep-alive from the client in (x) then the game pauses and a resync is forced before the game is unpaused if there's mobs within (y) range. This would ensure that the person is at the VERY least able to see what's about to happen. I understand that this might "break immersion" but it's quite a bit worse when desync breaks your immersion AND your hardcore character.

There's a lot of ideas that you guys could toy around with, but considering my background you should know that my answer is to increase the amount of servers and to vary their geographic locations (shit, look at who I work for, you're never more than ~1000 miles away from a server we own, basically anywhere in the world that's not an ocean). Doing peering checks during gameplay to check latency of other nearby servers (USEast 1: 150ms, USEast2:97ms, USEast3: 57ms, USEast4: 220ms -- transfer session from USEast1 > USEast3) to optimize play-ability. This will help a LOT with handling client-side latency issues. Just because Comcast / Verizon has shitty peering agreements, it won't stop you guys from giving you good results and your customers the best experience possible.

I have a lot more considerations that I would be more than happy to communicate but this is simply what comes to mind off the top of my head at 8:30am before I go into work.
One of the main problems i have with desync issues is that multiple enemies combo their attacks in a way that a desync situation turns multiple actions after another into a single burst move.

i feel that the gameplay should reflect the physical limitations of the latency in a way to better cope with this.

examples:
brutus: hook + slam
dominus/courtyard leapslammer : leapslam + instant gmp hit afterwards
perpetus: bear trap + ethereal knives
croaking chimerals: leapslam + attack

in a desync situation the resync will happen the moment you got stunned, as in getting leap slammed or bear trapped. But when your client realizes that this is going on, the following attack is already close to fully executed.

so an attack combination that would normally take 2 seconds is performed in less than half a second.

imo those desyncprone moves should work in a way that lets the client catch back up.

exemplary idea : instead of allowing the enemy to already start the next attack, let the attack incapacitate the user and the enemy together for a short time to create a timeframe to react after resyncing

p.s.: obviously this had to happen to me in this moment so that i would write this post. stupid leapslam invader
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

Report Forum Post

Report Account:

Report Type

Additional Info