Hi! This is just a quick post to say that the ability to save and load your game's state is extremely useful for tracking down gameplay bugs. My engine has a lot of strange features, but the one that has proven to be the most useful by far is that it automatically records the last ~10 seconds of gameplay states in the background. So if I ever see anything strange happen while I'm playtesting my game I can pause, rewind to the point where it happened, and open the game in a debugger to see what caused the problem.
This post was inspired by a bug I just found with my game's bump attack system which only triggers if you attack one enemy, then try to attack a different enemy on the very first frame that you can act again, but that enemy decides to start stepping away from you on that exact same frame. All I had to do was see that my attack randomly didn't work, go "oh that's weird", then rewind to the frame where my attack was supposed to come out and step through it in a debugger. I don't know how I ever would have reproduced or fixed that issue without a feature like this.
I imagine it's difficult to add this feature to the game engines that most people use. So I don't talk about it much, in case I accidentally find myself getting dragged into a game engine argument. But if you have the ability to implement it, I really can't overstate how useful it is!
another benefit of having save states in your game engine (which is required for adding a rewind feature) is that you can just make a save state for each of your game's store page screenshots! and then you can make a button that automatically loads each state and takes a screenshot of it in each of your game's languages, at whatever resolution you need. i was digging through my newsletter archives earlier and saw that i'd recorded a video of this in my engine:
it might be overkill for most games, but it can save you a lot of time if you're releasing your game in lots of languages like i was. it would have been so tedious to manually set up all of those action shots again from scratch every time a new translation was added to the game.
