Listing all of them early would make it easier to get a good design
early on, if things have to be changed.
- [practicing against an AI player] when the player realizes one of
his moves was really bad, he could just select the move to be changed,
and request tagua to "rewind to here", while moving those moves to a
variation, and continue playing the main game. Currently, we can
either use undo (and lose knowledge about one's own weaknesses, from
which there may be things to learn), or continue playing in a
variation, which is not really what variations are usually used for.
- when preparing a move (against AI or network player), it would be
nice to allow the player to simulate some moves (as one could do with
a real board besides the computer ;) before choosing one's move.
Obviously the game's mainline is not a good place for such moves, so
using a variation for this would be nice.
Both of these seem to require allowing a variation with an empty
mainline, which is not possible to represent in tagua currently (as I
gathered from some comments in the code), and which is not possible to
represnt in a standard PGN file either. However, I have seen
described a PGN non-standard extension which can represent this:
whereas the "<move> ( ... )" syntax is a "variation branch rooted
before <move>", the "(* ... )" syntax is a "variation branch rooted
here". See "Continuations" in
http://www.enpassant.dk/chess/palview/manual/pgn.htm#pgntagsnewp4
Best regards,
--
Yann