Should I clear arrays of pointers before saving struct to GameSave?

So, implemented what you suggested.

Changed the variables as per your instruction:

  UPROPERTY(EditAnywhere, BlueprintReadWrite, Transient)
    TArray<UObject*> TempObjects;

  UPROPERTY(EditAnywhere, BlueprintReadWrite, Transient)
    TArray<UObject*> PersistentOuters;

And set the PersistentOuters[0] = GameInstance before calling

Saving and Loading work if I don’t close the game. If I do loading after restarting the game MasterStateObj has no content.

The error I get is it fails at finding Engine/Transient (see logs).

Output below so you see the paths (All the outputs appear as errors, I just used that as it comes out in Red and it’s easy to see. They are not errors per say):

Saving:

LogSavingTest: Display: Complete Load UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_0.MasterStateObj_1 0
LogSavingTest: Display: Complete Load UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_0.MasterStateObj_1.MyObjectBIG_0 1
LogSavingTest: Display: Complete Load UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_0.MasterStateObj_1.MyObjectBIG_0.MyObjectA_0 2
LogSavingTest: Display: Complete Load UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_0.MasterStateObj_1.MyObjectBIG_0.MyObjectBB_0 3
LogSavingTest: Display: Complete Load UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_0.MasterStateObj_1.MyObjectBIG_0.MyObjectA_1 4
LogSavingTest: Display: Complete Load UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_0.MasterStateObj_1.MyObjectBIG_0.MyObjectA_0.MyObjectBB_0 5
LogSavingTest: Display: Complete Load UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_0.MasterStateObj_1.MyObjectBIG_0.MyObjectA_1.MyObjectBB_0 6
LogSavingTest: Display: ------UObjectDataLoader
LogSavingTest: Error: LoadData
LogSavingTest: Display: --Complete LoadData UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_0.MasterStateObj_1
LogSavingTest: Display: --Complete UObjectDataLoader UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_0.MasterStateObj_1
LogSavingTest: Error: LoadData
LogSavingTest: Display: --Complete LoadData UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_0.MasterStateObj_1.MyObjectBIG_0
LogSavingTest: Display: --Complete UObjectDataLoader UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_0.MasterStateObj_1.MyObjectBIG_0
LogSavingTest: Error: LoadData
LogSavingTest: Display: --Complete LoadData UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_0.MasterStateObj_1.MyObjectBIG_0.MyObjectA_0
LogSavingTest: Display: --Complete UObjectDataLoader UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_0.MasterStateObj_1.MyObjectBIG_0.MyObjectA_0
LogSavingTest: Error: LoadData
LogSavingTest: Display: --Complete LoadData UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_0.MasterStateObj_1.MyObjectBIG_0.MyObjectBB_0
LogSavingTest: Display: --Complete UObjectDataLoader UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_0.MasterStateObj_1.MyObjectBIG_0.MyObjectBB_0
LogSavingTest: Error: LoadData
LogSavingTest: Display: --Complete LoadData UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_0.MasterStateObj_1.MyObjectBIG_0.MyObjectA_1
LogSavingTest: Display: --Complete UObjectDataLoader UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_0.MasterStateObj_1.MyObjectBIG_0.MyObjectA_1
LogSavingTest: Error: LoadData
LogSavingTest: Display: --Complete LoadData UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_0.MasterStateObj_1.MyObjectBIG_0.MyObjectA_0.MyObjectBB_0
LogSavingTest: Display: --Complete UObjectDataLoader UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_0.MasterStateObj_1.MyObjectBIG_0.MyObjectA_0.MyObjectBB_0
LogSavingTest: Error: LoadData
LogSavingTest: Display: --Complete LoadData UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_0.MasterStateObj_1.MyObjectBIG_0.MyObjectA_1.MyObjectBB_0
LogSavingTest: Display: --Complete UObjectDataLoader UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_0.MasterStateObj_1.MyObjectBIG_0.MyObjectA_1.MyObjectBB_0

Loading:

As soon as I call LoadGameFromSlot() I get

LogUObjectGlobals: Warning: Failed to find object 'Object None.None'
LogUObjectGlobals: Warning: Failed to find object 'Object None.None'
LogUObjectGlobals: Warning: Failed to find object 'Object None.None'
LogUObjectGlobals: Warning: Failed to find object 'Object None.None'
LogUObjectGlobals: Warning: Failed to find object 'Object None.None'
LogUObjectGlobals: Warning: Failed to find object 'Object None.None'
LogUObjectGlobals: Warning: Failed to find object 'Object None.None'
LogUObjectGlobals: Warning: Failed to find object 'Object None.None'
LogUObjectGlobals: Warning: Failed to find object 'Object None.None'
LogUObjectGlobals: Warning: Failed to find object 'Object None.None'
LogUObjectGlobals: Warning: Failed to find object 'Object None.None'
LogUObjectGlobals: Warning: Failed to find object 'Object None.None'
LogUObjectGlobals: Warning: Failed to find object 'Object None.None'
LogUObjectGlobals: Warning: Failed to find object 'Object None.None'

And, after

LogSavingTest: Display: ------UObjectsPreloader
LogSavingTest: Display: Complete Load UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_1.MasterStateObj_1 0
LogSavingTest: Display: Complete Load UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_1.MasterStateObj_1.MyObjectBIG_0 1
LogSavingTest: Display: Complete Load UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_1.MasterStateObj_1.MyObjectBIG_0.MyObjectA_0 2
LogSavingTest: Display: Complete Load UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_1.MasterStateObj_1.MyObjectBIG_0.MyObjectBB_0 3
LogSavingTest: Display: Complete Load UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_1.MasterStateObj_1.MyObjectBIG_0.MyObjectA_1 4
LogSavingTest: Display: Complete Load UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_1.MasterStateObj_1.MyObjectBIG_0.MyObjectA_0.MyObjectBB_0 5
LogSavingTest: Display: Complete Load UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_1.MasterStateObj_1.MyObjectBIG_0.MyObjectA_1.MyObjectBB_0 6
LogSavingTest: Display: ------UObjectDataLoader
LogSavingTest: Error: LoadData
LogLinker: Warning: Failed to load '/Engine/Transient': Can't find file.
LogUObjectGlobals: Warning: Failed to find object 'Object /Engine/Transient.UnrealEdEngine_0.MyGameInstance_C_0.MasterStateObj_1.MyObjectBIG_0'
LogSavingTest: Display: --Complete LoadData UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_1.MasterStateObj_1
LogSavingTest: Display: --Complete UObjectDataLoader UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_1.MasterStateObj_1
LogSavingTest: Error: LoadData
LogLinker: Warning: Failed to load '/Engine/Transient': Can't find file.
LogLinker: Warning: Failed to load '/Engine/Transient': Can't find file.
LogLinker: Warning: Failed to load '/Engine/Transient': Can't find file.
LogSavingTest: Display: --Complete LoadData UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_1.MasterStateObj_1.MyObjectBIG_0
LogSavingTest: Display: --Complete UObjectDataLoader UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_1.MasterStateObj_1.MyObjectBIG_0
LogSavingTest: Error: LoadData
LogLinker: Warning: Failed to load '/Engine/Transient': Can't find file.
LogSavingTest: Display: --Complete LoadData UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_1.MasterStateObj_1.MyObjectBIG_0.MyObjectA_0
LogSavingTest: Display: --Complete UObjectDataLoader UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_1.MasterStateObj_1.MyObjectBIG_0.MyObjectA_0
LogSavingTest: Error: LoadData
LogSavingTest: Display: --Complete LoadData UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_1.MasterStateObj_1.MyObjectBIG_0.MyObjectBB_0
LogSavingTest: Display: --Complete UObjectDataLoader UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_1.MasterStateObj_1.MyObjectBIG_0.MyObjectBB_0
LogSavingTest: Error: LoadData
LogLinker: Warning: Failed to load '/Engine/Transient': Can't find file.
LogSavingTest: Display: --Complete LoadData UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_1.MasterStateObj_1.MyObjectBIG_0.MyObjectA_1
LogSavingTest: Display: --Complete UObjectDataLoader UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_1.MasterStateObj_1.MyObjectBIG_0.MyObjectA_1
LogSavingTest: Error: LoadData
LogSavingTest: Display: --Complete LoadData UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_1.MasterStateObj_1.MyObjectBIG_0.MyObjectA_0.MyObjectBB_0
LogSavingTest: Display: --Complete UObjectDataLoader UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_1.MasterStateObj_1.MyObjectBIG_0.MyObjectA_0.MyObjectBB_0
LogSavingTest: Error: LoadData
LogSavingTest: Display: --Complete LoadData UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_1.MasterStateObj_1.MyObjectBIG_0.MyObjectA_1.MyObjectBB_0
LogSavingTest: Display: --Complete UObjectDataLoader UObject /Engine/Transient.UnrealEdEngine_0:MyGameInstance_C_1.MasterStateObj_1.MyObjectBIG_0.MyObjectA_1.MyObjectBB_0