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

View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0000313Zandronum[All Projects] Bugpublic2011-02-28 04:082018-09-30 19:55
Reporterunknownna 
Assigned ToTorr Samaho 
PrioritynormalSeverityminorReproducibilityalways
StatusclosedResolutionfixed 
PlatformOSOS Version
Product Version98d 
Target VersionFixed in Version1.0 
Summary0000313: NeoDoom plasma projectiles stuck in floors / ceilings / walls for newly connected clients
DescriptionThe title and the attached screenshot should explain this.
Steps To Reproduce1) Start a normal server with the example WAD.
2) Connect a client to the server and join the game.
3) Start to fire.
4) Connect another client to the server while holding fire with the first client.
5) Once connected, stop firing.
Additional InformationThe example WAD contains the plasma ball sprites (only the PLSS sprites were needed) and the DeHackEd patch found in NeoDoom.
Attached Files? file icon neodoom_plasma_stuck_test.wad [^] (48,675 bytes) 2011-02-28 04:08
png file icon Screenshot_Doom_20110228_041910.png [^] (41,664 bytes) 2011-02-28 04:09

- Relationships

-  Notes
User avatar (0002723)
TIHan (reporter)
2012-03-01 06:04
edited on: 2012-03-03 00:42

Fixed in this changeset:'https://bitbucket.org/TIHan/tst/changesets/tip/branch(%22bug_313%22) [^]'

User avatar (0002743)
Torr Samaho (administrator)
2012-03-03 17:45

Although this (possibly, didn't test) fixes the most apparent issue, I'd say the behavior still has to be wrong since the connecting client will always play the full explosion animation, no matter how much of the animation already passed on the server. I think to properly fix this one has to adapt the code below your change that calls SERVERCOMMANDS_SetThingFrame. When I wrote this I tried to be as conservative as possible, i.e. not to call this on more actors than necessary, but apparently missiles needs this treatment too.
User avatar (0002745)
TIHan (reporter)
2012-03-03 18:00
edited on: 2012-03-03 18:35

The problem is that the client gets a thing that isn't a missile anymore and doesn't know that it actually exploded on the server.

I tried doing this when it knew the thing actually exploded on the server: SERVERCOMMANDS_SetThingFrame( pActor, pActor->state, ulClient, SVCF_ONLYTHISCLIENT, false ); - but I still get the original bug.

In that case, when the server sends that thing across to the client, it's not in its death/extreme/crash state; even though it actually exploded. That's why SetThingFrame doesn't fix it. Might be a timing issue in SetState?

User avatar (0002756)
Torr Samaho (administrator)
2012-03-06 00:42
edited on: 2012-03-06 00:42

> I tried doing this when it knew the thing actually exploded on the server: SERVERCOMMANDS_SetThingFrame( pActor, pActor->state, ulClient, SVCF_ONLYTHISCLIENT, false ); - but I still get the original bug.

Does this command have any effect at all there for the exploded actor? For some complicated classes with custom states and/or complicated inheritance, SERVERCOMMANDS_SetThingFrame doesn't work (yet).

BTW: Instead of adding NETFL_EXPLODED you could try to check whether the actor had MF_MISSILE among its default flags but lost it now.

User avatar (0002759)
TIHan (reporter)
2012-03-06 06:57

> Does this command have any effect at all there for the exploded actor?

Has no effect, unless I manually put in a state, such as NAME_Death; which is almost the same as P_MissileExplode.

If it helps, the plasma bullet has a dehacked mod to it:

Thing 35 (Plasma Bullet)
Death frame = 111
Death sound = 50
Speed = 1835008
Width = 524288
Height = 786432
Missile damage = 6

> BTW: Instead of adding NETFL_EXPLODED you could try to check whether the actor had MF_MISSILE among its default flags but lost it now.

This the proper way? " if ( pActor->GetDefault()->flags & MF_MISSILE ) " Since there was a check at beginning for the current actor's flag as a MF_MISSILE, I didn't have to recheck it here. Hm, really good to know all this! :D
User avatar (0002768)
Torr Samaho (administrator)
2012-03-09 01:54

> Has no effect, unless I manually put in a state, such as NAME_Death; which is almost the same as P_MissileExplode.

Does SERVERCOMMANDS_SetThingFrame show a warning if you set sv_showwarnings to true? If so, we definitely should try to fix SERVERCOMMANDS_SetThingFrame.

> This the proper way? " if ( pActor->GetDefault()->flags & MF_MISSILE ) "

Yes :).
User avatar (0002769)
TIHan (reporter)
2012-03-09 08:58

> Does SERVERCOMMANDS_SetThingFrame show a warning if you set sv_showwarnings to true?

Yes. A fair bit of these.

"Warning: SERVERCOMMANDS_SetThingFrame failed to set the frame for actor PlasmaBall."

I don't know enough about SetThingFrame. What is currently wrong with it?
User avatar (0002771)
Torr Samaho (administrator)
2012-03-11 00:45
edited on: 2012-03-11 00:46

> I don't know enough about SetThingFrame.

The challenge in this function is to find a way to identify a state such that we can tell it to the clients. The current state of an actor is just a pointer whose address of course is useless for the clients. The idea behind the current implementation is to find a state label and an offset that identify the current state. Unfortunately this is not trivial (at least I don't know of any trivial solution).

> What is currently wrong with it?

It doesn't manage to find a state label and an offset for some states (depends on the actor definition).

I just revised how SERVERCOMMANDS_SetThingFrame works though and this seems to fix the Neodoom issues (https://bitbucket.org/Torr_Samaho/skulltag/changeset/235c909a5f2f). This needs very thorough testing.

User avatar (0002779)
TIHan (reporter)
2012-03-11 02:51

I'll be testing this today.
User avatar (0002803)
TIHan (reporter)
2012-03-12 06:44

So far, I haven't experienced any issues with your fix.
User avatar (0002811)
Torr Samaho (administrator)
2012-03-12 23:59

Thanks for checking!
User avatar (0002870)
TIHan (reporter)
2012-03-24 16:37

This should be resolved as the issue doesn't occur anymore and there haven't been any bugs caused by the fix.
User avatar (0002871)
Torr Samaho (administrator)
2012-03-24 16:39

Good point -> resolved.

Issue Community Support
This issue is already marked as resolved.
If you feel that is not the case, please reopen it and explain why.
Supporters: No one explicitly supports this issue yet.
Opponents: No one explicitly opposes this issue yet.

- Issue History
Date Modified Username Field Change
2011-02-28 04:08 unknownna New Issue
2011-02-28 04:08 unknownna File Added: neodoom_plasma_stuck_test.wad
2011-02-28 04:09 unknownna File Added: Screenshot_Doom_20110228_041910.png
2012-03-01 06:04 TIHan Note Added: 0002723
2012-03-03 00:42 TIHan Note Edited: 0002723 View Revisions
2012-03-03 17:45 Torr Samaho Note Added: 0002743
2012-03-03 17:47 Torr Samaho Status new => feedback
2012-03-03 18:00 TIHan Note Added: 0002745
2012-03-03 18:00 TIHan Note Edited: 0002745 View Revisions
2012-03-03 18:28 TIHan Note Edited: 0002745 View Revisions
2012-03-03 18:35 TIHan Note Edited: 0002745 View Revisions
2012-03-06 00:42 Torr Samaho Note Added: 0002756
2012-03-06 00:42 Torr Samaho Note Edited: 0002756 View Revisions
2012-03-06 06:57 TIHan Note Added: 0002759
2012-03-09 01:54 Torr Samaho Note Added: 0002768
2012-03-09 08:58 TIHan Note Added: 0002769
2012-03-11 00:45 Torr Samaho Note Added: 0002771
2012-03-11 00:46 Torr Samaho Note Edited: 0002771 View Revisions
2012-03-11 02:51 TIHan Note Added: 0002779
2012-03-12 06:44 TIHan Note Added: 0002803
2012-03-12 23:59 Torr Samaho Note Added: 0002811
2012-03-24 16:37 TIHan Note Added: 0002870
2012-03-24 16:39 Torr Samaho Note Added: 0002871
2012-03-24 16:39 Torr Samaho Status feedback => resolved
2012-03-24 16:39 Torr Samaho Fixed in Version => 1.0
2012-03-24 16:39 Torr Samaho Resolution open => fixed
2012-03-24 16:39 Torr Samaho Assigned To => Torr Samaho
2012-06-09 13:22 Torr Samaho Category General => Bug
2018-09-30 19:55 Blzut3 Status resolved => closed






Questions or other issues? Contact Us.

Links


Copyright © 2000 - 2025 MantisBT Team
Powered by Mantis Bugtracker