I just want to comment that I really like the organization of Sam’s member variables and the comments that say whether they represent Config, Cached references, object State, etc. I ended up doing something very similar when I was taking the Core combat course shortly after we introduced save/load. I chose to do it this way because it helped me reason about what state should be saved or loaded vs what needs to be computed/cached/reconfigured during Awake/OnEnable/Start. It’s great to see that I wasn’t crazy.
I haven’t seen anyone else organize their code in this way - this seems like it should be part of some common pattern if you need to save/load state in your product. Does the course continue to expand upon this pattern and delve in further nuances that might occur.