xboard-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[XBoard-devel] Variation Trees


From: h.g. muller
Subject: [XBoard-devel] Variation Trees
Date: Wed, 13 Oct 2010 10:31:38 +0200

I would like to have some feedback about the new variation support in XBoard 4.5.pre0. The way it is currently implemented initiates a new variation (pushing the tail of the existing game on a stack) every time you enter a move in Analyze or Edit Game mode when not at the final position of the current line. (In the final position it would just append the move.) Previously, the game would simply be truncated before appending the move.

The danger of the new method is that people that are used to analyzing without using 'revert', but in stead by using '<' to step back through the current line, and then try an alternative move, wil pretty quickly run into a 'stack overflow' error popup, as they save game tail after game tail on the stack, and never pop anything. I can imagine they would perceive this as extremely annoying. I never use Analyze mode myself, so I have no idea how it is typically used...

I guess people could get used to using 'revert' for retracting an entire variation to the point where they started it. But when they want to try an alternative move from a position between the point where they started the current variation, and its end, that would be very inconvenient, as it would retract some of the moves they still want played. So the use of '<' and '>' to step to the branching point, and enter a new move there, seems natural. This is fine if it was just the first of a number of sub-variations on the current variation they wanted to explore: when they are done with it they can then 'revert', and use '<', '>' to step through another position to try another sub-varation. But it does not provide for the case where they want to abandon the tail of the current variation entirely (because they feel it is refuted). It would then be annoying to them to revert to it every time. Not only because they have to hit 'revert' one extra time, but mostly because this interferes with saving the variation they finaly do want to keep (which is now a sub-variation on a silly line) as variation
comment in the PGN through 'annotate'.

The logical way to solve this is to let them use 'truncate game' to truncate a current line they don't want to keep, before entering new moves, so that entering these moves will not start a new (sub-)variation, but simply replace the tail of the current line. However, 'Truncate Game' is now implemented by first discarding the entire variation stack, and making the current variation (after truncation) the main line, making it unusable for this purpose. This might be an undesirable implementation of 'Truncate Game'. But if you make 'Truncate Game' just act on the current variation, the problem exists that there can be
game tails pushed on the variation stack that branch off on a move after the
truncation point, and an attempt to restore them would then leave a gap in the game. I guess this could be handled by not discarding the complete stack, but just all game tails
on it that start behind the truncation point at the moment you truncate.

An alternative would be to not make the starting of a new variation automatic.
('autoTruncate mode', if you want.) Playing a move from within an existing line would then result in the old behavior of truncating the line and appending the move, rather than pushing the tail on the variation stack. A new variation could then be started, for example, by holding the Shift key down while making the move. This might provide better backward compatibility, but it is not essentially different from explicitly having 'Truncate Game'. (Just that you have to press an extra key in the opposite case.) So it will pose the same problems w.r.t. game gaps.

An alternative way to solve the gap problem is to not just push game tails, but the entire game, each time you start a variation. This could lead to an explosion of memory usage, however, if you are trying out many short variations at the end of a long game, and thus is not very elegant.

I would like to know what people think should be the desired behavior here.




reply via email to

[Prev in Thread] Current Thread [Next in Thread]