Well, summer's almost over and I'm still not done with all the tech bits...August was a bit of a mess all around irl, and as a result I didn't get the save system finished. I've made a little bit of progress on it though, so I'm gonna write a little about where I want to go with it.
Where Am I Now?
Let's start with what
does work at this point. Saving & loading, on a technical level, is around 90% there. I'm not loading the state of actors when you enter a map at the moment, but I
am recording it. To make that happen, I leveraged the type system pretty heavily: I can mark any property in a schema as 'persistent', and use that to produce a sparse deep copy of that schema. That means that even if an actor doesn't have any persistent data, a behavior or other component within it can still be saved & loaded without affecting the rest of its properties or requiring any special marker on its parent. And of course, I can do the same thing to region/group/map data as well--this part works just fine already!
The game now has a basic autosave. The game makes an autosave on every map transition, and maintains 3 save files for this purpose: One for the last map you entered, one for the last group, and one for the last region. The result is being able to load to not just the start of the current map, but also the start of a floor, or the whole dungeon, without making any manual saves yourself. To do that, I also had to implement the concept of a 'save file' that you load instead of just saving and loading to a hard-coded location
Of course, having multiple saves means needing to
choose a save to load, so I also made a nice lil' menu for that:

- saves.png (5.57 KiB) Viewed 15467 times
nil is my favorite map in the game
It's a WIP bit of UI that's largely comprised of placeholder assets, but it's functional and the overall layout of info is basically where I want it. Rough month aside, I still managed to make some pretty good progress. But it's not enough for me, oh no.
Where Are We Heading?
When I first implemented saves, I basically just put an option in the menu to save wherever because it was the easiest way to do it. That was never my long-term plan, though.
Originally, the goal was something almost entirely driven by autosaves, but after some thinking I've decided on something that mixes an aggressive autosave with regular ol' save points.
Making a 'Pit Stop' in the Dungeon
Why did I warm up on save points? Honestly, I'm not entirely sure myself. But I think my current attraction comes from a couple of disconnected thoughts. First off, I think there's a certain feeling of 'solidity' that comes from a manual save. It's mostly psychological, but thinking
"Yes, I have created a save file. My data is fine" offers a sense of comfort that a little floppy disk icon in the corner doesn't. If I don't want the player to save anywhere though, that means save points--or some other restriction on when & where saving is allowed.
The other relates to another piece of design that I've been planning. I have some interesting combat abilities planned for later in the game, but frankly they're just too good. And due to their nature, that goodness can't really be changed--so instead I've decided to let some abilities have limited charges. I'm not fully jumping on the FF1/FF3/early D&D 'limited spellcasts per day' train, but I think giving some really cool moves a limit on uses will let me make some really busted stuff without it being the only thing a player would ever pick--it becomes a choice of raw power vs reliability. But that kind of system requires regular access to 'refills', usually via resting in an inn. That brought to mind the tents from the early Final Fantasy games, which allow the player to rest on the world map
or at a save point. Then I got a little carried away and mashed the concepts into an amalgamation:
Resting is a save point
By visiting an inn, or camping out in certain designated spots, the player gets access to an alternate menu with access to some options that would be removed from the main menu--mainly job/ability switching and saving. This turns campsites into not just a heal, but an opportunity to experiment with your party build or prepare for an upcoming boss fight. With a built-in save point and a free heal, there's no worries related to switching between jobs with different hp/mp caps either--you'll always walk away at full power. And if the new setup is bad and you die? You have the option to reload right back into the customization menu. On paper, I think it sounds pretty nice.
This also gives an opportunity for the player to get to know the characters a little better. I'm thinking it would be nice to have a little scene of the characters eating, talking, chilling out, etc at each resting spot. It offers a little window into the hobbies, personalities, and relationships of the characters that might not come up as often in the script.
I'm not planning to fully implement this part, but I would like the menu to work at least.
What Happens When You Fail?
Currently, when you die you go back to the title screen. And when you softlock a puzzle? Whoops, guess you gotta close and reopen the game! I want to fix both of these issues while I'm on the topic of saves.
The latter is super easy--with the new dungeon structure full of tiny maps, it should be pretty easy to add a button that reloads the last autosave and drops you back at the entrance of the room. That choice keeps paying dividends!
For the former, I'm still thinking about exactly what I want to offer the player--reloading is an obvious one, but I'm also considering a button to retry the fight as well. It should be pretty easy to do, I just need to actually do it. Beyond that, I'm considering offering some options for making the fight easier if you've failed it enough times. That requires some tracking across saves to work properly though, so I'm still thinking about how to handle that. I'll probably skip that last option for now, but keep it in mind for the future.
Finally, 'Save Slots'
Here's another part I don't plan on implementing in this pass. The main issue with the system above is that managing multiple playthroughs is going to be nasty. For that reason, I intend to have a higher-level set of 'profiles' the player can use for each playthrough. When they start a new game, they pick a profile they're not using (or delete an existing one) and the game will use that to organize their saves. It's not super important in the short term though, that's more the kind of thing I would probably do once I have a finished demo.
Anyway, that's all for now. I need to get back to finishing this stuff!