Check out Grant Acedrex, our featured variant for April, 2024.


[ Help | Earliest Comments | Latest Comments ]
[ List All Subjects of Discussion | Create New Subject of Discussion ]
[ List Earliest Comments Only For Pages | Games | Rated Pages | Rated Games | Subjects of Discussion ]

Comments/Ratings for a Single Item

Earlier Reverse Order Later
Match between Fairy Max and ChessV[Subject Thread] [Add Response]
Aurelian Florea wrote on Sat, Feb 29, 2020 05:25 AM UTC:

@HG and Greg

I want to see three competitions between Fairy Max and ChessV using Winboard. The games should be Frog Chess, Hannibal chess and Waffle Chess.

1. What is the instruction that connects ChessV with winboard?

2. When I try to load FairyMax to play I get the message: "Engine did not send setup for nonstandard variant".

These are the fairymax representations of the 3 games, as I have written them:

//Frog chess invented by Kevin Pacey
Game: frog
10x8
6 4 5 8 7 3 8 5 4 6
6 4 5 8 7 3 8 5 4 6
p:100 -16,24 -16,6 -15,5 -17,5
p:100 16,24 16,6 15,5 17,5
k:-1 1,3034 -1,1034 1,7 16,7 15,7 17,7 -1,7 -16,7 -15,7 -17,7
n:310 14,7 31,7 33,7 18,7 -14,7 -31,7 -33,7 -18,7
b:350 15,3 17,3 -15,3 -17,3
R:475 1,3 16,3 -1,3 -16,3
Q:950 1,3 16,3 15,3 17,3 -1,3 -16,3 -15,3 -17,3
f:275 15,7 17,7 -15,7 -17,7 3,7 -3,7 48,7 -48,7

//Hannibal chess invented by Kevin Pacey
Game: hannibal
10x8
6 4 8 5 7 3 5 8 4 6
6 4 8 5 7 3 5 8 4 6
p:100 -16,24 -16,6 -15,5 -17,5
p:100 16,24 16,6 15,5 17,5
k:-1 1,3034 -1,1034 1,7 16,7 15,7 17,7 -1,7 -16,7 -15,7 -17,7
n:310 14,7 31,7 33,7 18,7 -14,7 -31,7 -33,7 -18,7
b:350 15,3 17,3 -15,3 -17,3
R:475 1,3 16,3 -1,3 -16,3
Q:950 1,3 16,3 15,3 17,3 -1,3 -16,3 -15,3 -17,3
h:275 15,7 17,7 -15,7 -17,7 30,7 34,7 -30,7 -34,7

//Waffle chess invented by Kevin Pacey
Game: waffle
10x8
6 8 4 5 7 3 5 4 8 6
6 8 4 5 7 3 5 4 8 6
p:100 -16,24 -16,6 -15,5 -17,5
p:100 16,24 16,6 15,5 17,5
k:-1 1,3034 -1,1034 1,7 16,7 15,7 17,7 -1,7 -16,7 -15,7 -17,7
n:310 14,7 31,7 33,7 18,7 -14,7 -31,7 -33,7 -18,7
b:350 15,3 17,3 -15,3 -17,3
R:475 1,3 16,3 -1,3 -16,3
Q:950 1,3 16,3 15,3 17,3 -1,3 -16,3 -15,3 -17,3
w:275 1,7 16,7 -1,7 -16,7 30,7 34,7 -30,7 -34,7


H. G. Muller wrote on Sat, Feb 29, 2020 08:59 AM UTC:

For 'engine-defined variants', the definition in the fmax.ini file should also specify a 'pieceToCharTable' (to indicate which images should be used for what piece) and a 'parent variant' (normally 'fairy', unless there are some special rules that you want to borrow from another variant, such as a wider promotion zone, or the possibility to gate pieces). They go on the 'Game:' line, after the name of the variant, separated by #, like

Game: frog # PNBRQ.FKpnbrq.fk # fairy

if you want to depict the Frog as an elephant (because the F is in the 7th place of the pieceToCharTable, and WinBoard's 7th piece image is an elephant). The last piece mentioned for each color will always use the King symbol.

It will also be helpful to make Fairy-Max inform WinBoard on how the Frog moves, so that you will be able to play the games with legality testing on. To this end you should append the following two lines to the game definition:

#
# F& FH

This will make Fairy-Max emit a 'piece' command at the start of the game for F (the '&' indicating it applies to F of both colors), to indicate it moves as a (Betza) FH. (The other pieces move as WinBoard would expect a piece with that image to move, so there is no need to (re)define their moves.) Unfortunately Fairy-Max is not smart enough to construct the Betza notation that XBoard needs from the move definition as it was given on the 'f:' line. I still hope that I can make some future version of Fairy-Max work entirely from Betza move definitions in the fmax.ini file, rather than from the list of step vectors and primary/secondary move rights it uses now.


Aurelian Florea wrote on Sat, Feb 29, 2020 03:48 PM UTC:

HG,

the following script in Fmax ini file yiels invalid move and invalid claim errors. I posted what I had changed. Please tell me where am I wrong.

//Frog chess invented by Kevin Pacey
Game: frog # PNBRQ.FKpnbrq.fk # fairy
10x8
6 4 5 8 7 3 8 5 4 6
6 4 5 8 7 3 8 5 4 6
p:100 -16,24 -16,6 -15,5 -17,5
p:100 16,24 16,6 15,5 17,5
k:-1 1,3034 -1,1034 1,7 16,7 15,7 17,7 -1,7 -16,7 -15,7 -17,7
n:310 14,7 31,7 33,7 18,7 -14,7 -31,7 -33,7 -18,7
b:350 15,3 17,3 -15,3 -17,3
R:475 1,3 16,3 -1,3 -16,3
Q:950 1,3 16,3 15,3 17,3 -1,3 -16,3 -15,3 -17,3
f:275 15,7 17,7 -15,7 -17,7 3,7 -3,7 48,7 -48,7
#
#F&FH

//Hannibal chess invented by Kevin Pacey
Game: hannibal # PNBRQ.HKpnbrq.hk # fairy
10x8
6 4 8 5 7 3 5 8 4 6
6 4 8 5 7 3 5 8 4 6
p:100 -16,24 -16,6 -15,5 -17,5
p:100 16,24 16,6 15,5 17,5
k:-1 1,3034 -1,1034 1,7 16,7 15,7 17,7 -1,7 -16,7 -15,7 -17,7
n:310 14,7 31,7 33,7 18,7 -14,7 -31,7 -33,7 -18,7
b:350 15,3 17,3 -15,3 -17,3
R:475 1,3 16,3 -1,3 -16,3
Q:950 1,3 16,3 15,3 17,3 -1,3 -16,3 -15,3 -17,3
h:275 15,7 17,7 -15,7 -17,7 30,7 34,7 -30,7 -34,7
#
#H&HH


//Waffle chess invented by Kevin Pacey
Game: waffle # PNBRQ.WKpnbrq.wk # fairy
10x8
6 8 4 5 7 3 5 4 8 6
6 8 4 5 7 3 5 4 8 6
p:100 -16,24 -16,6 -15,5 -17,5
p:100 16,24 16,6 15,5 17,5
k:-1 1,3034 -1,1034 1,7 16,7 15,7 17,7 -1,7 -16,7 -15,7 -17,7
n:310 14,7 31,7 33,7 18,7 -14,7 -31,7 -33,7 -18,7
b:350 15,3 17,3 -15,3 -17,3
R:475 1,3 16,3 -1,3 -16,3
Q:950 1,3 16,3 15,3 17,3 -1,3 -16,3 -15,3 -17,3
w:275 1,7 16,7 -1,7 -16,7 30,7 34,7 -30,7 -34,7
#
#W&WH


Aurelian Florea wrote on Sat, Feb 29, 2020 03:51 PM UTC:

Greg,

I had noticed that chessV2 has the ability to play with different engines. But such an option is not shown for frog chess, hannibal chess, waffle chess. Is that from bad scipting or is it the fact that external engines variants options is hard coded?


H. G. Muller wrote on Sun, Mar 1, 2020 09:51 AM UTC:

Well, for one the spaces are missing behind the # and & in the piece-descriptions for WinBoard, which probably leads to WinBoard ignoring them altogether. Which is just as well, as HH and WH are not the Betza notations for the moves of the Hannibal and Waffle: you defined the Hannibal for WinBoard as a Trebuchet-rider. But for Fairy-Max you defined it as a Modern Elephant, which has no moves in common. But even when ignoring the piece definitions, WinBoard will revert to the default move of the piece, which for the Elephant that you use in all cases will be the Alfil move.

The F moves of the Hannibal and the W moves of the Waffle will then be rejected by WinBoard as illegal, when Fairy-Max plays them. And Fairy-Max can recognize checkmates where WinBoard still sees a possibility for the King to escape, to a square that the Hannibal or Waffle attack without WinBoard being aware of it. And then WinBoard would judge the mate claim by Fairy-Max illegal.

 


Aurelian Florea wrote on Sun, Mar 1, 2020 10:35 AM UTC:

I did not combrehend it is about the Betza notation. Now I understand!


Aurelian Florea wrote on Tue, Mar 3, 2020 10:37 AM UTC:

So basically there is no chance for now to set up a game between the 2 engines.


Greg Strong wrote on Wed, Mar 4, 2020 12:50 AM UTC:

@Aurelian:

ChessV decides what games an engine supports based on the variants it announces support for.  Unfortunately, the XBoard protocol only specifies how a small number of variants are to be named and they are often not the official name of the game.  For example, Joe Joyce's Great Shatranj is identified only as "great".  So for many games, ChessV doesn't know if an engine supports a game because there is no official string used to identify the game.

That said, you can tell ChessV how a variant should be identified by specifying the XBoardName string variable.  So, if you have configured FairyMax to play Frog Chess and called it "frog", you would also edit the ChessV include file that defines Frog Chess adding the following line:

XBoardName = "frog";

This line goes right inside the Game definition, where Invented and InventedBy are specified.  If you do this, it should offer Fairy-Max as an opponent for Frog Chess.


H. G. Muller wrote on Wed, Mar 4, 2020 08:57 AM UTC:

I think the real problem is that the ChessV.Engine.exe is defective; see my posting in the ChessV comments.

Note that Fairy-Max calls this game 'frog' only because the user configured it this way; Frog Chess is neither pre-cofigured in Fairy-Max, nor an XBoard standard variant. It would be just as easy to make Fairy-Max use the name that ChessV uses.

I am not sure it is 'unfortunate' that XBoard protocol only defines a very limited list of standard variants. The problem is that such a list, no matter how long you make it, will never be (or stay) complete anyway. To be future-proof, any name should be allowed. This means the names are not really part of the protocol anymore than the names of chess engines are; they are just data, and the protocol prescribes only what commands should be used to communicate them.

IMO the list of standard variants is already way too long; many variants in the list have no special properties, and only differ from each other (or from orthodox Chess) through board size, array, and piece moves. And the latter properties have basically become freely specifiable parameters for 'engine-defined variants'. So variants like Capablanca Chess, CRC, Great Shatranj really have become redundant, and are maintained only to deal with 'legacy engines'. Because the latter would not reply to the 'variant' command that selected them with a 'setup' command for specifying the array and board size.

The concept of engine-defined variants does raise the problem of name standardization, though. Which becomes more than a cosmetic problem when we want to play engines against each other. Perhaps GUIs should already provide a work-around for cases where engines disagree on the name of a variant they both play, like a per-engine 'alias list' of variant names. Which the GUI then should apply (in either direction) on both variant names received from the engine and sent to the engine.


Aurelian Florea wrote on Wed, Mar 4, 2020 09:18 AM UTC:

@Greg & HG

It seems to not work in this way either. This is probably because of what HG has explained down bellow!


Greg Strong wrote on Wed, Mar 4, 2020 01:26 PM UTC:

Yes, I've seen the bug report but haven't finished looking at that yet.  My post was how you can use Fairy-Max under ChessV in the meantime.


Aurelian Florea wrote on Wed, Mar 4, 2020 04:13 PM UTC:

@Greg,

I have understood what you meant. But it still does not work.

@HG

Maybe that is because I misrepresented frog chess in the fairymax file. Currently it looks like this:

Game: frog # PNBRQ.FKpnbrq.fk # fairy
10x8
6 4 5 8 7 3 8 5 4 6
6 4 5 8 7 3 8 5 4 6
p:100 -16,24 -16,6 -15,5 -17,5
p:100 16,24 16,6 15,5 17,5
k:-1 1,3034 -1,1034 1,7 16,7 15,7 17,7 -1,7 -16,7 -15,7 -17,7
n:310 14,7 31,7 33,7 18,7 -14,7 -31,7 -33,7 -18,7
b:350 15,3 17,3 -15,3 -17,3
R:475 1,3 16,3 -1,3 -16,3
Q:950 1,3 16,3 15,3 17,3 -1,3 -16,3 -15,3 -17,3
f:275 15,7 17,7 -15,7 -17,7 3,7 -3,7 48,7 -48,7
#
# F & FH


Greg Strong wrote on Thu, Mar 5, 2020 01:33 PM UTC:

Thinking about it now, ChessV only determines the capabilities of an engine when it first sees it.  If ChessV had already discovered Fariy-Max and then you add support for Frog Chess, it won't know.

Click the Engines button on the main screen.  Select Fairy-Max and click Remove.  This does not delete any files.  If you have MaxQi and ShaMax in the list, you will need to select and remove those as well (because they are in the same folder.)

Then close ChessV and run it again.  It will re-discover the engines in that folder.  It should then show up.  You can click Engines, select Fairy-Max, and click Properties.  In the bottom-right you will see a list of the variants that it supports.  Make sure the name in that screen exactly matches what you put in the XBoardEngine variable.


Aurelian Florea wrote on Fri, Mar 6, 2020 06:20 AM UTC:

@Greg

Hey,

It works up to a certain point, this beeing the moment when you click fairy max in the engines list. There it shows that it can play frog, hannibal and waffle. But in the menu before starting the respective games it fails to offer the fairymax choice. I have also tried batch mode with a control file, and it did not work. Thanks for the help so far!...


14 comments displayed

Earlier Reverse Order Later

Permalink to the exact comments currently displayed.