Hunter'z Persistency Module
What is it?
It's an "offline" (meaning, an SQL server or similar is NOT required) persistency framework for complex dynamic missions. It's meant as an alternative to existing solutions that use SQL servers. Instead of using a server/database approach, Hunter'z Persistency Module is fully SQF-based and outputs save data to text files in SQF-format. With this module you can avoid having complex infrastructure such as SQL servers and set up a persistent server with ease.
What can it do?
As a framework, it's got all the functionality you need to save any object, ammo crate, or vehicle and it's designed to be very easily customised so that you can save custom information such as object or mission variables. The module is focused mostly on realism/logistics scenarios, which means whatever you want to be persistent, you can set it up with ease and it will save every detail without compromise or room for exploits. For example, if you want to set a vehicle to be persistent, all you have to do is call one line of code and its state will be saved with all details down to the number of rounds it has in its guns.
Player units are also persistent by default, which means not only does it save your position or your gear upon logging out, but also how many bullets you have in the magazines inside your backpack, the damage on all your body parts including your full medical state if you use ACE, any map markers you have placed and whatever else comes to your mind
The customisation of the framework is done by using API functions that you call either through scripts in your mission or live through the in-game admin console. These are all described together with setup instructions and further information in the manual that comes with the module.
How does it work?
It uses Killzonekid's debug console dll extension (with his permission of course) to write to a save file on the server machine. Although the save file comes out as pure SQF, due to the limitations of extensions in Arma, large data arrays are split up into smaller ones and parsed back to normal by the module during saving and loading. This means that you might see a lot of text in your save files, but since it's all SQF, you actually have the option of editing the data manually by hand in case of any problems you have in your mission or things you want to change.
Saving to file is done automatically, through an auto-save system, for which you can set the save interval. The module is very performance friendly as it only uses resources when conducting a save, which usually takes less than a second. Player persistency is managed through connect/disconnect event handlers by the server, and other than these situations the module will not be using any CPU power!
To install Hunter'z Persistency Module you should use modfolders to keep it seperate from the official game content to prevent issues.
With Arma 3 you can use different ways to set up your modfolders to use custom content you have downloaded.
Please visit the Arma 3 Mod install instructions page
for more information about using custom mods and addons in Arma 3.
I plan on adding more features to the mod. One thing I will investigate soon is persistency of damage to map objects, such as buildings that are part of the map. No promises though!
Although I've been working on Arma 2/3 for a few years now, this is the first mod that I got ready to be released for public use. I'm hoping to have release versions ready for my other mods, especially the AI mod I've been developing since 3 years, but we'll see... For more info on what I do, feel free to check out my repo:
License / Disclaimer:
The module is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. You are free to share or build upon this work as long as you credit me as the original author. You may not sell this work or any derivatives of it, or financially profit from the use of the mod in any way.
- Fixed: Enabling / disabling certain features of the mod after having started your persistent campaign didn't have any effect.
- Made the search for the extension path more robust for use by non-standard setups.
(Explanation: If you were loading the mod not from the Steam workshop folder and in some other way, like loading it as a "local mod" or using it in your own mod pack, the mod would fail to save because it wouldn't be able to find the .dll extension. From now on that shouldn't be a problem and you should be able to load the mod from wherever you want. Though I recommend sticking to a Steam Workshop setup to keep up to date with latest changes and fixes!)
Fixes an error at loading related to arrays of type "weaponsItems" when a crate or vehicle has no weapon stored, or when a reconnecting player is unarmed.
- Enables compatibility with the ACE 3 Medical Rewrite introduced with ACE 3 v3.13.0.
* At the moment of updating, the changes made here remain UNTESTED. Some ACE medical features may not work correctly with persistency attached for the moment.
* If you've been using the mod with ACE Medical persistency enabled already in a mission, medical functions may be bugged out during the first reconnect of a player already registered on the mission due to changes made in the new medical system in ACE3. Respawning should fix any such issues should they arise.
- Weapons inside vehicles and crates will now be saved with their attachments and magazines attached. They used to be loaded separately before. This has become possible since the introduction of new scripting commands with the v1.94 game update.
- Hotfix for previous release:
* Instead of optimising players' local variable sync time, a bug caused the wait period (when opening the pause-menu) to increase, causing long wait-times when opening the pause menu.
- Optimised players' local variable syncing even further. Numeric local variables will be synced to the server only when the value differs by more than 3% from the server's value.
- Optimised syncing of local player variables to the server on accessing the pause menu. From now on, there will be no delay in accessing the pause menu if all local variables on the server are already up-to-date.
- Added new parameter: Object Load Delay.
You can use it to set a delay between the loading of persistent variables and persistent objects. This is useful in case you need to do some setting up, or any initialisations at the start of your mission every time using data from persistent variables, and you don't want persistent objects to have spawned yet.
- Compatibility fixes for Arma 3 v1.94
- Added explanation to ReadMe on how to use persistency for user-placed map markers.
Due to a change in how the weaponsItems scripting command behaves in the recent Arma 3 v1.94 update, the module needs some compatibility fixes. This patch introduces the needed fixes, however any existing save files you have from before may be affected by this change. You might see errors when players reconnect and they might lose their gear. If you have such a problem drop a comment and I'll explain how to convert old saves to work without problems with the new version.
- Fixed: Deleted/destroyed persistent crates creating false entries in save files and creating RPT errors.
- Improvements: Unparsed save variables read from file will be deallocated after loading to save memory.
- Empty magazines should now be persistent (but they might not end up being in the same containers due to engine limitations, e.g. empty mags from vest ending up on your uniform).
- Added persistency for ACEX Field Rations. Check the module options to enable this feature. In addition to player hunger and thirst values, any of your persistent objects that are "water sources" will also retain their water value.
Fixed: Issues with ACE medical persistency.
Fixed: Issues with ACE medical persistency.
- The module no longer tries to register Headless Clients as players.
- VectorUp now persistent (needs testing).
- Fixed: Backpacks inside vehicles and crates are now persistent. Except for their contents*!!!
* Uniforms, backpacks and vests inside crates/vehicles don't get their contents saved. Be tidy and store them empty :)
Module safety improvements against connection loss during player load.
Introduced compatibility code with LAxemann's Mount mod, which was causing some weapon attachments to disappear or duplicate on reconnect.
Fixed crates and vehicles not saving weapons.
Take into account currently connected clients when saving to file.
ACE Cargo persistency
Bug fixes. Documentation now updated (was still old in previous version)
Changed the way variables are handled. You now have option to set variables to be network variables, i.e. they are publicvariabled on load. See documentation for more info.
Added API documentation. Check README file in mod folder.
First release intended for private testing. Does not come with documentation except for module descriptions in editor. Module may contain bugs.
- BI forums