This is a design proposal/discussion for 1.5. I have been thinking about Ivanovic's proposal that we split the users save directory into subdirectories by campaign type. What this is intended to do is make it more manageable to have lots of savefiles around by making it nrecessary to look at all of them at once. But I have never been happy with the idea; my design sense said there was something missing. I think now I have figured out what it is.
Users don't want to view their saves by campaign type. They want to view them by *game* -- where a game is a sequence of saves (or possibly a tree of saves) derived from a common campaign-start ancestor. The difference between these two models is that a player might well have more than one game in progress associated with the same campaign. Say, one on EASY and one on HARD. Or, a developer might be running more than one game in the same campaign because the games represent different debugging cases. Right now we can't represent this kind of structure, because there is no chaining information in savefiles. That is, we can't look at a savefile and know which other savefile it was derived from. But that could easily change. So, as a beginning, I'm proposing that savefiles should grow two new fields: (1) A unique ID, and (2), a parent field containing the ID of the immediately preceding savefile. For a root (start-of-campaign) savefile the parent ID field would be blank or omitted. This would be enough information that after getting the list of all savefiles, we could reconstruct a graph of all the ancestry relationships. We could then have a two-level view in the UI -- you're either looking at a list of all games (effectively, of all root saves) or of the saves for a particular game. A subtle point: it would be best if the game IDs were globally unique, so that (in particular) two start-of-campaign saves made on different machines would always be distinguishable. That would make life easier when debugging -- if you're a developer, and you grab a savegame out of a bug report. you don't want it to look like part of any of your local games. On Unix machines, a suitable form of ID would be <user>@<hostname>:<timestamp> with the timestamp at a tenth of a second resolution or less (shorter interval than the human relex arc). I don't know how we'd compose IDs for Windows boxes, which don't necessarily have a hostname. I think the UI should look like this: (1) Before a game is selected, clicking "Load" brings up a dialogue called "Game List" which contains a scrolling select list of root saves. (2) When you select a root save, you go to a "Load Snapshot" window that works like the current "Load Game", except that (a) it only shows saves from the currently selected game, and (b) it has a button named "Game List" that pops you to the Game List dialogue. I can imagine some ways to get fancier, but this would make a good basic interface. -- <a href="http://www.catb.org/~esr/">Eric S. Raymond</a> "Experience should teach us to be most on our guard to protect liberty when the government's purposes are beneficient...The greatest dangers to liberty lurk in insidious encroachment by men of zeal, well meaning but without understanding." -- Supreme Court Justice Louis Brandeis _______________________________________________ Wesnoth-dev mailing list Wesnoth-dev@gna.org https://mail.gna.org/listinfo/wesnoth-dev