Arma 3
Dynamic Horror Operations - Livonia
Показані результати 1–3 із 3
Оновлено: 25 жовт. о 10:13
автор: UselessFodder

It's time for the 2025 Spooki Season update, just in time for Halloween! This update adds a new mission type, anomaly zones in random areas (in addition to normal cities and towns), a bunch of quality of life additions for people playing solo, and some vital bugfixes for base game changes that have broken parts of the mission. Some more detail:

**New Mission: Boss Monster**
Added a new mission type which will spawn a 'boss' monster from the EnemySpawnBoss pool generated in the mod loader. Once the boss monster is eliminated, the zone will be completed. The boss is set to a 'level' equal to the number of players divided by 4, and then modified by the difficulty selection in the parameters. This update resolves parts of Issues #6 and #11

**Random Anomaly Zones**
Added the ability for DHO to spawn zones in random wilderness areas (instead of just named locations, as before). This will enable more flexibility to create interesting dynamic scenarios and allow ops to take place not only in urban areas.

**Solo/Single Player Quality of Life**
This adds a check for someone playing DHO by themselves (SP, MP self hosted, or dedicated). If true, a squad of friendly AI soldiers is spawned to support the solo player. Those AI can also have their loadouts modified using the "Modify Unit Loadout" scroll wheel option at the POG Base. These were highly requested features and help resolve Issue #10

**Vital Bug Fixes**
**Helicopter Issues**
As per issue #12, the insertion helicopter in spawn has developed an issue with not conducting any other waypoints after the initial insertion. After countless hours attempting to fix this bug (which appears to have been caused by a recent Arma 3 update), I have created a work around which simply replaces the crew with new units and a new group each time it lands. This creates more edge case bugs to deal with down the road, but for now this essential feature is restored. As issue #12 is also present in the Helicopter Support module, I have replaced that module with the virtual module until I can work with the BI devs to get this functionality working again.

**Dynamic Simulation Issues**
As per issue #13, many units are not having their simulation reenabled by dynamicSim when the players get close, leading to "frozen" monsters. This was especially true for any boss type monsters, thus ruining that mission type. To resolve this, I have created a workaround that involves a large trigger manually reenabling all simulation on every unit when a player comes near a zone. This is a bandaid that will need some refining in future passes.

_That's all of the updates for Dynamic Horror Ops v0.34! I hope you have a fantastic time getting spooked with your friends this year! As always, please leave feedback on the workshop or on the scenario github at https://github.com/UselessFodder/FS-DynamicHorrorOp . Thanks and happy hunting!_

**Changelog:**
Adds:
- New DHO_fnc_spawnBoss function (within Zone/fn_spawnBoss.sqf) generates a 'boss' type monster from the EnemySpawnBoss list and places it in the specified location
- New DHO_fnc_createNewLocation function will generate a FlatArea type location somewhere on the map in a location that is on the ground and not within the NearRadius to another point.
- Check to init.sqf if only one player is active. If so, it spawns a number of friendly AI soldiers from a hard coded list based on the difficulty (8 AI for easy or normal, 6 for hard, and 4 for Nightmare).
- DHO_fnc_setUnitLoadout is a new function that allows editing of an AI unit's loadout. Under the hood, it works by saving the player's current loadout, then copying the targeted unit's loadout to the player, then finally opening the arsenal. Once the player makes changes and closes the arsenal, the player unit's loadout is copied onto the targeted unit, then the player's loadout is restored. This is primarily activated by an addAction on the targeted unit that only works within 500m of the main base area.
- New function DHO_fn_heliInsert that handles the helicopter insertion as a separate function that can be remoteExec'd

Changes:
- Added Case 3 (Destroy Boss) to fn_createTask.sqf to generate boss missions and supporting triggers, tasks, etc.
- Added _missionType selection of 3 to fn_initLocation.sqf to ensure boss type missions are generated
- Enhanced task data to show proper images or indicate if no preview image is available.
- init.sqf now generates a number of random locations equal to 10% of the named locations
- DHO_fn_findLocation now also searches for FlatArea type locations
- Now deletes all non-player units in SP mode
- Check in init.sqf to spawn friendly AI modified FROM only multiplayer TO any time there is only one player (including SP). This will ensure that newly renamed Modify Unit Loadout addAction is only applied to AI units.
- Ensured enableDynamicSimulation is run on all groups AND units spawned
- Modified DHO_fnc_initLocation to create a trigger area that manually disables DynamicSim and manually reenables simulation on all units in the area.
- Modified helicopter insertion script to delete the previous crew and replace with a new crew 30 second after landing at home base. This is to fix the issue outlined in issue #12
- Removed the init lines from each soldier (a leftover accidentally not fixed from v0.33a)

Bugfixes:
- Added a check to boss's lifeState in addition to an isNull check for some bosses that don't go 'null' upon defeat (namely Empires of Old)
- AI units spawned in player hosted MP were getting unreliable spawn locations from BIS_fnc_findSafePos. Changed to simply spawn the units within 1m of the MissionCommander
- Changed addAction to a remoteExec so single players on dedicated servers correctly get the added action. Previously, only the player who was server in self-hosted games would get it.

TODO / Known Issues:
- Balance Boss levels
- Consider deleting all other enemies of boss type within zone to remove confusion.
- Consider adding a check to delete soldiers if a second player JIP
- Consider adding AI respawn when player RTBs
- Better random location naming system
- Fix file description comment for DHO_fnc_createNewLocation
- Add parameters to allow 3 generation modes: Only cities, only wilderness, or Both
- Consider adding an addAction to player units to allow them to modify loadout anywhere within the HomeBase area.
- Clean up this horrendous bandaid code in the helicopter fixes
- Remove lots of debug logging
- Soooooo many edge cases to resolve
- Clean up code in dynamic sim fix, possibly move into separate function
- Performance (lots of new triggers polling)
- Consider modifying overall spawn code to utilize trigger to spawn all units into the area only when players are around (will help overall performance for servers at the cost of a lag spike when players near zone)

Оновлено: 27 жовт. 2024 о 20:18
автор: UselessFodder

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

Оновлено: 26 жовт. 2024 о 18:17
автор: UselessFodder