Client-server Action Synchronisation

"
sidtherat wrote:
So nothing will change.

And while d3 obviously does not have few perks neither does poe. D3 by design and poe by avoidance. In poe any movement based build is so desync prone that it is a noob trap. Same with stun. Any stun/chill/freeze build = desync. Ive never desynced as much as with glacial hammer plus ele prolif. It is simply revolting experience. So - keeping to your explanation- desync resons are the very mechanics players avoid like a plague: movement, stun, body blocking..


This basically says it all. Those "hardcore" reasons like missing mechanics that cause desync are avoided by players BECAUSE they desync and thus are unreliable!
So please go more into a d3-esque way, remove all the desync reasons possibly. Else this is killing more and more of the game. Even without this, you still can make a hardcore game!

Most people say D3 fluid battle gameplay + PoE depth of characters, skills, items, difficulty, etc. would be the perfect game.
So, why not go more into a d3-esque battle feel, solving desync and still remaining hardcore with characters, skills, items, difficulty and many more nice things that truly make this game hardcore.

This is the perfect way, probably the only way for this game to succeed even more.
"
symban wrote:
"
Startkabels wrote:
Are players avoiding certain skills? I'm not - playing a crit flicker strike build.

I know right? I use a multistrike-cyclone and never ever desynched once, ever. /ignorance
He never said he doesn't desyn, nor did he imply it.
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
"
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
  • Various speed/collision concessions that make it easy to speedhack and/or walk through monsters with modified clients
  • Attack animations cannot be interrupted (i.e. what we treat as Stun).


  • Could some of those concessions be compromised on? Do other online ARPGs (i.e., D3) really have a problem with speedhack?

    I desync the most around collisions/walking through or around lots of monsters. Going through a doorway into a mob, then running back out, is particularly desync-prone. I've had to modify my play style to compensate for this (open the door, then wait for them to come out at me). Whether you agree with my original tactic, the fact that I have to play around the issue is a problem.

    I'm just wondering whether some of these parameters could be relaxed with reasonable safety. I'm willing to give up a little bit of client security (i.e., introduce the need to detect certain hacks) for a lot of smoothness in gameplay.
  • In the morning
    Laughing happy fish heads
    In the evening
    Floating in the soup
    Bottlenecking monsters through a door is also a very save way to play without desync...
    Last edited by Startkabels on Apr 24, 2014, 2:38:06 PM
    "
    Startkabels wrote:
    Bottlenecking monsters through a door is also a very save way to play without desync...


    I know, but I should be able to charge through and taunt them, then charge back out, without worrying about getting stuck on the server side.
    In the morning
    Laughing happy fish heads
    In the evening
    Floating in the soup
    So basically, what you're suggesting is instead of server side calculations in general you want movement calculations client side specifically if I'm understanding correctly?

    Anyway I don't know if that's possible...
    Last edited by Startkabels on Apr 24, 2014, 3:07:00 PM
    "
    Startkabels wrote:
    So basically, what you're suggesting is instead of server side calculations in general you want movement calculations client side specifically if I'm understanding correctly?

    Anyway I don't know if that's possible...


    Not entirely client side. I'm just going on Chris's vague statement about "various concessions" related to character placement. Maybe it's not possible to trust the client at all without opening the door to bots. I don't know, it just seems like something that could be optimized base on much smoother experiences with D3.
    In the morning
    Laughing happy fish heads
    In the evening
    Floating in the soup
    The statement about that method was quite clear.

    I think the game was not designed for that and it might take a lot of work and testing.
    Last edited by Startkabels on Apr 24, 2014, 6:50:35 PM
    "
    Mylon wrote:
    Why is it so hard to make the simulation more deterministic? If nothing happens by chance (and I say this loosely, synced seeds can still allow RNG), then the client sill see roughly the same thing as the server.


    I'm not completely done reading through this thread, but the above always seemed like a good solution to me. It may also have been mentioned by others (I've been looking to see if others posted this idea), but if they have it was not as clearly phrased as the above.

    I think the client can be trusted to do the all calculations as long as the server can verify them after the fact. I.e. the server accepts everything the client does as long the client's submitted action and result lists match the server's verification based on a synced seed provided continuously by the server. In case of a mismatch the server can do whatever is deemed necessary to maintain a legitimate game state (roll-backs, session termination, account flagging, etc.).

    It would be possible to create an (undetectable) exploit where by knowing/anticipating the random number (from the synced seeds) a bot/fake client could play the RNG perfectly (e.g. opening a chest before popping a barrel might yield an exalted orb from the barrel instead of creating a useless explosion). The complexity and fragility of such a program would probably make it infeasible to create, though (too little reward compared to the effort). Also, improved prediction would come at an increased computational cost - and not an insignificant one at that.
    Let each player choose which version of PoE to play:
    https://www.pathofexile.com/forum/view-post/24770192
    I finished reading through the last pages and the solution with synced seeds and client-side calculations still seem like a valid solution that would provide an instantaneous feel regardless of ping. I've realized that it has one serious limitation, though: It only works for solo sessions.

    In a multi-player session the server should do all the monster calculations (effectively playing the role of dungeon master) while relaying all player actions/calculations between the players (unless they're allowed to connect directly to each other, which would require the clients to also verify each others results, but also provide lower client-to-client latency). The positioning of monsters and other players can either be predicted (as now) and thus be prone to desync or lag behind (which may be preferable if the latency is fairly stable and probably preferable if the latency is low).

    My suggestion probably only works in single-player instances, but I would consider it a big improvement if desync was a phenomenon that only occurred in multi-player instances. It might even be lessened a bit in a model where the clients are partially trusted based on synced seeds with calculations verified by the server.

    Maybe it would even be possible for all clients and server to share/sync a separate monster entity seed. That ought to provide for a nearly perfect (or at least good) prediction of monster actions. Using separate seeds would seem to make it slightly easier to program a bot that tries to play the RNG optimally, though.

    On the note of synced seeds, the server could regularly provide seeds to be used for only x actions with x being large enough to accommodate for a few seconds of game-play - enough that even a huge lag spike would not make the client run out of random numbers (if it does, it should disconnect just as a huge lag spike normally would). The changing seeds and the continuous use random numbers by other entities should ensure that any program trying to time an optimal course of actions would have a hard time doing so.

    Certain calculations, which are not time-sensitive, e.g. orb'ing of items, loot calculations, opening of chests etc., should always be requested from the server to prevent people from cheating when linking sockets etc. A slight delay in a synchronous model should not be a problem for game-play (players with high ping will have to wait for their loot just as they do now). I first thought that the client could be trusted with these also, but given that they're not time-sensitive it's safer to just leave them on the server.

    PS: I hope GGG really do read these posts. It's clear from reading through the manifesto threads that a lot of people are putting considerable time into their comments. Lots of golden feedback for the dev team. :-)
    Let each player choose which version of PoE to play:
    https://www.pathofexile.com/forum/view-post/24770192
    Last edited by StarTraveller_DK on Apr 25, 2014, 3:38:05 PM

    Report Forum Post

    Report Account:

    Report Type

    Additional Info