Issue information

Issue ID
#6183
Status
New
Severity
None
Started
Hercules Elf Bot
Jul 6, 2012 15:05
Last Post
Hercules Elf Bot
Nov 29, 2012 8:59
Confirmation
Yes (5)
No (0)

Hercules Elf Bot - Jul 6, 2012 15:05

Originally posted by [b]Angezerus[/b]
Hi there!

This is a very very old issue. This works for both monsters and players. So what the issue is:

If a monster (or player) is hit by something or someone, there is a small time defined somewhere, in which you can't move, let's call it movement delay, and on the hit, the character plays a "twitch" animation. The problem is that the animation usually lasts longer than the movement delay (as I experienced especially at slow moving monsters or players), and when the monster(or player) is able to move again and moves away, it does not cancel the animation, and because of this the character position and the sprite's position desynchronizes. This also happens when someone/something is knocked back with something that deals damage. The sprite moves twice all the way back and forward, and the positions gets totally messed up. Sometimes it doesen't even show the character moving back from the knockback.

I've seen some official videos, and there is something similar, but on officials when the character moves, it synchronizes relatively fast, and I've never seen something like a monster stading several cells away yet still hitting the player, and there is absolutely no "double movement" on knock back.

I made a short video to show the desync and the knockback issue:

[url="http://www.youtube.com/watch?v=cwKkjNOS7LI"]http://www.youtube.com/watch?v=cwKkjNOS7LI[/url]

This post has been edited by Angezerus on Jul 6, 2012 15:10

Hercules Elf Bot - Jul 6, 2012 22:34

Originally posted by [b]Ainna[/b]
Yup, even with nagle this problem still persist.
Homunculi also have problems with this ;D
A fix for this would definitely be nice.

This post has been edited by Ainna on Jul 6, 2012 22:35

Hercules Elf Bot - Jul 12, 2012 9:55

Originally posted by [b]Angezerus[/b]
We tried that nagle thing as well, but it did not help this problem, just like you said.

Hercules Elf Bot - Jul 12, 2012 11:54

Originally posted by [b]malufett[/b]
IMO its a client-server connectivity issue..something related with [b]PACKET_ZC_NOTIFY_TIME [/b]and I think aegis have a different interval in notifying the client..anyway it is my wild guess since I'm not that good with packet thingy

Hercules Elf Bot - Jul 12, 2012 12:00

Originally posted by [b]Angezerus[/b]
Imo if it's a connectivity issue, then it's not about time, because if you got hit and you move in the same time, your char will desync, and this stays the same forever unless you move.

It's more like there is a missed "send posinfo" part somewhere.

/edit
Or maybe a missed "resume sending posinfo".

Perhaps around the "hit event during movement" part?

Another thing could be that on the server's part the caracter's movement is not interrupted by the hit, so it continues to walk, until you send another movement command (or reach the previous destination)...?

Only speculating :)

This post has been edited by Angezerus on Jul 12, 2012 12:06

Hercules Elf Bot - Jul 12, 2012 12:09

Originally posted by [b]malufett[/b]
[quote]Imo if it's a connectivity issue, then it's not about time, because if you got hit and you move in the same time, your char will desync, and this stays the same forever unless you move.[/quote]
yes it could be because time is also use as pattern for the synchronization....

Hercules Elf Bot - Jul 12, 2012 14:13

Originally posted by [b]Angezerus[/b]
Found this:

[url="http://www.eathena.ws/board/index.php?autocom=bugtracker&showbug=1851"]http://www.eathena.ws/board/index.php?autocom=bugtracker&showbug=1851[/url]


[quote][CODE]
// Move-delay adjustment after being hit. (Note 2)
// The 'can't walk' delay after being hit is calculated as a percentage of the damage animation duration.
// NOTE: Only affects the normal delay from a single attack, not the delay added by the multihit_delay option below.
pc_damage_walk_delay_rate: 20
damage_walk_delay_rate: 0
[/CODE][/quote]

And they suggested in the thread to set the delays to 0.

That's a bit strange for me. The description says:

[quote]The [b]'can't walk' delay[/b] after being hit is calculated as a [b]percentage of the damage animation duration.[/b][/quote]

But if we set this to anything lower than 100% won't it cause the characters to be able to move instantly after being hit, and thus desyncing the server and the client? (because the client would still play the animation, while the server moves forward and stops at the target, and thus it won't be sending any more sync packets)


/edit
Similar issue that has a solution. Interesting stuff...
[url="http://www.eathena.ws/board/index.php?autocom=bugtracker&showbug=3102"]http://www.eathena.ws/board/index.php?autocom=bugtracker&showbug=3102[/url]

It says:
[quote][CODE]
if (!unit_can_move(bl)) <---- This causes Position lag, because the mobs start walking when they are currently under skill damage too.
return 0;
[/CODE][/quote]

And currently this is how our code look now. But wait a minute. Why wouldn't we re-delay a character? If something is suffering a delay from being hit, it would be normal to re-apply another delay if it got hit again, wouldn't it? Otherwise the character would bypass every delay, suffered from hits during the first delay, while the character still plays every hit animation.

So, are we sure these code parts and delay rates are the right ones?

This post has been edited by Angezerus on Jul 12, 2012 14:43

Hercules Elf Bot - Nov 29, 2012 8:59

Originally posted by [b]Angezerus[/b]
Any thoughts about the previous post? It's been a while :)