e57e4e66aee90457703f6943ed22db715ca0372b
[xboard.git] / whats_new / 4.8.0 / index.html
1 <!--#include virtual="/server/html5-header.html" -->
2 <title>XBoard - GNU Project - Free Software Foundation - NEWS</title>
3 <!--#include virtual="/server/banner.html" -->
4 <!--#set var="article_name" value="/server/standards/boilerplate" -->
5 <!--#include virtual="/server/gnun/initial-translations-list.html" -->
6
7 <h2>What is new in WinBoard / XBoard 4.8.0?</h2>
8 <table cellpadding="20"><tr valign="top"><td>
9
10 <a href="#tag-A"><h4>New features for the next release</h4></a>
11 <ul><li>
12 <a href="#tag-A5">Resuming saved unfinished games</a>
13 </li><li>
14 <a href="#tag-A6">Setting up positions more easily</a>
15 </li><li>
16 <a href="#tag-A7">Bitbase adjudication</a>
17 </li><li>
18 <a href="#tag-A8">Showing tablebase hits</a>
19 </li><li>
20 <a href="#tag-A9">A new ICS window</a>
21 </li><li>
22 <a href="#tag-A10">Recalling board themes (XB)</a>
23 </li><li>
24 <a href="#tag-A11">Playing moves by clicking them</a>
25 </li><li>
26 <a href="#tag-A12">Fonts in the XBoard GTK build</a>
27 </li><li>
28 <a href="#tag-A13">Using the mousewheel (XB)</a>
29 </li><li>
30 <a href="#tag-A15">Displaying a blunder graph</a>
31 </li><li>
32 <a href="#tag-A14">Slicing up a PGN database</a>
33 </li><li>
34 <a href="#tag-A16">Auto-install of engines</a>
35 </li></ul>
36
37 </td><td>
38
39 <a href="#tag-B"><h4>New variant support</h4></a>
40 <ul><li>
41 <a href="#tag-B1">ASEAN Chess</a>
42 </li><li>
43 <a href="#tag-B2">Chu Shogi</a>
44 </li><li>
45 <a href="#tag-B3">Mighty Lion</a>
46 </li><li>
47 <a href="#tag-A2">Highlighting squares on engine command</a>
48 </li><li>
49 <a href="#tag-A3">Let the engine finish a user move</a>
50 </li><li>
51 <a href="#tag-A4">Non-standard variant names</a>
52 </li><li>
53 <a href="#tag-B4">Fischer castling in any variant</a>
54 </li><li>
55 <a href="#tag-B5">Knowing the moves of unknown pieces</a>
56
57 </li></ul>
58
59 </td><td>
60
61 <img src="../4.5.0/winboardF.png">
62   <p>
63     <a href="../4.8.0/index.html">Follow-up</a>
64   </p>
65   <p>
66     <a href="../4.7.0/index.html">Preceding release (4.7.0)</a>
67   </p>
68   <p>
69     <a href="http://hgm.nubati.net/news.html">Experimental and future stuff</a>
70   </p>
71 </td></tr></table>
72
73 <a name="tag-A"><h2>The following features are new in XBoard 4.8.beta:</h2></a>
74
75 <h3><a name="tag-A5">Saving the clock settings with the game</a></h3>
76 <p>
77 When a (local, i.e. non-ICS) game still in progress is interrupted and saved,
78 e.g. because you use the 'Abort' menu item, or close XBoard,
79 it now saves the clock settings of white and black in the result comment.
80 When you load an unfinished game with such saved times in it,
81 it automatically restores the clocks to the values that were saved.
82 This makes it easier to resume such a game.
83 </p>
84
85 <table cellpadding="20"><tr><td valign="top">
86 <h3><a name="tag-A6">Setting up positions</a></h3>
87 <p>
88 In Edit Position mode the board can be cleared by clicking on the clock, or through a piece-menu item.
89 Upto now this irreversibly destroyed whatever position existed before.
90 This has now been changed:
91 by repeatedly issuing the clear command, the position can be made to cycle through the states
92 old position, empty board, 'piece palette', initial position, old position, etc.
93 This makes it possible to recover from an accidental clear command.
94 </p><p>
95 The 'piece palette' position has each back-rank piece occurring exactly once,
96 removing all duplicates from the initial position.
97 So for orthodox Chess only the pieces on a1-e1 and a8-e8 stay.
98 The idea is that this is a much more convenient starting point for setting up arbitrary poitions than an empty board:
99 the pieces that were left can be used as a kind of tool bar from wich you can draw the pieces you need,
100 to put them in the desired place.
101 Pieces that you don't need can be dragged off board to get rid of them,
102 pieces you only need once can be simply moved to the desired location,
103 and pieces you need twice can be duplicated by moving them with the Ctrl key pressed.
104 Pawns, finally, can be created by static right- or middle-clicks on the squares were you want them
105 (pressing Shift to swap the colors for those who do not have a middle mouse button, as usual).
106 The 'piece pallette' thus is an especially convenient starting point for setting up positions with an intermediate number of pieces,
107 where you would have to 'create' too many pieces when starting from an empty board,
108 and remove too many when starting from the initial position.
109 </p>
110 <p>
111 Clicking an already selected piece a second time in Edit Position mode used to make it disappear.
112 This was more an annoyance than a feature, as it often happened by accident,
113 and it then required multiple mouse clicks to get the piece back.
114 There are plenty of other ways to remove a piece, like drawing it off board,
115 or moving an empty square on top of it.
116 So the second click on a piece is now used as a signal to promote or demote it,
117 which is very useful in Shogi-like variants, where all pieces can promote,
118 but the promoted versions are usually not present in the 'palette',
119 as the latter is derived from the opening position.
120 </p>
121 </td><td valign="top">
122 <img src="PiecePalette.png">
123 </td></tr></table>
124
125 <h3><a name="tag-A7">Quickly finishing dead-drawn games</a></h3>
126 <p>
127 In the late end-game (with 5 or fewer men on the board) of orthodox Chess
128 there are nowadays tables available that show whether the game can be won against best defense (bitbases),
129 and sometimes even how (tablebases).
130 Engines that use tablebases can play instantly in such won or lost positions,
131 as they can just play the best move indicated in the tablebase without any further search.
132 When they get into a position that is a theoretical draw, however, they might still think as long as always.
133 The tablebase does not make any distinction between draws that are 'nearly won' and those that are 'nearly lost',
134 so that just playing one of the moves listed as draw will quickly blunder away
135 any chances the engine might have had to win against imperfect defense.
136 E.g. in a KBPPKB draw with unlike Bishops, the tablebase would not tell the engine that sacrificing BPP on the first 3 moves is not a good idea.
137 So it is important to give the engine some time to select the reasonable drawing move and reject pointless sacrifices,
138 in order to keep a fallible opponent under pressure.
139 <p></p>
140 Very deep searches are hardly helpful, however, as the tablebase already guarantees us there is nothing to find.
141 Just not blundering away material, and striving for good mobility, centralization and advancing of passers,
142 while hoping for an opponent blunder
143 (which the tablebase will then of course immediately recognize as a win)
144 is usually sufficient.
145 It is especially very annoying when two engines, both using tablebases,
146 so that you know they can never blunder away the draw,
147 don't want to agree to the inevitable draw (because of their contempt setting),
148 but go on for 50 moves (or several times 50 moves, when they can drag it out with Pawn moves)
149 in a futile attempt to swindle their opponent
150 <p></p>
151 XBoard now has an option to avoid this,
152 without corrupting test results for engines that do not use tablebases
153 by awarding them wins they would never be able to find themselves,
154 (just because XBoard's tablebase says they are wins),
155 or awarding them draws that they would not be able to hold on their own.
156 This new option <b>-first/secondDrawDepth N</b> can be installed with engines that use tablebases,
157 to limit their search depth to the given N, and thus speed up their play to near instancy (e.g. with N=3).
158 This should not hurt them, as their use of tablebases guarantees they will never lose the draw,
159 and never miss a win after an opponent blunder.
160 When two such engines, both installed with the option, reach a drawn position,
161 the game will end almost instantly, by playing as many moves as needed to reach a 50-move or repetion draw.
162 If only one of the engines uses tablebases and is installed with the option,
163 that engine would play instantly the drawing move that is best according to its 'intuition',
164 but the other engine would be forced to prove its worth,
165 by showing it can find the moves to secure the draw.
166 And when the latter engine is in a won position, the option would be ineffective,
167 but the tablebase user should be able to instantly play the best defense anyway,
168 letting its opponent show he is able to win against that.
169 <p></p>
170 To allow the option to work, XBoard can now interface to Scorpio bitbases.
171 To this end it must know the path to the bitbase files,
172 defined as "scorpio:PATHNAME" as (comma-separated) element in the -egtFormats option.
173 In WinBoard this option can be set through the "Nalimov path" textedit in the Common Engine Options dialog
174 (and will be distingushed from a true Nalimov path by the "scorpio:" prefix).
175 When the list of -egtFormats includes a "scorpio" specification,
176 the DrawDepth options will cause them to be probed when there are 5 or fewer orthodox Chess men on an 8x8 board,
177 and an 'sd N' command will be sent to the corresponding engine just before it receives a move,
178 in order to retrict its search depth.
179 </p>
180
181 <h3><a name="tag-A8">Showing or hiding engine output</a></h3>
182 <p>
183 XBoard used to preceed the PVs printed by the engines always with 4 colums:
184 search depth, score, time and number of nodes searched.
185 The protocol specs have now been extended to allow engines to also send selective depth, speed (knps) and tablebase hits,
186 and for engines that send those, there can now be 7 columns of numeric data before the PV in the Engine Output window.
187 (And because the latest Polyglot implements this protocol extension, this will include all UCI engines!)
188 </p>
189 <table cellpadding="20"><tr><td valign="top">
190 <img src="TBhits.png">
191 </td><td valign="top">
192 <p>
193 It can be annoying to have so many columns eating away space for the PV, however.
194 Especially with data you might not want to see, or the engine might not even print.
195 So and option -memoHeaders has been added with which you can print headers above the columns.
196 Right-clicking these headers can then show or hide the corresponding column.
197 Only the depth and PV will always be displayed.
198 </p>
199 </td></tr></table>
200
201 <h3><a name="tag-A9">Combining ICS output, Input Box and Chat Window in the GTK version</a></h3>
202 <p>
203 XBoard always printed the communication with the ICS in the terminal from which it was launched.
204 This x-terminal allowed colorization of the ICS messages by kind,
205 something that was not possible in the Athena widgets of XBoard's own dialogs.
206 In GTK it is possible to color text line by line in a text edit, though.
207 So XBoard now also displays this text in a dialog of its own.
208 Once this feature is fully developed, the x-terminal will be abandoned.
209 </p>
210 <p>
211 The solution that has been chosen combines the ICS Input Box,
212 the Chat Window and the new ICS Output widget into a single window.
213 Normally this will contain a large output pane to display the (colorized) ICS output,
214 with an input field (the old ICS Input Box) below it.
215 Anything you type there will then be sent to the ICS.
216 There is a row of buttons at the top of the window, however,
217 which you can use to open a Chat.
218 Pressing them divides the window into two panes,
219 the ICS output going to the upper one, while the lower one will be dedicated to one particular chat.
220 The Chat Partner can then be entered above the chat pane (a player name, channel number or message type),
221 after which all messages from that source will be diverted to that pane.
222 The Input field at the bottom of the window will be sent as a message to the designated Chat partner
223 (prefixed with the appropriate tell, xtell or shout command).
224 To give ICS commands again, you will have to hide the Chat pane by pressing the Hide button above it.
225 </p>
226 <p>
227 You can assign five dedicated chat windows this way,
228 navigating between them with the buttons at the top of the window.
229 If there is activity in one of the windows that is not currently displayed,
230 the corresponding button will turn orange.
231 </p>
232 <p>
233 This new ICS Interaction window can be controlled from the keyboard:
234 Typing &lt;Tab> in the input text entry will navigate between busy chats
235 (opening the chat pane if necessary)
236 starting with those that have been active since you last saw them.
237 Typing &lt;Esc> wil hide the chat pane, so you can start entering ICS commands.
238 If the chat pane was already closed, it will transfer focus to the board window,
239 so you can exercise menu functions by typing accelerator keystrokes.
240 Typing printable characters when the board has focus will automatically
241 transfer that focus to the input field of the ICS window again,
242 making it pop up if necessary.
243 (The latter can be controlled by the option -autoBox true|false.)
244 Typing Ctrl-N will navigate to an idle chat (or chat nr 5 if there is none),
245 giving focus to the 'Chat partner' entry so you can assign it.
246 Typing Ctrl-O will similarly navigate to an idle chat,
247 automatically assigning it to the origin of the latest message you received in the ICS pane,
248 allowing you to easily answer it.
249 </p>
250 <p>
251 The ICS pane has a context menu similar to WinBoard's:
252 when you right-click a word in it, the ICS Text Menu dialog pops up under your mouse,
253 and you can select commands from it that would automatically incorporate the clicked word.
254 Such as challenching a person, opening a chat for a person, channel or shouts.
255 Note that the ICS Text Menu is user-configurable through the -icsMenu option
256 in your ~/.xboardrc file.
257 </p>
258 <p>
259 The general handling of chats has also been improved a bit:
260 broadcasts by a person will also appear in a private chat you have open for that person,
261 clearly marked as broadcasts.
262 That will not suppress the appearance of the broadcast in the chat
263 you have open for that channel, or the ICS pane.
264 </p>
265
266 <table cellpadding="20"><tr><td valign="top">
267 <img src="NewChat.png">
268 </td><td valign="top">
269 <img src="NewICS.png">
270 </td></tr></table>
271
272 <h3><a name="tag-A10">Storing board settings, and recalling them with a mouse click</a></h3>
273 <p>
274 The View->Board dialog of XBoard allowed the user to interactively set piece and square colors,
275 define board textures or alternative piece images, and other graphical board roperties.
276 But if many settings had to be changed in order to, say,
277 change from a theme suitable for Chess to one for Xiangqi,
278 the user had to do that for each of them separately.
279 In WinBoard an entire set of properties defining the board look could be saved as 'theme'.
280 XBoard now also has that feature.
281 The themes are saved in the settings file as a persistent multi-line option -themeNames,
282 and will be displayed in a listbox that has been added to the View->Board dialog.
283 The user just has to click a theme name there to recall all settings defining that theme.
284 New themes can be created by defining a name for it in a textedit under this listbox,
285 and OK-ing the dialog when such a name has been entered saves the currently specified board look as this theme,
286 so that it can be recalled from the listbox later.
287 </p>
288
289 <img src="ThemesXB.png">
290
291 <h3><a name="tag-A11">Playing moves by clicking them in a text window</a></h3>
292 <p>
293 XBoard already supported the possibility to play moves from the Engine Output window
294 in analysis mode, by right-clicking on the PV they were part of.
295 This was integrated with the possibility to walk through the PV
296 by moving the mouse with the right button kept down,
297 using the main board as a 'variation board'.
298 This way you could even play a number of moves of the PV.
299 The PV-walk in analysis mode started at the position after the first move of it,
300 so that a static click would play that move.
301 If you would move to another position along the PV before releasing the button,
302 then all moves upto that position would be played,
303 and analysis would continue there.
304 </p>
305 <p>
306 This could be a bit confusing for people that often wanted to walk through alternate PVs.
307 (To walk the latest PV you can right-click the board, which never plays a move.)
308 They would have to make sure to return to the start of the PV before releasing the button,
309 in order not to play unwanted moves.
310 Therefore the 'auto-extend' option could be used to disable this feature.
311 This control over when to add moves as a result of PV clicking has now been improved:
312 In WinBoard the auto-extend option can be set interactively from the General Options dialog.
313 Furthermore, playing of move(s) is only ever done when you clicked the first move of the PV
314 (or the data left of it).
315 When you click the remainder of the PV,
316 you can walk it without having to worry whether this will alter the position.
317 </p>
318 <p>
319 The Edit Book window now has a similar feature:
320 right-clicking a move from the displayed list of book moves there
321 will now also cause the move to be performed.
322 It now also has the reverse feature:
323 with a button in this window you can tell XBoard that
324 the next move you are going to play on the board should not really be played,
325 but added to the book (with a default weight of 1).
326 </p>
327
328 <table cellpadding="20"><tr><td valign="top">
329 <h3><a name="tag-A12">Fonts in the GTK build</a></h3>
330 <p>
331 So far the font options were ignored in XBoard's GTK build.
332 Now their number is even expanded:
333 next to the existing -clockFont, -messageFont and -coordFont there are now
334 -icsFont, -tagsFont, -commentFont, -moveHistoryFont and -gameListFont.
335 Font specifications are not compatible between Xaw and GTK;
336 for the latter they have to be described by names like "Sans Normal 10"
337 or "Monospace Bold 8".
338 To let XBoard pick a font size it considers suitable for the board size,
339 use %d in stead of a hard number (like "Sans Italic %d").
340 </p>
341 <p>
342 The icsFont is used in the ICS pane of the ICS console, and should be a mono-spaced font.
343 The moveHistory font is used in the text memos of both Move History and Engine Output dialog,
344 to give you the opportunity to use a figurine font in those
345 for displaying the moves that are printed there.
346 The gameListFont is used in the listbox of the Game List;
347 when you often use large PGN files you might want to have an extra small font there.
348 The messageFont currently only affects the row of widgets directly above the board:
349 the message field where the latest PV is displayed,
350 and the buttons of the button bar to navigate through the game.
351 It must be used to prevent these from dominating the width of the board window
352 at small square sizes.
353 The tagsFont and commentFont similarly affect the text memos in the
354 Edit Tags and Edit Comment dialogs, and are mainly supplied because WinBoard has those too.
355 </p>
356 </td><td valign="top">
357 <img src="FontGTK.png">
358 </td></tr></table>
359
360 <h3><a name="tag-A13">Using the mousewheel to step through the game</a></h3>
361 <p>
362 WinBoard already had this, but in XBoard you can now also use the mousewheel
363 to step through the current game,
364 when the mouse pointer is above the board, irrespective of whether it has focus.
365 (This according to GTK custom; in WinBoard it would work when the board had focus,
366 irrespective of where the mouse was pointing.)
367 </p>
368
369 <table cellpadding="20"><tr><td valign="top">
370 <img src="Blunder.png">
371 </td><td valign="top">
372 <h3><a name="tag-A15">Enhanced funcionality of the Evaluation Graph</a></h3>
373 <p>
374 A new mode of displaying engine analysis of an entire game has been added,
375 the so called blunder graph.
376 In this mode the Evaluation Graph does not display the evaluations itself,
377 but the difference in evaluation on subsequent moves.
378 (This only makes sense when the evaluations come from the same engine,
379 such as after the use of Analyze Game.)
380 This way poor moves, which cause a jump in evaluation, stick out more visibly.
381 </p>
382 </td></tr></table>
383 <p>
384 To toggle between normal evaluation display and blunder graph,
385 you can right-click anywhere in the Eval Graph window.
386 (Left-clicking still brings you to the move you click.)
387 The mouse wheel can now be used on the Eval Graph to zoom the [-1, 1] score range,
388 which formerly would allow only non-interactive control through the -evalZoom
389 command-line option.
390 </p>
391
392 <h3><a name="tag-A14">Selecting from a PGN database</a></h3>
393 <p>
394 There is a new item in the File menu: Save Selected Games.k
395 This will cause all games currently selected for display in the Game List
396 (through applying a text filter, or using the Find Position button)
397 to be appended to a file.
398 The number of pieces in the final position has been added as a search criterion.
399 The 'Save Games as Book' function will now also only take the games
400 selected for display into account.
401 This should offer you more control over what you include in the book.
402 </p>
403
404 <h3><a name="tag-A15">Automatically adding new engines to XBoard's engine list</a></h3>
405 <p>
406 To efficiently use engine, e.g. being able to select them from the Load Engine dialog's listbox,
407 or as tournament participant, the engine had to be first installed in XBoard's engine list.
408 Just installing the engine package on your machine was not enough.
409 This has now been changed, with the aid of a new Linux standard for 'AI plugins'.
410 Engines compliant with this standard will install a tiny file to announce their presence
411 in a system's standard plugin directory for the communication protocol they understand.
412 GUIs that support that protocol can then hunt for new arrivals there,
413 and the file will contain the essential info needed to run the engine.
414 (E.g. the command needed to launch it for use with that protocol.)
415 </p>
416 <p>
417 XBoard now has a persistent string option -autoInstall, which activates this feature when set to a non-empty string.
418 Any time XBoard is launched it will then examine the contents of the plugin directories for XBoard and UCI protocol,
419 and if it finds any engines there newer than the the persistent settings file
420 (meaning this user sees them for the first time)
421 it will add the required command to its engine list.
422 In the future the standard will be further developed so the plugin files will also contain information
423 on what variants the engine plays,
424 so that the user can filter these automatic installs by the value set for the -autoInstall option.
425 E.g. -autoInstall "shogi,xiangqi" would only automatically install new engines that play Shogi or Xiangqi,
426 and ignore engines that play only Chess.
427 </p>
428 <p>
429 XBoard also supports a new standard for engine logos:
430 engine packages can install a png image derived from their name (e.g. fairymax.png)
431 of their logo in a standard plugin-logos system directory.
432 XBoard's -autoLogo option now also searches for engine logos in those standard places,
433 after having tried the configured -logoDir and the directory specified for the engine
434 (with -fd or -sd options; it searches for a file named logo.pgn there).
435 For user logos it will also try ~/.logo.png.
436 </p>
437
438 <a name="tag-B"><h2>New variants and general variant support</h2></a>
439
440 <h3><a name="tag-B1">ASEAN Chess: a new Chess variant</a></h3>
441 <p>
442 ASEAN Chess is a synthesis of Makruk and other South-East Asean Chess variants.
443 It is very similar to Makruk, the main difference being that the count rules are simpler
444 (but WinBoard did not implement these anyway),
445 and that promotion is only on last rank.
446 This is now added as a new supported variant to XBoard.
447 </p>
448
449 <h3><a name="tag-B2">Chu Shogi</a></h3>
450
451 <p>
452 Chu shogi is an ancient form of Japanese Chess on a 12x12 board, which was already documented in the year 1250.
453 It has been the dominant form of Chess in Japan for many centuries, and is still quite popular,
454 although it has been overtaken in popularity by the 9x9 game with piece drops in recent times.
455 As there are no piece drops in Chu Shogi, it has a much more Chess-like feel than the modern game.
456 </p>
457 <table cellpadding="20"><tr><td valign="top">
458 <p>
459 Like other large Shogi variants, Chu Shogi is characterized by a very large number of piece types.
460 Not only are there 46 pieces (12 of them Pawns) of 21 different types in the initial setup,
461 but almost all pieces promote on reaching the last 4 ranks, often to pieces that move differently from all initially present pieces.
462 (And even if they move the same, they are formally still different piece types, as they cannot promote a second time.)
463 To implement a game with so many piece types in XBoard was a challenge,
464 as upto now XBoard supported only 22 piece types (11 'basic' types, asn 11 promoted types).
465 This has now been extended to 44, Chu shogi considering all 22 existing types as 'basic',
466 and adding 22 new 'promoted' types.
467 (Not all of those are needed in Chu shogi, though, so they don't have all been assigned new piece graphics.)
468 A Chess-like representation was chosen, to make it possible to use the existing piece symbols.
469 (The Japanese of course play this game with kanji pieces,
470 which are also available for XBoard in SVG format.)
471 </p>
472 <p>
473 Another issue was the Lion piece, which has a special two-step move,
474 not uniquely characterized by a from- and to-square, but also needing an intermediate square,
475 where it can capture a second piece in an en-passant-like fashion.
476 This required quite some enhancements in XBoard;
477 more about that below.
478 Although XBoard is aware of all the piece moves,
479 it does not implement the more subtle details of the Chu Shogi rules,
480 and has to on the engine (e.g. <a href="HaChu.html">HaChu</a>)
481 for more accurate judging move legality and highlighting target squares.
482 So it is advisable to play this game with legality testing off.
483 </p>
484 </td><td valign="top">
485 <img src="XChu.png">
486 </td></tr></table>
487
488 <table cellpadding="20"><tr><td valign="top">
489 <img src="Mighty.png">
490 </td><td valign="top">
491 <h3><a name="tag-B3">Mighty-Lion and Elven Chess</a></h3>
492
493 <p>
494 To make the Chu-Shogi Lion a bit more accessible to Chess players,
495 a newly designed variant 'Mighty-Lion Chess' was added to XBoard.
496 This uses the Lion as the only unorthodox piece added to the FIDE game,
497 so that it is possible to enjoy an introduction to this piece without having to learn about the plethora of new pieces in Chu Shogi.
498 In this variant the Knights on the Queen side are simply replaced by Lions.
499 </p>
500 <p>
501 The simplest way to view the Lion is as a piece that moves as a King, but then twice per turn,
502 freely changing direction between steps.
503 And if such a two-step path would be blocked, it can jump to the final square directly.
504 This way it has 24 unblockable moves.
505 It can capture something in each of its steps, so upto two pieces per turn:
506 one in the conventional way, but the other by passing through it, leaving the square empty.
507 It could, however, also elect to make only a single step.
508 XBoard highlights the squares from which a continuation step would be possible in cyan, when you pick up the Lion.
509 (It is essential that the option 'Show Target Squares' is on in this game.)
510 If you put down the Lion on such a cyan square, XBoard will not consider that the final destination,
511 but remembers it as a square the Lion should pass through,
512 and highlights the squares you can reach with the second step.
513 Clicking on one of those (which might include the clicked cyan square) then finishes the move.
514 </p>
515 <p>
516 Like in Chu Shogi there are rules against trading the Lions
517 (to prevent you would quickly be left with a game of normal Chess).
518 Basically they forbid two Lions to be captured in consecutive half-moves:
519 a Lion cannot capture a Lion if recapture is possible,
520 and when a non-Lion captures a Lion the opponent Lion is invulnerable ('iron') on the next half-move.
521 That makes trading the Lions away a very uncommon occurence.
522 </p>
523 <p>
524 For those that want even more excitement:
525 the same Lion piece also features in the newly added Elven Chess,
526 next to three other new pieces on a 10x10 board.
527 </p>
528 </td></tr></table>
529
530 <h3><a name="tag-A2">Colored board markers applied by the engine</a></h3>
531 With the option 'Show Target Squares', XBoard can be made to mark board squares where the 'lifted' piece can move to
532 by fat yellow (non-captures) or red (captures) dots.
533 This obviously can only work when XBoard knows the rules for moving the pieces,
534 i.e. when legality checking is switched on.
535 When the latter is switched off, XBoard cannot know how the pieces move
536 (as the only reason to switch it off would be that pieces do not move as XBoard thinks they should,
537 to prevent move being rejected as illegal),
538 and this feature does not work.
539 </p>
540 <p>
541 There now is the possibility to restore this functionality with the help of an engine.
542 Engines of course always will have to be fully aware of the rules of the game they play
543 (or they would play illegal moves themselves).
544 So they also know where a lifted piece can move to.
545 Problem is that upto now they would not know which piece is lifted,
546 as XBoard only sends them the move after the piece has been put down again.
547 To remedy this, an extension of the communication protocol has been defined.
548 </p>
549 <p>
550 Engines that want to make use of this new feature can inform the GUI of this by sending a new 'feature heighlight=1' at startup.
551 The GUI will then inform them any time the user grabs a piece for dragging (or selects it by a static click),
552 by sending it a 'lift' command with the square coordinates.
553 The engine can reply to this command with a 'highlight' command, which specifies which board squares have to be marked
554 with colored dots, of eight different colors.
555 When the engine does this, the GUI can use the markers to decide if the move the user makes when he puts the piece down is legal,
556 without first sending it to the engine and wait if it is rejected or not:
557 any move that does not land on a marked square will be considered illegal.
558 But the color of the square the piece lands on will be used to trigger special GUI actions.
559 E.g. moving to a purple square will make the GUI assume the move is a promotion,
560 and invoke the promotion popup (or trigger sweep promotion),
561 even when it would otherwise not think so.
562 This way engines can more flexibly implement variants the GUI knows nothing about,
563 by modifing the GUI behavior through the color markers.
564 </p>
565
566 <h3><a name="tag-A3">Let an engine click squares on behalf of the user</a></h3>
567 <p>
568 Another feature helpful in implementing strange variants is the 'click' command an engine can send to the GUI.
569 This command will contain square coordinates, and the GUI should react to it as if the user would have clicked on the mentioned square.
570 The engine can use this in response to the 'lift' command to implement one-click moving,
571 even when the GUI has no idea what the rules for moving pieces are, and thus cannot know it.
572 </p>
573
574 <table cellpadding="20"><tr><td valign="top">
575 <h3><a name="tag-A4">Engine-defined variant names</a></h3>
576 <p>
577 Although XBoard knows many different Chess variants, there are far more it doesn't know.
578 It still can play many of these, by using the board-size overrules in the New Variant dialog,
579 providing a start position fitting for this new board size,
580 telling it which pieces participate, and how they are indicated in move and position notation,
581 and switching legality checking off, so it doesn't complain if we use pieces in ways they were not intended.
582 This requires a lot of massaging by the user, though.
583 </p>
584 </td><td valign="top">
585 <img src="Defined.png">
586 </td></tr></table>
587 <p>
588 The engine can now be made to do most of this.
589 For one, the engine is allowed to use arbitrary names for variants, in the variants feature it sends as startup.
590 Even names that XBoard doesn't recognize will now appear in the New Variant dialog,
591 so the user can select them.
592 If the engine is set to play such an 'engine-defined' variant,
593 it should (in reply to the 'variant' command) tell the GUI the specifics of this variant.
594 The 'setup' command that has been added to the communication protocol will provide this information.
595 The engine can use it to define board format and holdings size, participating pieces, initial position,
596 and the 'parent variant'.
597 The latter must be a variant that is known to XBoard,
598 and it will switch to that (but using the redefined board and setup) for playing the game.
599 In an engine-engine game only the first engine will be listened to,
600 and the initial position will be loaded into the second engine (to allow for shuffle games with random initial position).
601 </p>
602 <p>
603 This means that almost everything the user had to configure to play a non-standard variant now can be done automatically by the engine.
604 The only thing the user still has to do is control whether legality checking is on or off.
605 (Some variants, although non-standard, use only pieces that XBoard knows, and those can be played with legality checking on.)
606 </p>
607
608 <h3><a name="tag-B4">Fischer castling outside Chess960</a></h3>
609 <p>
610 Upto now the ability to castle with Rooks not in a corner, or Kings not on the central files
611 was a unique ability of FRC and (on 10x8 board) CRC.
612 This made it impossible to combine this kind of castling with rules that were unique to other variants,
613 such as for example gating of pieces onto the board, as in Seirawan Chess.
614 XBoard now has an option -fischerCastling, which can be used with any variant, to allow Fischer castling there.
615 This complements the already existing option -shuffleOpenings, which could be used to play any variant in a shuffle version.
616 The shuffling respects the castling rules, though.
617 So variants without Fischer castling would leave King and Rooks in place.
618 But when Fischer castling is allowed, either natively or by use of the new option,
619 the only restriction is that the King will remain between the Rooks.
620 This makes it possible to configure XBoard for Seirawan960.
621 In XBoard the -fischerCastlings setting can be controlled from the New Shuffle dialog.
622 </p>
623 <p>
624 Another new feature is in the reading of FENs.
625 Back-rank pieces can now be enclosed in &lt;>, to indicate that they should not be placed as the FEN specifies,
626 but that they should be shuffled first.
627 It will be deduced from the specified placement (before shuffling) and castling rights whether Fischer castling should be assumed.
628 Another symbol in such "meta-FENs" is the question mark.
629 If it is used together with a specified holdings,
630 it indicates a piece should be selected at random from the holdings,
631 and then placed at the location of the question mark.
632 This van be used to specify the starting position of Seirawan2880,
633 where one of the three Queen, Elephant or Hawk will be on the board initially,
634 and then shuffled with the other pieces in 960 possible ways.
635 </p>
636
637 <h3><a name="tag-B5">Letting the engine configure the GUI's move generator</a></h3>
638 <p>
639 XBoard protocol has been extended with a command to tell the GUI how pieces move.
640 This allows XBoard to become fully aware of the rules of games it never heard of,
641 even when these involve pieces that are not amongst the 22 standard piece types it has built-in support for.
642 Formerly variants involving such pieces could only be played with legality testing off,
643 which would also disable the 'show target squares' option to show the user where the piece he grabs can move to.
644 And imagining wrong moves for a piece would also generate lousy move notation (SAN),
645 with missing or spurious disambiguation,
646 and cause inaccurate mate detection.
647 When the engine sends 'piece' commands at the start of a game to (re)define the piece moves,
648 all that functionality is restored.
649 Legality testing will still have to be switched off (or the piece definitions would be ignored),
650 but even then 'show target squares' would work, and XBoard would test move legality,
651 the GUI acting as a proxy for the engine.
652 No sense in sending a move to the engine of which the engine told you in advance that it will reject it,
653 so that the GUI would only have to take it back, after all.
654 </p>
655
656 <h3><a name="tag-C">Fixed bugs</a></h3>
657 <ul>
658   <li>
659         Fix crash on using some Browse buttons in dialogs of the GTK build.
660   </li>
661   <li>
662         Fix buffer overflow in PGN parser, when all lines end in comments.
663   </li>
664   <li>
665         Fix crash on specifying non-existent board texture.
666   </li>
667   <li>
668         Prevent crash on double-click in XB Game List Tags dialog.
669   </li>
670   <li>
671         Fix the auto-display comment control in the General Options dialog of WinBoard, which was ignored.
672   </li>
673   <li>
674         Fix adjusting clocks by clicking them in Xaw build.
675   </li>
676   <li>
677         Fix zooming of Evaluation Graph XB with mousewheel, which was not working at all.
678   </li>
679   <li>
680         Fix sticky-windows feature WB for Windows 8, where it did not work at all.
681   </li>
682   <li>
683         WinBoard's seek graph is now sized to also cover any board rim.
684   </li>
685   <li>
686         Key bindings XB for non menu items are no longer ignored.
687   </li>
688   <li>
689         Set castling rights correctly after loading of game file from command line.
690   </li>
691   <li>
692         Allow castling and e.p. moves to be edited into opening book (and prevent their disappearance from it).
693   </li>
694   <li>
695         The sorting of engine output was made more robust against engines that send thinking output on fail lows.
696   </li>
697   <li>
698         Fix node-count display, which was clipped to 32 bits.
699   </li>
700   <li>
701         Suppress board-size oscillations in GTK build.
702   </li>
703   <li>
704         Fixed detection of screen size in GTK.
705         (This is a mixed blessing, as now it picks the largest possible window size,
706         and in GTK interactive down-sizing is not possible.)
707   </li>
708   <li>
709         Fix mode highlighting after refusal of Two Machines mode because 2nd engine did not support variant.
710   </li>
711   <li>
712         Blow up textures that are too small.
713   </li>
714   <li>
715         Ignore invalid color specs in stead of treating them as black (important because Cairo does not understand old xpm color names).
716   </li>
717   <li>
718         Prevent XB and WB from becoming unresponsive during lengthy tasks such as book building.
719   </li>
720   <li>
721         Fix slowdown of WB during loading of huge PGN files due to Game-List window update.
722   </li>
723   <li>
724         Limit width of menu bar for small board sizes in GTK build.
725   </li>
726   <li>
727         Improve the code to kill rogue engines in XB.
728   </li>
729   <li>
730         Drawing of pieces outside the board (in maximaized windows), which left lots of debris, is now suppressed.
731   </li>
732   <li>
733         Make WB window sizing handle multiple screens.
734   </li>
735   <li>
736         50-move counter is no longer reset on Chess960 castlings.
737   </li>
738   <li>
739         Fix legality testing of A-side castling in FRC (which was allowed with Rook on a- and blocker on b-file).
740   </li>
741   <li>
742         Fixed piece ID of Falcon in Falcon Chess, which was written as '.' and could not be selected on promotion.
743   </li>
744   <li>
745         Fix cross-edge e.p. captures in Cylinder Chess (which was not recognized as e.p.).
746   </li>
747   <li>
748         Fix animation of Seirawan Chess castling + gating at Rook square, which made Rook disappear.
749   </li>
750   <li>
751         Fix adjudication of stalemates in variant Giveaway.
752   </li>
753 </ul>
754
755
756 </div><!-- for id="content", starts in the include above -->
757 <!--#include virtual="/server/footer.html" -->
758 <div id="footer">
759
760 <p>Please send general FSF &amp; GNU inquiries to
761 <a href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>.
762 There are also <a href="/contact/">other ways to contact</a>
763 the FSF.<br />
764 Please send broken links and other corrections or suggestions to
765 <a href="mailto:bug-xboard@gnu.org">&lt;bug-xboard@gnu.org&gt;</a>.</p>
766
767 <p>Please see the <a
768 href="/server/standards/README.translations.html">Translations
769 README</a> for information on coordinating and submitting translations
770 of this article.</p>
771
772 <p>Copyright &copy; 2009, 2010, 2011, 2012 Free Software Foundation, Inc.</p>
773
774 <p>This page is licensed under a <a rel="license"
775 href="http://creativecommons.org/licenses/by-nd/3.0/us/">Creative
776 Commons Attribution-NoDerivs 3.0 United States License</a>.</p>
777
778 <p>Updated:
779 <!-- timestamp start -->
780 $Date: 2014/10/18 05:14:32 $
781 <!-- timestamp end -->
782 </p>
783 </div>
784 </div>
785 </body>
786 </html>
787