What is “BP Gameplay Map” class ? Is it an object ? If so, you have two objects here, the BP_SaveGame and the BP_GameplayMap. When saving to slot, you should only have one master object with primitive properties, avoid sub-objects or references.
In this scenario, when saving BP_SaveGame, it saves a reference to the existing BP_GameplayMap object instance, but it doesn’t save anything from that object. When loading after a restart, it tries to resolve the object reference which does not exist.
You have several options :
(1) Move variables from BP_GameplayMap directly into the SaveGame object. Or save BP_GameplayMap instead of SaveGame.
(2) Turn BP_GameplayMap into a struct. Structs can be saved within an object.
(3) Use a different slot for each object. For example “Save1” for the master object, “Save1_Map” for the map sub-object, etc.. Each object/subobject will require a SaveGameToSlot/LoadGameFromSlot call. I wouldn’t recommend this though as it is prone to desync/corruption.
(4) With access to C++, you can do the equivalent to SaveGameToSlot but temporarily keep the result in memory (as an array of bytes). This means you can gather save data for multiple objects and save them all into a single savegame.