Hello community! I've had this released on the Steam Workshop after a long development period, and it's about time I introduce it here. I hope communities will enjoy using this!
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!
Future work / TODO?
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!
Download link
You can obtain the mod through the Steam Workshop.
https://steamcommunity.com/sharedfiles/filedetails/?id=1207707864
Licensing
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.
Trivia
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:
https://github.com/KHunter-Arma