Hello again, everyone, and welcome back! This weekend had a lot of development, debugging, and testing in it, but as I type out what changes were made, it feels like such a small amount of work.
This weekend I was feeling mostly better, so I wanted to take a stab at the crash when loading a saved game. It turned out that there was a bug in the version of ACFU that I’m using that keeps some pointers to map markers and locations in memory even after clearing those memory locations out. The flow that was happening when trying to save-then-load for the checkpoints was basically “save game, clear out memory (but not the pointer registry), load (to respawn everything and reset world states), then go through the list of map markers in the pointer registry (that no longer pointed to valid addresses)”. Anyone who’s done programming with pointers knows that this is exactly what would cause a memory issue and cause a crash, and also that when running in my debugger (PIE mode in Unreal), it would often be masked by garbage collection being treated differently. That’s why I didn’t see it before the build was created; when I ran in the editor to test, everything worked fine. Sorry for the geek-speak there. For those who don’t speak it: the load was trying to read memory that wasn’t available anymore, and that’s a programming no-no.
All that being said, I think the issue is solved. It will take some pretty extensive testing to be absolutely sure, but my initial testing is looking good so far. While I was in and messing with the saving and loading functionality, I upgraded it and added some code spots where I can add more in later if the design pushes me toward some things. I don’t know what the reception would be like by the player base, but I’m thinking about “mini checkpoints” outside boss arenas to save a long runback in the event of death similar to Elden Ring’s Stake of Marika system. It’s just an idea that I’m bouncing around at the moment, but I left a good spot in there that I could add it in if I decide to do it later. Let me know what you think and whether that would be a system that would be appreciated or unnecessary.
I’ve also spent some time while I was in there trying to optimize the save and load process. I think I can make the checkpoints respawn enemies and reset world states without actually doing the save and load. If my experimentation works, then the process will be a lot faster, a lot smoother, and will be a good start for making further updates later. The initial stuff I threw together worked great for the alpha phase, but here in the beta phase it’s time to tighten up the codebase and optimize where I can.
So, for now, everyone, I’m going to have to call it quits. I’ve got other work to do this weekend, and I feel like I made some good progress. Thank you all for tuning in again this week; your support is what keeps me going. I hope you all have a wonderful weekend. Until next time, everyone, keep on gaming!
