What is new in WinBoard / XBoard 4.6.0?

Engine vs. Engine

Loading a new engine at any time

The engine(s) running under XBoard used to be specified only in advance, through -fcp and -scp options on the command line when XBoard is started. (WinBoard at least had a startup dialog, where you could select engines through a combobox, displaying a list of engines configured in the settings file.) This new feature allows you to change engines during a session, (or even during a game!), through a new menu dialog.

This dialog offers the choice to select an engine from a combobox, or specify a new one. To do the latter requires you to enter the engine command (which in many cases is just the name of an executable file, to which you could browse with the aid of the browse button), and the type of engine (UCI or WB). In Linux, compliant engines don't need specification of a path or an engine directory, as they can be run from the command line by simply specifying their name. So usually you wouldn't have to specify anything for the engine directory. If you leave that field empty, and do supply the engine as a path name, XBoard will set the directory equal to the one the engine executable was in. Check boxes allow you to specify if the engine is UCI or WB v1, if it should use the GUI book, or if it can only work for a variant.

You can also tick a checkbox to have a thus specified engine be added to the list of installed engines, which, like in WinBoard, is saved in the settings file as the option -firstChessProgramNames. Unlike it used to be with the WinBoard Startup dialog, that same list is also used for selecting the second engine, though: in the dialog you can specify if you want to replace the first or second engine through another combobox. (WinBoard now has a new command-line option "-singleEngineList true|false", which also allows you to abandon the second list in the Startup dialog as well.) When you add an engine to the list, next time it will appear in the engine-selection combobox, under its 'tidy' name, possibly with the variant for which it works behind it in parantheses. It will have remembered the engine type and book-usage options, and possibly the variant.

A built-in tournament manager

Xboard now can conduct tournaments more complex than simple two-player matches. This works similar to playing a match, except that XBoard will change engines now and then, based on tourney parameters stored on a 'tournament file' (such as the list of participants, tourney type). That file also keeps track of the progress, so that starting XBoard with a -tourneyFile left over from an interrupted tournament, it will simply resume that tournament, and play it to completion. you can even start one (or more) other instance(s) of XBoard with a -tourneyFile that is still in use. In that case all the XBoard processes will share the game load, playing several games in parallel.

The XBoard Match Options dialog has been extended to allow you to enter the tournament specs. Currently you can do round-robins and (multi-)gauntlets. Swiss tournaments are implemented through an external pairing engine. You can both specify a number of games per pairing (which are played consecutively), and a number of 'cycles', i.e. repeats of the entire pairing scheme after all pairings are played. When multiple instances of XBoard are working on the same tournament, you can make them wait for each other at the end of a round or cycle. For a more elaborate description, look here.

WinBoard now also supports this through a similar dialog. Due to the inability to accept negative numbers in numeric input fields, auto-increment of the game or position index, has to be indicated by checkboxes. There are also buttons here to directly invoke the Common Engine and Time Control dialogs to enter further settings, and to read the parameters of an existing tournament file (first specified in the Tournament File field, e.g. by browsing to it) into the dialog, so you could use these for a new tourney as well. (Of course you could still change one or more of them before pressing 'OK'.) This is very useful if you often play the same gauntlet with a long list ofparticipants, to test new versions of your engine.

Interrupting a match

The latest release of XBoard added a menu item to start a match. But it did not have one to stop a match. The only way to do that was to quit WinBoard, usually causing an unfinished game to appear in the PGN file of saved games. This is now corrected. During a match, the Machine Match menu item is no longer inactive. But clicking it again will cause XBoard to shorten the number of games in the current match to the number that has actually been played, including the one in progress. So the match will terminate when the current game finishes, after which XBoard will either exit (for matches started through the command-line -matchMode option), or switch back to Edit Game mode (for matches started from the menu).

Replacing engines during a tournament

The built-in tournament manager now allows you to replace an engine in a running tournament. To this end two buttons have been added in the Tournament dialog. The way it works is that you first replace the name of the engine you want to replace by the name of the engine you want to replace it with in the Participants list of the Tournament dialog, by editing the latter. After that you can use one of the buttons to perform the substitution. With "Upgrade" the games already played by the replaced engine remain valid, and the new engine will only replace it for future games. With "Replace" all games of the replaced engine will be voided, and be replayed with the new one. You won't even have to stop the tourney to do this, as long as the engine you want to erase the games of is not playing at the moment you try to replace it.

Playing openings with reversed colors

The setting "-loadGameIndex -2" to indicate XBoard should take a new opening line from a game file every two games, in a match or tournament between engines, is now also effective in combination with the GUI book. Provided both engines do use the GUI book, specifying this option (through ticking the checkbox "Use each line/position twice" in the Tournament dialog) will cause the odd games to be extracted randomly from the book, but the following even games then to use exactly the same opening. When you play an even number of games per pairing, this game will be between the same two engines, so they will play it with the colors reversed. This will even work when these two games are played by different XBoard instances working on the same tourney.

Another interpretation of Asia rules

For perpetual-chase detection in Xiangqi XBoard had been relying on the legal-moves-only interpretation of Asia rules, where attacks or protectors are considered not to exist when you are in check, because you cannot legally capture or recapture in that case. It turns out this interpretation is not the one most commonly used. So we have switched to an interpretation where one does consider captures that leave the King in an already existing check, or recaptures that leave the King in a check that already existed before the capture (provided these are the only checks it is left in).

Interface Improvements

Detour under-promotion

The promotion popup is a necessary evil. It slows you down, but without it, using the option "Always Promote to Queen", you can no longer under-promote, which would cost you the occasional game. So you have to put up with the popup. Or have you?

Now XBoard and WinBoard have a new method for entering promotion moves, called "detour under-promotion". It replaces the option "Always Promote to Queen" in the General Options menu dialog. (The old option can still be used from the command line, when the new one is switched off.) It promotes to Queen without asking questions first, but still allows you to under-promote to a piece of your choice, using only the mouse.

The trick is that you can select the piece by not dragging a 7th-rank Pawn directly to the promotion square, but through a detour, first dragging it "backwards". As soon as you start dragging the Pawn it changes into the piece it will promote to when you release it. Normally this will be Queen (or anyway the default choice for the variant you are playing). But while you drag it backwards, it cycles through all the options: Q -> N -> B -> R -> Q -> N etc. As soon as you see the piece-of-choice appear, you reverse the direction of dragging to forward. This freezes the choice; the piece will not change even if you drag it backwards once you have started to drag forward. You can then put the piece on the promoton square. Or, when you somehow erred, put it back on the from-square, and try again. In that case it will remember the piece you selected, and start with that in stead of Queen. So you could also do a click-click move by clicking the to-square, or drag it directly forward to it.

Placing pieces on the board in Edit-Position mode

The Edit Position menu can now be replaced by 'sweep selection' of the pieces you want to place, through the option -pieceMenu true|false. With sweep selection, right-clicking a square creates a Pawn there (because that is the piece you need most of), but when you move the mouse before releasing the button, the piece on the clicked square will cycle through all available pieces, of both colors. You release when you see the piece you want. A plain right-click will start with a black Pawn, pressing the Shift key with it will start with a white Pawn.

The side to move, as indicated by the clock, can be altered by clicking on the clock of the other side, as is (and already was in previous versions) also the case when using the piece menu. But in sweep-selection mode, clicking on the clock of the side that already has the move ('highlighted' in black) will clear the board.

This manner of placing pieces is especially handy in variants, where you might need piece types that are not in the piece menu, which can only be obtained by promoting or demoting other pieces. It also protects you from placing pieces that do not belong in the currently selected variant (as specified by the -pieceToCharTable).

Figurine fonts and piece fonts

The font of the Game List in WinBoard can now be chosen separately from that of Move History and Engine Output, so that it becomes possible to choose a figurine font for the latter. (This would otherwise completely mess up the Game List.)

The WinBoard Fonts dialog now also includes the Piece Font, i.e. the font that is used for rendering the pieces on the Chess board, which formerly could only be defined by the command-line option /renderPiecesWithFont. Because there is no standardization in the way Chess fonts map characters on piece symbols, you always have to do this in combination with changing the /fontPieceToCharTable. The dialog offers you this opportunity, by allowing you to edit the sample field in the given font, so that you can sort the piece symbols of the font into canonical order (PNBRQKpnbrqk), so WinBoard knows which character to use for which piece.

The use of font-based piece rendering and board-texture bitmaps can now also be switched on or off in an easy way from the menu, by new checkboxes in the Board Options dialog. These correspond to new command-line options /useBoardTexture and /usePieceFont, which suppress the use of these features even if valid bitmap or font names are given. Before this could only be achieved by making the names invalid.

Converting PVs to SAN

Some engines show ugly PVs (in the message field above the board, or in the Engine-Output window), using long-algebraic notation. It is now possible to let XBoard convert PVs to SAN before display, on a per-engine basis, through the options -fSAN and -sSAN. This does put some extra workload on the GUI, though, having to parse each PV to extract the meaning of each move, and then convert it to SAN. You would also lose any remarks the engine writes in between its moves. So do not use it frivolously.

Zooming in on small scores in the Evaluation Graph

The vertical axis of the Eval Graph always runs from -5 to +5 Pawns, (or -15 to +15 in drop games like Crazyhouse or Shogi), with ticks at 1, 3 and 5. Larger scores are not very interesting, as the game is usually completely decided when they occur (and the graph can overshoot the axis to about +/-7 anyway). But it makes small scores occurring in the beginning of the game hard to see. An additional hindrance was that scores below a certain threshold (0.25 in absolute value) were not drawn at all in the graph, for unclear reasons.

A new option, "-evalZoom N" with integer N, allows you to blow up the range -1 to 1 by the given factor, to get better view there. Default value is 1, to mimic old behavior, but usually N=3 provides a much nicer view. In XBoard the zoom factor can be set from the General Options menu dialog. A new option "-evalThreshold S" allows you to alter the score threshold below which drawing is suppressed to S centiPawn (default 25 cP). The score/depth of the currently displayed move is now printed numerically in the title bar of the Eval Graph, and no longer in the Comment popup, so you can more easily see them (and won't be bothered by the Comment popup that much anymore).

The point of view of engine scores

Two options have been added to control the point of view of scores. With "-absoluteAnalysisScores true|false" you can control whether scores in the Engine-Output window will be displayed from a white perspective, or from the perspective of the side to move, in Analysis mode. With "-scoreWhite true|false" you can do the same for all modes. These options have only effect on printing of the scores, not on score-based adjudication, sorting order of multi-PV lines, or the Evaluation Graph (which always shows scores from the white perspective).

Quickly loading recently used engines

XBoard and WinBoard now keep track of which engines are used (as first engine at startup, or through the Load Engine dialog). This information is stored in the settings file as the string option -recentEngineList, and next time you start XBoard, this list will be displayed at the bottom of the Engine menu. When you select one of these items, the corresponding engine will be loaded as first engine, exactly like you went to Load Engine, selected it from the combobox, and pressed OK.

By default WinBoard would show the 6 most-recently used engines in the menu, in order of least-recent use. This number can be changed with the aid of the persistent option -recentEngines.

Structuring the list of installed engines (WB)

The engine list (-firstChessProgramNames, for those used to editing the ini file) upto now has always been a large, unstructured pool of engines. From now on it is possible to group the engines, by including "# GROUPNAME" and "# end" tags amongst the engine lines. These tags delimit a group of engines, and the GROUPNAME could be any text you like. (The only important thing is that it starts with a # sign.) Engines belonging to such a group will normally not be displayed in the comboboxes for selecting engines in the Load Engine and Tournament Options dialogs. In stead they will be 'collapsed' to their group tag. (End tags will always be invisible.)

A group can be 'opened' by selecting the group tag from the combobox. This does not really select anything (e.g. no engine will be added to the tourney participants when you do this). So you have to make a selection from the combobox again, but now you will see the contents of the group there, and nothing else! The group will remain selected, so you can select multiple engines from it, until you close the dialog, or select the group header (first item). In the latter case you revert back to 'top-level view' of the combo-box, as when you first entered the dialog.

This grouping can be applied recursively. I.e., you can make groups within groups.

Displaying the fifty-move counter

The number of plies since the last irreversible move (capture or Pawn push) played in engine games is now displayed in the title bar of the Engine Output window, when it gets significantly large. This way you can see more easily if the engines are heading for a 50-move draw, and how long you will still have to endure it.

Interactive Analysis

Quickly adapting the number of printed PVs in analysis mode

The number of PVs printed in multi-PV mode by engines that support the option 'MultiPV' can now be conveniently changed by clicking on the words 'fewer' or 'more' displayed in the Engine-Output window, in Analysis mode (see the "Engine Output" screenshot above). The header line printed above the engine output to make this possible also specifies if scores are displayed from the white or from the side-to-move point of view. This can be controlled by the new command-line option '-absoluteAnalysisScores true|false'. This option has no effect outside Analysis mode.

Playing PV moves in analysis mode

When the engine is analyzing (or at any other time it is thinking, like when playing or pondering) you can step through a selected PV it produced by right-clicking it in the Engine Output window, and moving the mouse. But in analysis mode, it is now also possible to add one or more of these PV moves to the game you are analysing.

When you right-click a PV in analysis mode, display of the positions along the PV will not start at the end, (as is normally done), but after the first move. You can step through the PV in the usual way, by moving the mouse with the right button kept down. But when you release that button now, the position that was displayed when you released will become the new position from which the engine will be analyzing. All moves of the PV before that will be added to the stored game, starting from the old position the engine was analyzing.

This means a simple static right-click can be used to advance exactly one move along the PV, and continue analysis from there. But by moving the mouse first, you can follow the PV much farther, in one swoop. If it was not your intention to make any of the moves at all, but you just wanted to have a peek at the PV, like right-clicking in other modes would do, you can simply move back to the beginning of the PV before releasing the mouse button.

The Shift key retains its usual meaning for entering moves: If you keep it pressed at the time of the right-click, for a position not at the end of the game, the PV moves will be added as a variation. Otherwise the game will be truncated, before adding the moves.

Null moves in Chess

When analyzing, it is sometimes useful to give the move to the other side as that really has it. For instance, if you want to know if there if the last move poses a hidden threat, you can let that side move again to reveal his plan. In analysis and edit-game mode you can now do such a null move, by clicking the clock of the side you want to give the turn to. (The old fuction of adjusting the clocks has been abolished, because you can do that now in modes where engines play by pressing Shift while clicking on the clock, and EditGame mode does not use the clocks anyway.) Pressing Shift while entering the null move will make this move start a variation, otherwise it will replace the tail of the current line (as usual). A null move will be written as "--" in the PGN file.

Annotating a game with analysis results

The item "Analyze File" in the Mode menu has been replaced by an item "Analyze Game". The original function of "Analyze File" loading a game file and starting analysis on it, had already been altered since XBoard 4.5.0. It was not really useful, as it did the same as what could also be done by first loading a game, and then switching to Analysis Mode. In stead it was made to save the analysis results as comments to the moves, during the automatic stepping through the loaded game.

But it was quite illogical to have an item in the Mode menu that would open a file; such items belong in the File menu. And being only able to do such annotation on games from files was not very flexible. The menu item that now replaces it, "Analyze Game", performs the same kind of annotation, (with engine score/depth and PV), but now on the game that is already stored, starting from the currently shown position. As you can stop the auto-stepping at any time, by switching to another mode, this means you can now limit the annotation to any selected part of the game, starting where it gets interesting.

Other New Functionality

Searching a position in a game file

XBoard now supports the possibility to filter games based on the occurrence of a given position, just as you could already filter on occurrence of a certain text in the game header. To this end there now is a new button in the Game List window, "find position". When this button is pressed, the loaded game file will be searched for the position currently shown in the board display, and only games containing this position will be dispayed in the Game List. (The filter text is also taken into account during such a search.) When you then load a game selected this way, auto-play will be suppressed, and in stead you will be automatically moved to the sought position. Selecting by header text only remains possible through the Filter (WB) / Apply (XB) buttons.

Note that searching for a position is a much slower process than searching for a header text, because all the games have to be replayed to compare their positions. For big files with tens of thousands of games, this could take appreciable time. To show progress, messages counting the number of games already processed will be shown in the title bar of the main window. XBoard will try to preprocess the games, and cache them in memory in a compressed (2 byte per move) format, to speed up subsequent searches through them. But if the file is too big, this will not work, and all searches must be conducted from disk.

Apart for selecting games by position or by an exact text match in the header line, you can now also select them by numerical comparison on the rating and date tags. Thresholds for rating and year can be set, and only games of higher-rated players or from later years will then be selected. These thresholds can be set from the Load Game menu dialog, as well as through the (volatile) command-line options -eloThresholdAny, -eloThresholdBoth, and -dateThreshold. The way positions are searched can also be set in this dialog. You can search for an exact match, but also for positions that can contain additional material on what are empty squares in the board display, or material composition with or without exact Pawn structure. There also is a mode in which you can search for material within a specified range, where you set up the material that must minimally be present in the lowe board half, and what could be present optionally next to that in the upper half. You can also require that this optional material should be balanced, so that you will only find positions with the same difference in material as what you set up in the lower board half. Position searches can be extended to also find horizontally mirrored or color-reversed positions.

Editing a Polyglot opening book

XBoard now has a very basic facility for editing opening books: tuning the move weights, or adding and deleting moves. To achieve this a book should be specified in the Common Engine Options dialog, in the Polyglot book field. (XBoard GUI books are in Polyglot format.) After this, you can use the 'Edit Book' item in the 'Edit' menu to edit it. Although primitive, this is a very useful feature, because XBoard supports many variants, and software to edit or otherwise maintain opening books for other variants than standard Chess is quite rare.

Edit Book will pop up a small window, that contains all moves from the current position that are found in the book, as a table in text format. Each line will display the move weight (as percentage of total, and the absolute number), and the move. You can then alter the weights (the percentages are ust to aid the eye; they are not really used), delete lines,or add lines with new moves in the same format. After you are done, you can write the information back to the book by clicking 'OK'.

As long as the Edit Book window is open, its contents will be updated while you step to other positions of a loaded game or variation, or when you play or retract moves.

The PGN Number tag

A (persistent) Boolean option -pgnNumberTag has been added to enable writing a Number tag in PGN files saved during a tourney, containing the (unique) sequence number of the game within that tourney. This number corresponds to the one used in the debug file name, so the correct debug file for the game can be easily found.

A separate debug file for every tourney game

XBoard and WinBoard normally use one debug file for an entire session. But now it is possible to let them create a separate debug file for each game in a tournament. All you have to do is request a -debugfile name that contains %d in it. XBoard will then replace this %d by the sequence number of the game, and continue using that new file to write the debug information on. E.g. using -debugfile "debugs/game%d.txt" will create files game1.txt, game2.txt etc. in the directory 'debugs' (which must pre-exist!).

XBoard -> WinBoard Convergence

Copying the gamelist to the clipboard

The menu entry Copy Game List to Clipboard" so far was missing in XBoard. This patch corrects that state of affairs. In the Edit menu of XBoard there is now an entry similar to that of WinBoard, which copies the Game List to the clipboard and primary selection.

Like in WinBoard, it copies all selectable fields of each game, irrespective of the setting of the game-list options for tag order. It uses the same format as WinBoard, a comma-separated list of double-quoted strings, which makes it easy to import in most spread-sheet programs. A difference with the WinBoard implementation is that it does pay attention to the Filter field, and only includes those games that are displayed in the Game List window based on that selection.

Typing in a move

XBoard now has a move type-in just like WinBoard. When the board window has focus, typing any printable character will pop up a type-in box, aready containing the character you typed, where you can finish typing a move, or a move number. The move you type will be played like you entered it with the mouse. Typing a move number will make you go to that move, like you operated the < or > buttons, or clicked the Evaluation Graph.

In Edit Position mode, you can also type a FEN. In this case the corresponding position will be set upon the board, and you will leave Edit Position mode. All input has to be terminated by <Enter>, which will close the box. Hitting <Esc> will close the box ignoring the input.

New-style move-history window for XBoard

XBoard now has a Move History window similar to that of WinBoard, which displays the game in free-format PGN style. This means that score-depth info can now be printed in PGN comment style between the moves, through the option "-showEvalInMoveHistory true|false", wich can also be set from the General Options dialog. Of course clicking on the moves will still bring up the corresponding position on the board, as usual. Apart from being a step in the XBoard -> WinBoard convergence, this "landscape" style Move History is preferred over the old "portrait" format, for more natural tiling of the various widows.

Associating file types with icons and actions

New in the installation of XBoard 4.6.0 is that it now causes several mime types to be associated with XBoard, and will define icons for them. This means that clicking a PGN file with games in it will now automatically launch XBoard as game viewer. A control is added in the Load Options dialog, where the user can further configure what he wants XBoard to do when viewing games. E.g. whether a Chess engine should be involved for analysis, and if so, which one. Similarly, clicking a FEN file with Chess positions will start XBoard as position viewer.

A third file type which will be associated with XBoard are TRN tournament files. These files are created when you start an engine tournament throught the Match Options dialog. When you click on them, XBoard will be launched to play on that tournament. This makes it really easy to let multiple instances of XBoard work for the same tourney, playing the games in parallel.

Dragging all windows as a unit

The option -stickyWindows, known from WinBoard, now also works in XBoard. An checkbox in the General Options menu dialog was added to switch it on or off. With this option, auxiliary windows (Game List, Engine Output, Move List and Eval Graph) which touch the main window will move together with it when the latter is dragged over the screen. Such 'docked' windows will also be repositioned and resized as needed to preserve their tiling relationship with each other and the main window, whenever the latter changes size because of a variant change.

Whether this feature works can depend on your system's window manager. XBoard will order the repositioning of the windows as needed, but this obviously can only have the desired effect if the window manager actually obeys such orders. Some window managers don't, so it might be that this feature does not work at all, or causes erratic behavior. The best solution in that case is to leave it switched off.