This plugin is a tool for make your own savegame system.
Are savegames (represents a whole save of all archives in your app). These can be duplicated, deleted etc…
You swap from one to another when (for exemple) changing player. These are represented by an identifier named InstanceID. There is no “slots” system ( or we’ll provide some as downloadable content ) but you will make yours easily with your own classes using instanceObjects.
Are objects, that can be (de)serialized from/to an archive.
The identifier that represent these is ElementID, which contain an ArchiveID, it contain all informations for access an object in file.
All identifers can be created using String, Array or int. When using an array, it is used as a path.
You create an ArchiveID with [“my_category”,”my_subCategory”,”my_archive”].
You create an InstanceID with [“my_player”,”save1″] and activate this instance.
Your archive will then be located at ‘../my_player/save1/my_category/my_subCategory/my_archive.dtarc”).
Are sub objects of an element, any object can have deepObjects.
DeepObjects doesn’t need any identifiers because these are part of an element.
You’ll mostly use DeepObjects for deep save components or generated objects but you can do what you want (save a lot’s of actors in an elements is up to you). You can deepSave objects in an array or map using the ArrayToObject node.
You can (De)serialize:
– An element.
– An archive (all IElements in this archive).
– An instance (all IElements).
Each object can receive events about serialization (DeepObjects too) and can lock his (de)serialization process (for exemple if an object know it wasn’t modified it can lock his serialization for optimisation purpose).
An archive will self load when needed, but you can manage cached datas yourself.
For exemple load an archive when entering a box trigger and unload (and save) it when the player goes out of that box, all (De)serialization for objects of this archive won’t need to access file while the player is in. We’ll soon add a timer option in archive settings for inactivity auto unload.
It is a feature that allow you to get an IElement using its ElementID.
It will return the object even if it is not loaded in your world, in which case the object will be loaded from its saved state.
Blueprint users are sometime facing a problem when they need to access data of an object in a level from an other level. This is also solved with getObject (will only work in game but you are able to create the link in editor).
With this feature you will store variables where these have to be, and never have to create an actor that store duplicated informations in the persistant level. This way is bad for maintenance reasons and keep datas in sync is sometime not easy.
Options and informations
All pins, nodes and variables are tooltiped, and there is some documentation nodes for fast help in blueprint.
BP_ArchiveMaster is an actor that contain all your savegame settings and informations.
From here you can :
– Create pre made instances that you will be able to export to your game, set readonly, (de)serialise from the editor…etc
– Access archives settings.
– See each element in each archives, the last register time and object, you can delete them…etc