So it's tough to show the entire branch tree (the thing is a monster), but basically I have to global functions - SAVE/SAVE and SAVE/LOAD. On scene start I have an FSM detect (using the EasySave Playmaker actions) if a save file exists. If it does, then it loads it. If it doesn't then it creates the world as if it's brand new.
As for Saving, in my FSM I have a series of branching behaviors that basically get all the objects from my defined Arrays and then one by one get the traits I need to save, generally just position/rotation/any specific bools I care about/etc. The next action then writes all of these to a specific folder. I've found that you normally can't do a GET action and then write action in the same playmaker action, there always need to be a seperation of the GET and SAVE actions. To help this, I have an FSM that just contains all important variables in my scene. So I can have "BoxDeployed.Int" and save that out, then load it and Set FSM Int on load.
The tree expands as I keep adding variables to save. On my actual game objects, my start state is usually a Bool Check for "Data.Load.Done.Bool" that get sets once my entire tree is saved/loaded. That way game logic doesn't start until all my data is loaded.