Anonymous | Login | Signup for a new account | 2025-07-27 13:27 UTC | ![]() |
My View | View Issues | Change Log | Roadmap | Zandronum Issue Support Ranking | Rules | My Account |
View Issue Details [ Jump to Notes ] | [ Issue History ] [ Print ] | ||||||||
ID | Project | Category | View Status | Date Submitted | Last Update | ||||
0000313 | Zandronum | [All Projects] Bug | public | 2011-02-28 04:08 | 2018-09-30 19:55 | ||||
Reporter | unknownna | ||||||||
Assigned To | Torr Samaho | ||||||||
Priority | normal | Severity | minor | Reproducibility | always | ||||
Status | closed | Resolution | fixed | ||||||
Platform | OS | OS Version | |||||||
Product Version | 98d | ||||||||
Target Version | Fixed in Version | 1.0 | |||||||
Summary | 0000313: NeoDoom plasma projectiles stuck in floors / ceilings / walls for newly connected clients | ||||||||
Description | The title and the attached screenshot should explain this. | ||||||||
Steps To Reproduce | 1) 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 Information | The example WAD contains the plasma ball sprites (only the PLSS sprites were needed) and the DeHackEd patch found in NeoDoom. | ||||||||
Attached Files | ![]() ![]() | ||||||||
![]() |
|
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) [^]' |
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. |
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? |
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. |
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 |
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 :). |
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? |
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. |
TIHan (reporter) 2012-03-11 02:51 |
I'll be testing this today. |
TIHan (reporter) 2012-03-12 06:44 |
So far, I haven't experienced any issues with your fix. |
Torr Samaho (administrator) 2012-03-12 23:59 |
Thanks for checking! |
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. |
Torr Samaho (administrator) 2012-03-24 16:39 |
Good point -> resolved. |
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. |
![]() |
|||
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 |
Copyright © 2000 - 2025 MantisBT Team |