The save system provides a streamlined workflow for designers to implement saving and loading game data between sessions. The system primarily uses SaveAgents for Blueprints that can attach actor components, but examples of implementation for UObjects in C++ can also be seen in the Quest System. This save system utilizes Unreal Engine's built-in save functionality. This system supports actors placed in a level during development as well as runtime spawned actors depending on SaveAgent configuration.
The SaveManagerSubsystem is responsible for managing the saving and loading of data from disk as well as managing profiles and save slots. It uses Unreal Engine's built-in save and load functionality and supports game profiles with separate save slots for each profile.
The KSaveGame is a premade class using Unreal Engine's built-in save game class. By default it can save data from Level Management, the Quest System and Inventory System. Use this class to extend what data can be saved.
The SaveInterface can be added to any class to configure save and load functionality for the class. If the class inherits from Actor, consider using a SaveAgent.
SaveAgents are components that register an actor with the save system. Every class that needs to save data between game sessions should have its own version of SaveAgent for handling saving and loading data specific to that class.