ZBE_Caching by Zorrobyte is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
Based on a work at https://bitbucket.org/zorrobyte/zbe_cache.
Caches AI, all but teamleader so group still moves (tested: 25%+ FPS gain DUWS)
Caches empty vehicles (tested: 2385 vehicles 4 FPS no cache, 49 FPS cache)
Uncaches AI for players and other enemy AI groups
Compatible with virtually every addon and script (including HETMAN/HAL, bCombat, ASR_AI)
Per group/vehicle FSM which is performance friendly and fast
Enable/Disable caching for a specific group at anytime
Cached AI units in group are setPOS(moved) to TL's position so they can still receive damage from artillery, bombs, etc
Units that die while cached are uncached and removed from the caching loop
If the group leader dies while group is cached, the next group leader is uncached
Cached empty vehicles can still receive damage and display damage/explosions
Useful RPT/hintSilent debug option
Addon NO LONGER requires CBA as of v4.4b
Addon and script now work the same as of v4.4b. Run script in mission or use addon on server only.
setPOS "resolution", user can set percentage from 0-100 to dictate how often cached units get moved to group leader per cycle as setPOS is global and sends packets.
Per vehicle type caching distance as 150m is good for cars but bad for planes (as ejecting units will mid air "freeze" aircraft) - done
Switch from spawn/scriptDone wait to native FSM wait by using FSM native command "time" - done for all FSM
Object caching FSM for ammoboxes, weapons, etc
Addon version without CBA requirement by using preInit = 1; in config.cpp - done
Installation for Addon version:
1. UnZIP @ZBE_Cache into Arma 3 directory
2. Move userconfig folder into Arma 3 directory (\Arma 3\@ZBE_Cache\userconfig -> \Arma 3\userconfig
3. Set desired options in userconfig (\Arma 3\userconfig\zbe_cache\zbe_cache.hpp)
4. Play the game
Installation for script version:
1. Extract contents of \@ZBE_Cache\zbe_cache_script_version to your mission folder. Do not overwrite your existing init.sqf if asked.
2. Open \@ZBE_Cache\zbe_cache_script_version\init.sqf and copy contents into \Documents\Arma 3\missions\missionName\init.sqf file.
3. Set desired options for ZBE_Cache in \Documents\Arma 3\missions\missionName\init.sqf.
Disable/Enable group caching:
Example for unit init from editor: (group this) setVariable ["zbe_cacheDisabled",true]
Broken down: *groupName* setVariable ["zbe_cacheDisabled",*true/false*]
Minimum FPS limiter:
Prevents AI from uncaching if FPS is below desired FPS. Even while the uncaching is being limited, the next group leader will uncache if the group leader dies.
zbe_clientObjectDrawAuto.fsm is an experimental FSM to auto set client objectDrawDistance based on FPS and no higher than aiCachingRange so players will never see AI uncache. Please vote here if you would like this feature: http://feedback.arma3.com/view.php?id=21746
A3 Feedback Tickets resolved in relation
I first found that Physx wasn't disabled for enablesimulation false and was fixed:
I then found AI enableimulation false wasn't good as it could be and was improved:
"ZBE 144 Groups, 1145 Units, 17 NoCacheFPS, 51 CachedFPS, 59 DeletedFPS"
C_Offroad_01_F drops FPS to 28 no ZBE_Cache vs 59 FPS ZBE_Cache (600+/- spawned)
DWUS (http://www.armaholic.com/page.php?id=21816) 20%+/- FPS improvement
Here is a (lower quality, sorry) video showing how it works. I'll come up with a better video at some point.
Units inside vehicle do not cache due to A3 bug: A3 Issue Tracker
Report issues here
Download and Homepage