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