EOSERV Bug Tracker > Bug #271: Client character position can desynchronize from server

Bug #271: Client character position can desynchronize from server

Client character position can desynchronize from server
ID #271
Submitter Apollo
Product EOSERV
Severity Normal
Status CLOSED, FIXED
Submitted 20th Dec 2013
Updated 19th Aug 2015
Related SVN Revisions
Rev# Date Description
r477 19 Aug 2015 01:56:27 UTC Spike damage (bug #5), HP/TP drains (bug #6), Refresh when player's walk attempt fails (bug # ...
Apollo Submitter 10 years, 21 weeks ago

This has been a problem with EO for many years and I don't see why it shouldn't be fixed here. Due to a client reaching a target tile that is occupied, a player can be placed on an improper x y coordinate until a refresh occurs. This can easily be solved by placing a Refresh() call just prior to the return false when stepping to an occupied position. It might be just a "hacky" fix, but it is most definitely a welcome fix to correct accidental death or etc caused from improper positions.

Comments

Ryouken 10 years, 20 weeks ago

There's also another way using packets to move the player's camera and character back to their actual position just like a refresh. It would send less unneeded data and the player would barely notice it, but it would require writing more lines.

Wildsurvival 10 years, 20 weeks ago

What exactly is this method, Ryouken?

Hacker_Alex 10 years, 19 weeks ago

what about a warp tile that changes your position on the current map? on main it seemed to never cause a delay like refresh does. Maybe this is what Ryouken means?

I'll test tomorrow.

Hacker_Alex 10 years, 19 weeks ago

Apollo, did you test your system on a slow pc? Are you sure it wouldn't cause unnecessary crashes or client bugs from the refresh? many people get bugs like these if they dont run their client in compatibility mode.

(if someone's walking forward and they step on an occupied tile, it could cause a refresh and the person's client might not have time to register the occupation and just walk back into that tile again. & constant refreshes are buggy for the client)

Apollo Submitter 10 years, 19 weeks ago

Well to be quite honest you can optimize the packet with any variation of the Sit/Stand family. There is even an unused packet in that group I think. I tested the Refresh method with 133 players online on my Lottery map (uses Map Mutation and massive player bumping). There was some lag during map mutations, but with that many players on the same map... duh. Anyway, for the simplest fix you can use Refresh(), but if you want to be pro use something from SitStand family to reposition yourself. I doubt either method will make or break anyone's server considering that is a very unlikely amount of players at any given time.

Sausage Developer 10 years, 15 weeks ago

I'm not sure this is such an easily fixable problem. The player tends to still be doing things and moving about while the refresh message is on the way, which will cause them to jump back a few squares, then get spammed with even more refreshes for all their other walks, and possibly end up desynchronized anyway, by moving off of their true location and receiving a refresh after that. Then of course the next time they move, the process starts again. Each of those refreshes is pretty heavy on both ends and makes everything around them blink constantly.

Since the EO protocol is the way it is, I don't think there's a proper way to fix it. Trying to freeze the character in position on both sides for a couple of seconds to synchronize them properly might work, but it sounds annoying.

Updated Title to Client character position can desynchronize from server
Updated Severity to NORMAL
Updated Status to CONFIRMED

Sausage Developer 8 years, 38 weeks ago

r477 addresses the original problem of no refresh when another character bumps you.

Updated Status to CLOSED, FIXED

Add Comment

Please don't post unless you have something relevant to the bug to say.
Do not comment to say "thanks" or "fix this please".

Please log in to add comments. EOSERV Bug Tracker > Bug #271: Client character position can desynchronize from server