Page MenuHomeFeedback Tracker

Buildings destroyed by Edit Terrain Object module don't appear properly for players in multiplayer on dedicated servers
Feedback, NormalPublic

Description

Buildings destroyed by 3DEN Editors "Edit Terrain Object" module are not working properly in multiplayer missions on dedicated servers. Target building doesn't appear destroyed for players but instead ruins are shown in addition to original building which appears undamaged.

Details

Severity
Minor
Resolution
Open
Reproducibility
N/A
Operating System
Windows 7 x64
Operating System Version
Ultimate
Category
Editor
Steps To Reproduce
  1. Create multiplayer mission and put "Edit Terrain Object" module on some building that is originally in the map.
  2. Select "destroyed" state from module attributes.
  3. Run mission on dedicated server.
  4. Undamaged target building and its ruins are both visible for players.

Problem doesn't occur in singleplayer or in multiplayer if client is same than server. Only on dedicated servers for non-local players.

Additional Information

EDIT, more info: Occurrance of problem is dependant on player count. Propability of problem occurring rises when there are bigger amount of players on server.

Event Timeline

Kiardon created this task.Oct 23 2018, 5:50 PM
Kiardon edited Additional Information. (Show Details)Oct 23 2018, 7:17 PM
Nillers added a subscriber: Nillers.Dec 4 2018, 7:49 AM
Nillers removed a subscriber: Nillers.

Would to confirm that I have too experienced this on a dedicated server I run. The player count did not make any difference to the results described here (tested 1 and 12 players).

Nillers added a subscriber: Nillers.Dec 4 2018, 7:53 AM
Wulf changed the task status from New to Reviewed.Dec 4 2018, 2:07 PM
Wulf added a subscriber: Wulf.

Hello.

Thank you for the report. We will ahve a look at it.

The same is true for the state of the doors. Open/close are more or less random on dedicate server.

PiepMGI added a subscriber: PiepMGI.EditedApr 27 2019, 10:15 PM

The solution is known. Instead of a "server only" module trying to execute some weird EG (effect global) commands, it could be far more efficient to run a script locally, at least for destruction which is not supposed to evolve during game. the module must be global.
See the workaround here for destroyed building.

@Wulf It's been almost a year and this is still broken. The "Enable Damage" checkbox is also affected. The problem as far as I can tell is that the code is executed locally to the host. The below workaround is why I believe that.

@PiepMGI A better workaround, although I haven't tested it on the damage states, is to run whatever code is necessary through the "Global Object Init". For example I leave the "Enable Damage" checkbox checked and then enter in the Global Object Init _this allowDamage false;. For the damage states one could try _this setDamage 0.5;. However having to manually script the functions kind of defeats the purpose of the module if you ask me.

@Drift_91 @Wulf I can confirm that the "Enable Damage" checkbox won´t work. This is a really huge problem for our server because destroyed buildings are FPS killers.

Still not fixed, unfortunately. :(

dedmen added a project: Restricted Project.Aug 14 2020, 1:46 PM
Gehock added a subscriber: Gehock.Apr 14 2021, 6:35 PM
3Mydlo3 added a subscriber: 3Mydlo3.Jun 8 2022, 7:39 PM

I've probably managed to find the source of this issue, it's the buildings locality of course. Building is destroyed using _building setDamage [1,false];, everything should be ok as it's AG/EG function. @veteran29 helped me with pointing out that every player has his own copy of the building with the same ID. So we thought that when executing damage function on building, the server object is damaged/destroyed and synchronized but player's building wasn't really touched (it's a different object but with the same ID, right?), that's why we have building duplication. Later we've found out that only the destruction doesn't work and remoteExec'ing the setdamage made it work on dedicated (but not in 3den).

I've extracted the code function from module "init" switch case, placed a module on a building (but without setting anything) and call the edited function in the server init box of the module (the first one). Changing _building setDamage [1,false]; to [_building, [1, false]] remoteExecCall ["setDamage", 0, true]; removed the issue on dedicated server. However, that didn't work properly in 3den, building was not destroyed (the module of course worked fine in 3den).

This is the effect on the dedicated server:
1 - Building damaged using module
2 - Building destroyed using module (duplication can be seen)
3 - Building damaged using module function changed to use [_building, ["Hitzone_1_hitpoint",1,false]] remoteExecCall ["setHitPointDamage", 0, true]; instead of _building setHitpointDamage ["Hitzone_1_hitpoint",1,false];
4 - Nothing interesting
5 - Building destroyed using module function changed to use [_building, [1, false]] remoteExecCall ["setDamage", 0, true]; instead of _building setDamage [1,false]; (no duplication)
6 - Building not destroyed using module function without changing to remoteExecCall

Attached is the mission file + functions I used for testing.

Tenshi set Ref Ticket to Internal Ref.: AIII-55204.Jun 14 2022, 1:49 PM
TRAGER added a subscriber: TRAGER.Aug 12 2022, 2:16 AM
TRAGER added a comment.EditedNov 12 2023, 7:07 AM

Undamaged model inside ruins has been fixed in game engine rev. 151158, no need to remoteExec setDamage and setHitPointDamage see https://feedback.bistudio.com/T176730

But in this module functionality there are two script issues

1-

The variable to lock doors is not public(global) broadcasting although code executed on the server, this leads that selected doors on the dedicated server will not be locked
issue location:
\a3\modules_f\environment\editterrainobject\defines.inc line 62
from building setVariable [format ["bis_disabled_door_%1", id + 1], [0,1,0] select state];\
change to ↓↓↓↓↓↓↓↓↓↓↓↓↓↓
building setVariable [format ["bis_disabled_door_%1", id + 1], [0,1,0] select state, true];\ i.e. add 'Public' boolean (, true) so variable is broadcast globally and is persistent (JIP compatible). After the doors can be successfully locked in MP

2-

issue location:
\a3\modules_f\environment\editterrainobject\init.sqf lines: 163, 260, 305
Again, this module functionality work on the server, as said @BIS_fnc_KK in Discord massage

… allow damage needs to be disabled on every client and jip …

In dedicated server the damage was not be disable and provides problem from this ticket, so we need something like this:

line 163

from _current allowDamage _allowDamage;
change to ↓↓↓↓↓↓↓↓↓↓↓↓↓↓
[_current, _allowDamage] remoteExec ["allowDamage", 0, true];

line 260

from _building allowDamage _allowDamage;
change to ↓↓↓↓↓↓↓↓↓↓↓↓↓↓
[_building, _allowDamage] remoteExec ["allowDamage", 0, true];

line 305

from _building allowDamage false;
change to ↓↓↓↓↓↓↓↓↓↓↓↓↓↓
[_building, false] remoteExec ["allowDamage", 0, true];

STEPS TO REPRODUCE

repro mission, launch it on dedicated server


1- repro

  • damage for Green House was disabled by Edit Terrain Object module checkbox
  • make your cursorObject on Green House
  • exec isDamageAllowed cursorObject
  • returns true, expected false
  • after destruction ruins not be spawned

2- repro

  • All Red House doors was locked by Edit Terrain Object module
  • try to open any doors
  • you've been be able to do this, expected doors locked

should be fixed maybe in next dev

BIS_fnc_KK removed BIS_fnc_KK as the assignee of this task.Dec 1 2023, 1:44 AM
BIS_fnc_KK changed the task status from Reviewed to Feedback.
BIS_fnc_KK added a subscriber: BIS_fnc_KK.
TRAGER added a comment.EditedDec 14 2023, 8:24 AM

dev rev. 151218
after fix (this issue appeared in the new dev branch update) I cannot return state of building from 'Destroyed' back to 'Undamaged' until editor restart

  1. place module on building
  2. set it destroyed, press ok
  3. set building as undamaged (or damaged any state). Or delete module from building, press ok
  4. result → the building is still a ruin

dev rev. 151218
after fix (this issue appeared in the new dev branch update) I cannot return state of building from 'Destroyed' back to 'Undamaged' until editor restart

No-no this issue is also reproduced on PROF v11, cannot repro on stable

here is video howto repro https://www.youtube.com/watch?v=pK9xd1TeSjM

BIS_fnc_KK added a comment.EditedDec 16 2023, 4:39 PM

This is not related to this ticket, so please next time create a ticket per issue even if it looks like the same issue, as it creates a bit of a mess on our end. Fixed in Revision: 151230

mrzorn added a subscriber: mrzorn.Sun, Mar 31, 11:37 PM