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

Reply via email to