Fast way to save game state on every turn?

Hi everyone. First post here, hope this is the correct forum.

I’m planning on developing a turn based, top down, grid based, roguelike-ish game. For the moment I’m focusing on desktop only.

One feature I’d like to implement is saving the game state on every turn (or every significant user action). “Game state” in this case being the state of the player and all enemies in the level. The level structure itself will be static and I’ll just serialize it on generation to json using the included functionality in LibGDX. I’ll also probably limit the turn rate to no more than 2 or 3 per second.

The idea is for saving to work like it does in Dark Souls. DS provides no explicit “Save” option, instead it is constantly saving every little action you take in the background.

At a very high level it seems to me that the best way to proceed is to make sure that I only persist those things that have changed each turn, and in general optimise for write speed of my save file over read speed. Sqlite would seem to be the natural way to do that sort of thing but I’ve no idea what the overhead of sqlite is relative to other methods.

At present I still have only a vague idea of how much information I’ll need to store, i.e. what attributes entities will have and how many entities on average will be in a level. Admittedly, this may be something where I’ll just have to experiment and profile to find something that’s fast enough but I’m interested to hear if anyone has any ideas or has implemented something similar.

Thanks.