Zandronum Chat on our Discord Server Get the latest version: 3.0
Source Code

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0001162Zandronum[All Projects] Bugpublic2012-11-03 16:022019-06-04 21:54
Assigned ToDusk 
PlatformOSOS Version
Product Version1.0 
Target Version2.2Fixed in Version 
Summary0001162: A_Jump causes nasty desyncs to occur in Futur War online
DescriptionDue to the way the clients handle A_Jump, actor flags/properties can desync between the client and server. Many of the monsters in Futur War use A_Jump to go to their death states. The death states call A_NoBlocking, but it isn't called on the client-end. If you then move through the corpses, it'll lag a lot. It feels terrible. And it's even worse if cl_ticsperupdate is set to 3.

Now, you can apparently work around this by adding a 1 tic frame before the one that calls A_NoBlocking, but I don't know if anyone is going to go through every affected monster in Futur War and do that anytime soon.
Steps To Reproduce1. zandronum -file thing_jumpdesync_01.wad -host
2. Connect a client to the server and join the game.
3. Aim at the zombiemen and press +attack.
4. Move to the zombiemen corpses.
Additional Information
Actor ZombieMan_02 Replaces ZombieMan
    Health 5
    Radius 256
    Height 256
        POSS A 10
        Goto See
        TNT1 A 0
        POSS A 10 A_NoBlocking
        POSS L -1
        TNT1 A 0
        TNT1 A 1 A_Jump (256, "Death")
Attached Files? file icon thing_jumpdesync_01.wad [^] (968 bytes) 2012-11-03 16:02

- Relationships
related to 0001200closedTorr Samaho "randomguy" causes clients to freeze in online games 
related to 0002381confirmed Thing desync after map changes in hubs: Clients think that dead actors are SOLID and/or they don't know of DeathHeight 

-  Notes
User avatar (0006890)
Arco (updater)
2013-08-02 00:08

Persists in v1.1.1. This issue affects monsters as well.
User avatar (0006894)
Dusk (developer)
2013-08-02 10:41

Quote from "Blzut3"
Edit: While on the topic of knowns in A_Jump. A_Jump(256, "SomeState") is sometimes used instead of 'goto SomeState' since it is resolved at runtime instead of "compile time." This would be another fairly simple condition to check if(maxchance >= 256 && count == 1) and the client would accurately predict this case.
User avatar (0012983)
unknownna (updater)
2015-07-21 12:10 [^]
User avatar (0012984)
unknownna (updater)
2015-07-21 12:13

I think I noticed this issue in Complex Doom a few times as well. Well worth having fixed as quickly as possible.
User avatar (0013239)
Torr Samaho (administrator)
2015-08-19 19:23

I added your patch.
User avatar (0013240)
cobalt (updater)
2015-08-19 19:29

Issue addressed by commit cef36570caa4: Clients now predict the A_Jump(256, "target") special case (addresses 1162)
Committed by Teemu Piippo [Dusk] on Monday 15 June 2015 03:47:25

Changes in files:

 docs/zandronum-history.txt | 1 +
 src/thingdef/thingdef_codeptr.cpp | 13 +++++++------
 2 files changed, 8 insertions(+), 6 deletions(-)

User avatar (0013518)
Ru5tK1ng (updater)
2015-09-15 03:56

I tried out the testwad with 3.0 and while I didn't experience any lag like I did with 2.1.2, I did notice some weird desyncs with the custom zombiemen. Namely playing though Doom2 map02 I saw corpses falling into the ground, floating in air for a time, changing to different dead/gib sprites.
User avatar (0014950)
WaTaKiD (updater)
2016-05-17 21:45
edited on: 2016-05-17 21:46

the above commit has been backed out ( [^] ) due to causing a regression mentioned in [^]

User avatar (0016850)
StrikerMan780 (reporter)
2017-02-12 20:16

21:29 <Striker> I know that state jumping and such is really spotty and has been discussed to death... but, I wonder, would piggybacking off of the gametic system (seeding random jumps off of the current gametic, which is synced between client and server) to make sure jump outcomes are the same on client and server work?
21:32 <Striker> Or seeding based on the current gametic + how many times A_Jump has been called in the current tic so far, so multiple calls in the same frame don't produce the same outcome for every actor.
21:33 <Striker> I just want to see A_Jump not be absolute shit online.
21:51 <Hypnotoad> sounds like a good idea
User avatar (0016851)
Torr Samaho (administrator)
2017-02-12 20:40

I have thought about the jumping for a while and think a much better way to handle this would be to have the client simply force the client to keep the actor in the jump state till it gets a message from the server with the outcome of the jump.

Issue Community Support
Only registered users can voice their support. Click here to register, or here to log in.
Supporters: haxmurderer unknownna Combinebobnt Daedalus
Opponents: No one explicitly opposes this issue yet.

- Issue History
Date Modified Username Field Change
2012-11-03 16:02 unknownna New Issue
2012-11-03 16:02 unknownna File Added: thing_jumpdesync_01.wad
2012-11-03 16:02 unknownna Status new => confirmed
2013-08-02 00:08 Arco Note Added: 0006890
2013-08-02 10:41 Dusk Note Added: 0006894
2013-08-02 10:41 Dusk Relationship added related to 0001200
2015-06-14 20:44 Dusk Assigned To => Dusk
2015-06-14 20:44 Dusk Status confirmed => assigned
2015-07-21 12:10 unknownna Note Added: 0012983
2015-07-21 12:10 unknownna Status assigned => needs review
2015-07-21 12:13 unknownna Note Added: 0012984
2015-07-21 12:13 unknownna Target Version => 2.2
2015-08-09 10:24 unknownna Relationship added related to 0002381
2015-08-19 19:23 Torr Samaho Note Added: 0013239
2015-08-19 19:23 Torr Samaho Status needs review => needs testing
2015-08-19 19:29 cobalt Note Added: 0013240
2015-09-15 03:56 Ru5tK1ng Note Added: 0013518
2016-05-17 21:45 WaTaKiD Note Added: 0014950
2016-05-17 21:45 WaTaKiD Status needs testing => assigned
2016-05-17 21:46 WaTaKiD Note Edited: 0014950 View Revisions
2017-02-12 20:16 StrikerMan780 Note Added: 0016850
2017-02-12 20:40 Torr Samaho Note Added: 0016851
2019-06-04 21:54 Dusk Status assigned => new

Questions or other issues? Contact Us.


Copyright © 2000 - 2021 MantisBT Team
Powered by Mantis Bugtracker