M1 |
M2 |
055 |
001
Summary: | Shooting players right when they die causes them to respawn with lower health | ||
---|---|---|---|
Product: | Odamex | Reporter: | Ivan T <topolcic.ivan> |
Component: | Server & Client | Assignee: | Odamex Bug Reporter <odamex-bug-reporter> |
Status: | NEW --- | ||
Severity: | major | CC: | grandpachuck187, raijinsc, stlaurent.nicholas |
Priority: | P1 | ||
Version: | (old) 0.6.x | ||
Hardware: | All | ||
OS: | All |
Description
Ivan T
2013-09-30 02:54:40 UTC
I have analyzed several netdemos of this nature, mostly from players who tend to have connection quality issues. Based on the analysis of the netdemos, it appears that the following sequence of events happens: *The server sends the client a message that their player received damage, say in packet 100. *In packet 101, the server sends the client a message that their player has died. *The player was anticipating they were going to die and were holding down the +use button to quickly respawn and in packet 102 the server sends the client a message to respawn the player. *The server notices that packet 100 was lost and thus resends the data in the packet. *The client then receives the first message that the player was damaged after it was resent and after the player had already respawned. Addressing this bugs and similar ones is something that will require more robust network serialization architecture, which is being addressed in the net3-base branch. Some additional information on how Odamex is going to change the architecture can be found in this paper: http://www.pingz.com/wordpress/wp-content/uploads/2009/11/tribes_networking_model.pdf The section on Ghosting (also called Replication) describes how the server sends the actor variables that have changed since the last acknowledged packet, eliminating the need to resend missing messages and avoiding the issues mentioned in this bug. *** Bug 1100 has been marked as a duplicate of this bug. *** Fixed in this PR for 0.9: https://github.com/odamex/odamex/pull/148 |