Arma 3
Dynamic Horror Operations - Livonia
Showing 1-2 of 2 entries
Update: 27 Oct, 2024 @ 8:18pm

v0.25 Bugfixes and Performance Increases:

While trying to port to Yulakia and Livonia, it was made apparent that the old system would allow the spawning scripts to outrun the location selection algorithms. This is especially true if the map takes a long time to load (like Yulakia) or if there are a lot of mods loaded (thanks to Sandman in the Steam Discussion forums for bringing this to my attention). To fix this. I added in a check to ensure a location is selected and initialized before trying to spawn anything there.

Due to latency when a large number of enemies are active, I have enabled Dynamic Simulation on all enemy groups. It seems to have improved the lag with no ill effects, though some AI units don't follow DynamicSim

I also changed the destroy object trigger activation from an allObjects check (quite expensive) to a nearObjects one. This seems to have improved the performance of destroy objectives, especially when there are multiple of them in one mission.

To be able to tell if we're improving performance, I have added in a diagnostic polling system that polls every 15 seconds to give a server fps count, unit count, and displays how many units are still under dynamic sim. That will help troubleshoot the worst offenders for lag, though in the future I will reduce the polling time to 60-120 seconds.

Lastly, I also added a green glow to all destroy and retrieval objects that self-deletes when object disappears. This should help find fiddly little task objects and has been a source of many complaints.

Changelog:

Added:
- Added human-readable location names to all zone initialization and spawning diag_logs to better see where issues are arising.
- Added fn_diagnostics to generate a polling diag_log for performance troubleshooting
- Added a #lightpoint generation system within destroy and retrieve missions in fn_createTask to help highlight location of objective. Also added system to delete lights after task is complete. See fnc_spawnLight and fnc_destroyLight for more information

Bugfixes & Performace:
- Added a waitUntil in init.sqf to slow location initialization and spawning due to much larger maps allowing spawning to overrun the location selection algorithm.
- Added a while loop to initLocation that checks if the location logicObject is initialized and all spawns are ready before attempting to start spawning.
- Updated findLocation to set the correct location into the right index. Previously, if location1 initialized faster than location0, they would be out of sequence within the SelectedLocations indexes, causing all sorts of strange errors
- Added dynamic simulation for all enemy groups. Some mods are nicer with dynamicSim than others, though...
- Corrected for loop within fn_allEnemiesChase to not throw a million errors
- Changed destroy task trigger activation from { ({_x inArea thisTrigger} count allMissionObjects '#explosion' > 0) } to { (count (getPos thisTrigger nearObjects ['#explosion', 10]) > 0 } to improve performance and reduce allObjects checks

Update: 26 Oct, 2024 @ 6:17pm