So I'm laying out my new project. There is an overworld, and several dungeons; all are at the same scale. However, the player will have ways of interacting with the environment; destroying walls, burning trees, opening chests, etc. To make the zones persistent, I plan on simply saving the seeds. However, I also need to save the changes the player made to the environment.
The best way I see is as follows:
Have a class ChangedTile which has variables xLocation, yLocation, and changeType. ChangeType would be an enumerator for things like OPENED, CLOSED, DESTROYED, FLOODED_WITH_ACID, or whatever.
Have a class called ZoneChanges which has a list of ChangedTiles of dynamic length, for each tile that has been changed.
Have a list of ZoneChanges corresponding to the number of zones in the game.
But this feels hideously inelegant to me; I feel like there must be a better way. I'm going to have 5 main dungeons of 5-7 zones, a final dungeon of 13 zones, perhaps 10 optional dungeons of 2-4 zones, and an overworld of probably 15x15 zones; if this proves too crowded, I might wind up with as much as a 20x20 overworld, though it doesn't need to be square. All in all, I'm looking at several hundred zones. Thankfully each changed tile is only three shorts, and I'm only loading or writing one zone at a time, but it's still a lot of information.
Does anyone have any experience with something like this, or just have a slicker idea than what I've got in mind?