MantisBT - Zandronum
View Issue Details
0003304Zandronum[All Projects] Bugpublic2017-10-14 22:222019-06-05 17:46
HiM 
Dusk 
normalmajoralways
newopen 
MicrosoftWindowsXP/Vista/7
3.0 
 
0003304: Spectator functionality broken in multiplayer ZAN 3.0
Hi,
Latest stable built of Zandronum 3.0 has broken Spectator functionality in multiplayer coop mode with classes. All cases below worked fine in Zandronum 2.1.2 stable release. I will list the effects:

1) New player joined without selecting player Class (Spectator) does not have proper Marine voodoo doll spawn on new maps, breaks all levels that have voodoo doll where this player is 1st in player queue. Assuming voodoo doll have player properties, somehow it does not work on voodoo doll trolley (float, noclip, notrigger?).

2) In game spectating inherit properties from previous player class. This includes physics flags from previous player class (noclip, float etc.). Zandronum ACS KickFromGame/ForceToSpectate command does not purge all players inventory and does not reset to default spectator properties. Voodoo dolls are broken on new maps (same as 1st).

Suggestions:
- Have True Spectator functionality added back as in Zandronum 2.1.2 that has Marine voodoo doll spawn on trolley by default. Could be a separate server SV_* flag to differentiate from dead spectators (used mainly in LMS), and applied to all spectators on server that runs that flag.
- In game spectate by client / ACS KickFromGame/ForceToSpectate should be updated to return player to default spectator settings with purging everything to defaults and not inherit previous player class properties.
- Potentially, new separate Zandronum ACS function could be added for ForceToSpecateX with purging everything (not to be revived) as in Zandronum 2.1.2.
Play cooperative multiplayer game with Classes (spectator, Class1, Class2 etc) and a map that has voodoo doll trolley.

Without joining a Class (spectator), change map with CHANGEMAP to map with voodoo doll trolley. Voodoo doll should be broken since voodoo dolls are spawn on level start.

Same applies when spectating from Marine class to spectator, change map with CHANGEMAP to map with voodoo doll trolley. Voodoo doll should be broken since voodoo dolls are spawn on level start.
No tags attached.
zip VoodooTest_chillax_MAP29.zip (1,083,063) 2017-10-15 12:23
https://zandronum.com/tracker/file_download.php?file_id=2219&type=bug
Issue History
2017-10-14 22:22HiMNew Issue
2017-10-15 10:38DuskNote Added: 0018573
2017-10-15 10:38DuskAssigned To => Dusk
2017-10-15 10:38DuskStatusnew => feedback
2017-10-15 12:23HiMFile Added: VoodooTest_chillax_MAP29.zip
2017-10-15 12:28HiMNote Added: 0018574
2017-10-15 12:28HiMStatusfeedback => assigned
2017-10-15 12:40HiMNote Added: 0018575
2017-11-19 00:02HiMNote Added: 0018890
2019-06-04 21:54DuskStatusassigned => new
2019-06-05 17:46HiMNote Added: 0020728

Notes
(0018573)
Dusk   
2017-10-15 10:38   
Please provide a minimal example WAD.
(0018574)
HiM   
2017-10-15 12:28   
To replicate issue, create server using Doomseeker with following 4 wads (can\t upload all here as more than 2MB):
- skulltag_actors_1-1-1.pk3 (using wadseeker)
- skulltag_data_126.pk3 (using wadseeker)
- VoodooTest_chillax_MAP29.wad (test file attached, MAP29)
- MOP4Chillax_D2.2_update_by_HiM_5.6.pk3 (download from:http://www.theultimatedoom.com/download/MOP4Chillax_D2.2_update_by_HiM_5.6.zip, [^] or wadseeker)

Server is run with voodoo dolls flags:
+sv_coopspawnvoodoodolls TRUE
+sv_coopunassignedvoodoodolls TRUE
(0018575)
HiM   
2017-10-15 12:40   
In created server with 4 wads, do the following:

- In server, maps/changemap to MAP29 (no client joined yet)
- Join server as client, hit space to change from spectator to player class, select Class "Marine". Go to room with green armor, hit 2 switches to left and right
- Door by green armor should open with cyber and key. Voodoo doll works fine in this case (OK).

- console: spectate (from marine to spectator)
- callvote changemap map29 (or server map/changemap with intermission to map29)
- after intermission when level is loaded, hit space to change from spectator to player class, select Class "Marine". Go to room with green armor, hit 2 switches to left and right
- Door by green armor should stay closed. Voodoo doll broken in this case as level was loaded with 1st player being spectator (bug).

- console: spectate (from marine to spectator)
- callvote changemap map29 (or server map/changemap with intermission to map29)
- DURING intermission before level is loaded, hit space to change from spectator to player class, select Class "Marine". Go to room with green armor, hit 2 switches to left and right
- Door by green armor should open with cyber and key. Voodoo doll works fine in this case (OK).
- It appears proper voodoo doll is spawn before level load if spectator managed to join queue during intermisison but before level load. If stays as spectator, next map voodoo is broken.

- This spectator voodoo issue appears in Zandronum 3.0 stable, but not in Zandronum 2.1.2 stable. Retest server with 2.1.2 when starting map as spectator always opens the door, proper voodoo doll is spawn for spectator.
(0018890)
HiM   
2017-11-19 00:02   
Hi,
For voodoo dolls to work on trolley, doll needs to be spawn with +TRIGGER, -NOCLIP, no float, affected by physics etc. Has to have RADIUS (not 0) for trolley to pull over lowered doors.

In similar issue with PlayerClass (not a spectator) this was solved by:
- Initial playerpawn with RADIUS say 16
- Trigger, gravity etc. same as standard marine voodoo
- SPAWN state in actor just loops
- SEE state changes all flags to NOTRIGGER, float, noclip etc. Voodoo initially spawn is based on SPAWN state only!

Is there a way to customize SPECTATOR actor settings, actor states etc?
Like, increase RADIUS, TRIGGER, before SPAWN state for voodoo?
Player would start flying as soon as move keys are pressed. Please, advice.

This tracker is related to issue, but that look on in-game spectator changes, not on level OPEN with voodoo dolls functionality:
https://zandronum.com/tracker/view.php?id=2594 [^]
(0020728)
HiM   
2019-06-05 17:46   
Hi,
Fixing this Zandronum 3.0/3.1 issue as per Zandronum 2.1.2 build logic, would solve only Spectator bug. Any real players that have customized SPAWN state different from built-in doomplayer decorate, can still break voodoo dolls on trolley (radius < 16, float, notrigger etc).

Based with discussions with other Zandronum modders, I would recommend to actually fix broken flag "+sv_coopunassignedvoodoodolls TRUE" in both 2.1.2, 3.0/3.1 zandronums. Voodoo dolls are level design feature, not a gameplay. And with this flag TRUE, should not depend what kind of players/classes are on level open. This flag should override and spawn built-in doomplayer/marine with default settings irrespective real player is Spectaror, Marine, custom playerclass, dead spectator or whatever. Maybe queue mechanism needs update as voodoo doll is spawn for first live player in queue (console: playerinfo, playerid0=first), maybe for voodoo built-in -1 would solve this. Spawn irrespective server level is open with or without live players.