I was going to past my second FLOSS entry today but yesterday Sega actually released a RPG on the Wii virtual console. Shining Force is the second game in the shining series of games, though I have never played any games in the series. I am probably going to be playing this entry as soon as I finish Paper Mario.
Since I am talking about consoles anyway, I might as well talk about save points. A lot of players don't like them, but from a development standpoint they are a rather nice way of dealing with the problems of saving a game. Saving a game, while sounding like an easy thing to do, can be a challenge. When you have memory restrictions on how much information can be in the save file, as you do when you are creating a console game, this becomes a major factor. This is why a lot of games reset rooms once you have left the area. By not having to track the state of the monsters in the room you can then eliminate having to save that information. This means that when you are saving the game all you need to save is the player's location, the player stats, and the key game flags.
Key game flags are bits of information that reflect what the player has done in the game. For instance, if you have a treasure chest, you don't want that chest to be magically re-filled every time the player exits then re-enters an area. To solve this problem you just assign a game flag to hold the chest state. If the chest has been opened, then the flag gets set and the next time you enter that area, the chest will already be opened. Of course, this also applies to switches, traps, bosses and any other game state information.
The thing is, if you are going to have the ability to save the game, why require it be done only from key points in the game? Could you not simply use the same flags and stat storage with a slightly larger field for allowing any game location to be the location? If so (and as a programmer I know it IS so) then you could very easily allow the player to save anywhere. All that would have to be done is saving a slight bit more information that contains the monsters in the particular room that the player is in. Even though the number of monsters in a room could vary, you just need to reserve enough memory to hold the maximum number of monsters that appear in a room. There are other reasons why this might not be done which I will discuss in a future post.