Need help with about Fairy Max/ winboard

Discussions about Winboard/Xboard. News about engines or programs to use with these GUIs (e.g. tournament managers or adapters) belong in this sub forum.

Moderator: Andres Valverde

Need help with about Fairy Max/ winboard

Postby vickalan » 26 Jan 2017, 21:59

I'm trying to use fairy-max to play a game with a new piece at the 4 corners (the new piece is a hawk and it jumps 2 or 3 squares in any direction). The game definition is below (in fmax.ini). When I run this game, black's pieces are shown in wrong locations, and the game immediately results in a stalemate. (I have legality checking turned off, but I get errors either way). Can anyone let me know what I'm doing wrong? Thanks.

// variant - [new piece at corners]
Game: fun01 # PNBRQ.....AKpnbrq.....ak # fairy
8x8
8 4 5 7 3 5 4 8
8 4 5 7 3 5 4 8
p:74 -16,24 -16,6 -15,5 -17,5
p:74  16,24 16,6 15,5 17,5
k:-1  1,34 -1,34 1,7 16,7 15,7 17,7 -1,7 -16,7 -15,7 -17,7
n:259 14,7 31,7 33,7 18,7 -14,7 -31,7 -33,7 -18,7
b:296 15,3 17,3 -15,3 -17,3
R:444 1,3 16,3 -1,3 -16,3
Q:851 1,3 16,3 15,3 17,3 -1,3 -16,3 -15,3 -17,3
H:900 -16,7 -32,7 1,7 2,7 16,7 32,7 -1,7 -2,7 -15,7 -30,7 17,7 34,7 15,7 30,7 -17,7 -34,7
 
vickalan
 
Posts: 17
Joined: 26 Jan 2017, 16:54

Re: Need help with about Fairy Max/ winboard

Postby H.G.Muller » 27 Jan 2017, 11:00

You defined the ID for the Hawk (8th piece) as 'H'. But in the pieceToChar string PNBRQ.....AKpnbrq.....ak that tells WinBoard which image to use for which piece, there is no H. So when Fairy-Max sends a FEN of the initial position, with the H in in for the corner pieces, WinBoard will choke on it.

You can change the pieceToChar string to PNBRQ............HKpbrq............hk to get a bird-of-prey-like piece glyph for 'H'.

Note that the piece you defined steps or jumps two along any Queen line; I thought this was Guard rather than Hawk.

Also note that adding the two lines

Code: Select all
#
# H& KAD

immediately below the game definition, Fairy-Max will make WinBoard aware how the H piece moves, so that it can highlight its possible target squares when you 'pick it up', and generate better move notation. (For a piece that jumps 2 or 3 this would be ADGH instead of KAD.) Beware that there currently is no consistency check on how you define the piece move in Fairy-Max, (by the list of numerical board steps), and how Fairy-Max tells WinBoard that the piece moves (the # lines), and that any inconsistency here will lead to move refusal. So if you use this feature, make very sure to have the correct move specification in the # lines.
User avatar
H.G.Muller
 
Posts: 3080
Joined: 16 Nov 2005, 12:02
Location: Diemen, NL

Re: Need help with about Fairy Max/ winboard

Postby vickalan » 27 Jan 2017, 16:18

Thanks so much.

I'm still getting problems.

I added the line:
Code: Select all
Game: fun01 # PNBRQ............HKpnbrq............hk # fairy


(I believe your text was missing the "n")?

Here is the complete game definition:
Code: Select all
// variant - [new piece at corners]
Game: fun01 # PNBRQ............HKpnbrq............hk # fairy
8x8
8 4 5 7 3 5 4 8
8 4 5 7 3 5 4 8
p:74 -16,24 -16,6 -15,5 -17,5
p:74  16,24 16,6 15,5 17,5
k:-1  1,34 -1,34 1,7 16,7 15,7 17,7 -1,7 -16,7 -15,7 -17,7
n:259 14,7 31,7 33,7 18,7 -14,7 -31,7 -33,7 -18,7
b:296 15,3 17,3 -15,3 -17,3
R:444 1,3 16,3 -1,3 -16,3
Q:851 1,3 16,3 15,3 17,3 -1,3 -16,3 -15,3 -17,3
H:900 -16,7 -32,7 1,7 2,7 16,7 32,7 -1,7 -2,7 -15,7 -30,7 17,7 34,7 15,7 30,7 -17,7 -34,7
#
# H& ADGH


When I run this the first line of pieces I see is this:

RKNQKNKR

Note the 3 kings, and the rooks still in the corners. I still can't figure out what I'm doing wrong. (but now I understand the piece string has to include all pieces in the game).

(About the Guard): The guard in "Waterloo" and "Amsterdam Medieval Chess" has a bigger range than in almost any other game. In these games you are right - it moves as KAD. (Amsterdam Medieval Chess is a "reduction" of Waterloo and I carried the guard from one game to the other). But in almost all other games the guard simply moves as a king.

For the hawk, I haven't seen it used before, but we're now playing it in Musketeer Chess, and a new game "Chess on an Infinite Plane".

Thanks again for any help you can provide. I really appreciate it.:)
vickalan
 
Posts: 17
Joined: 26 Jan 2017, 16:54

Re: Need help with about Fairy Max/ winboard

Postby H.G.Muller » 27 Jan 2017, 16:52

You are right, the n was indeed missing. Sorry about that; the N and Space key of my laptop's keyboard are rather rotten. But I should have checked.

There must be some kind of mix-up, that you are somehow still using the old game definition with the wring pieceToCharString. I pasted the definition you posted above in the fmax.ini file of my Fairy-Max, and on selecting fun01 in the New Variant dialog, I get the correct position displayed, with Hawks in all corners. Make sure you saved to an fmax.ini file in the right place, and that no old copy of the game definition is left in the file (as Fairy-Max would only pay attetion to the first one). You could call the correct definition 'fun02' to make sure you use what you think you are using.

Note that the defined move for the Hawk above still does not match the ADGH description, as it has (f.e.) 1,7 (which would be a 'W' move) and not 3,7 (a 'H' move, in addition to the 'D' move 2,7).
User avatar
H.G.Muller
 
Posts: 3080
Joined: 16 Nov 2005, 12:02
Location: Diemen, NL

Re: Need help with about Fairy Max/ winboard

Postby vickalan » 27 Jan 2017, 19:00

You are right that my definition for the Hawks moves was not correct! Thank you for pointing this out.

I fixed it, so now it's this:
H:900 2,7 3,7 32,7 48,7 -2,7 -3,7 -32,7 -48,7 34,7 51,7 30,7 45,7 -34,7 -51,7 -30,7 -45,7

I believe this should now be ADGH
2, 3, 32, 48, -2, -3, -32, -48, (are orthogonal moves)
34, 51, 30, 45, -34, -51, -30, -45, (are diagonal moves)

If you just copied my code and ran Fairy-Max with it, wouldn't it choke also because the Hawk's moves did not match the following:
#
# H& ADGH

or will the crash happen after pieces start moving?

I still cannot get it to run this game file. I'll keep trying to debug it.
Thanks for your help,
vickalan
 
Posts: 17
Joined: 26 Jan 2017, 16:54

Re: Need help with about Fairy Max/ winboard

Postby H.G.Muller » 27 Jan 2017, 19:17

The ADGH description is only used for sending the GUI. So if it does not match the description in terms of board steps used by the engine, engine and GUI will have different ideas on what is legal. The GUI will only accept what it thinks legal from the user or engine, while the engine will might reject a move the GUI allowed the user to make.

I hope to remove this possibility for inconsistency in future versions of Fairy-Max, by deriving the list of board steps internally from the ADGH-type description.

I don't understand why the description you gave should not work; it looks OK, and it worked for me. Which version of WinBoard are you using, is it the WinBoard-AA package?
User avatar
H.G.Muller
 
Posts: 3080
Joined: 16 Nov 2005, 12:02
Location: Diemen, NL

Re: Need help with about Fairy Max/ winboard

Postby vickalan » 27 Jan 2017, 19:48

I'm not sure if it's the WinBoard-AA package.

When I run the program the heading says "WinBoard: fairy-Max 5.0b"

I uploaded them from this site about 2 weeks ago:

http://hgm.nubati.net/Fairy-Max.zip
http://hgm.nubati.net/WinBoard-AA.zip

I'll let this sit for a day, and try some more debugging tomorrow.
Thanks again. :)
vickalan
 
Posts: 17
Joined: 26 Jan 2017, 16:54

Re: Need help with about Fairy Max/ winboard

Postby H.G.Muller » 27 Jan 2017, 22:12

OK there should be no problems with the WinBoard in that WinBoard-AA.zip. And it is actually the only thing you need, as the latest Fairy-Max version is already in there as well. When I pasted the following definition into the fmax.ini file of that package:

Code: Select all
// variant - [new piece at corners]
Game: fun01 # PNBRQ............HKpnbrq............hk # fairy
8x8
8 4 5 7 3 5 4 8
8 4 5 7 3 5 4 8
p:74 -16,24 -16,6 -15,5 -17,5
p:74  16,24 16,6 15,5 17,5
k:-1  1,34 -1,34 1,7 16,7 15,7 17,7 -1,7 -16,7 -15,7 -17,7
n:259 14,7 31,7 33,7 18,7 -14,7 -31,7 -33,7 -18,7
b:296 15,3 17,3 -15,3 -17,3
R:444 1,3 16,3 -1,3 -16,3
Q:851 1,3 16,3 15,3 17,3 -1,3 -16,3 -15,3 -17,3
H:900 2,7 3,7 32,7 48,7 -2,7 -3,7 -32,7 -48,7 34,7 51,7 30,7 45,7 -34,7 -51,7 -30,7 -45,7
#
# H& ADGH

I can start Winboard with Fairy-Max, select fun01 from the New Variant dialog, and everything works as it should.

My estimate for the piece value of the Hawk would be only about 550, though. Not 900. And it is probably better to define the Hawk with a lower case 'h' ("h:525 2,7..."), as that would make Fairy-Max treat it as a 'center-seeking' piece.

Note that (for historic reasons) the scale of the piece values is a bit compressed (R = 444 instead of the usual 500), so 525 would be ~6 Pawns on the usual scale. In my experience short-range leapers with 12 move targets are worth about 7 Pawns, but range-3 moves are worth definitely less than King moves, on an 8x8 board.
User avatar
H.G.Muller
 
Posts: 3080
Joined: 16 Nov 2005, 12:02
Location: Diemen, NL

Re: Need help with about Fairy Max/ winboard

Postby vickalan » 28 Jan 2017, 16:11

I took the exact same text below, since it worked for you, and pasted it into the original .ini file right after the "FIDE chess" definition, and before "Chess without castling". Ran Winboard with Fairy-Max, and I still have the same problem. No new pieces shown on the board - just kings in funny places, and when I play the game it crashes on the first move.

What does the "# fairy" do in the game line? I read somewhere that it is the parent game, but I se no definition of fairy anywhere. Is it built into Fairy-max? (I've tried running this game definition with and without that command and problems both ways).

If this doesn't prompt anything new to try, I feel I've ran out of ideas. Do you think uploading a different version of Winboard or Fairy-Max might help?

Thanks for your estimation of the hawk. You mentioned leapers with 12 move targets, but the hawk attacks 16 squares if centered on the board. Did you say 12 because the piece will usually not be at the center of the board?

(16 squares is twice the attack squares of a knight, so a hawk might be around twice its value - around 600. So with your compressed scale 550 may be about right).

Thanks as always.:)
vickalan
 
Posts: 17
Joined: 26 Jan 2017, 16:54

Re: Need help with about Fairy Max/ winboard

Postby H.G.Muller » 29 Jan 2017, 23:08

Oops, I just counted wrong. The value estimate is what it should be for 16 target squares, though. I determied the empirical value of a great many short-range leapers, and the average value of pieces with N move targets turned out to be well described by the formula 1.1*N*(30+5/8*N). Forward moves appear tocontribute twiceas much as sideway or backward moves, and captures twice as much as non-captures. (E.g. apiece that moves like Q and captures like N is worth 5, but one that moves like N and captureslike Q is worth 7.)

I am completely baffled that you have these problems. Please try the following: start WinBoard, with the 'Additional option' (written in the startup dialog) -debug . Then select fun01 from the New variant dialog, and exit WinBoard. This should have created afile winboard.debug in the WinBoard folder. Post the content of that file here. It should show what Fairy-Max sent to WinBoard as initial position, that managed to confuse it so badly.
User avatar
H.G.Muller
 
Posts: 3080
Joined: 16 Nov 2005, 12:02
Location: Diemen, NL

Re: Need help with about Fairy Max/ winboard

Postby vickalan » 30 Jan 2017, 00:12

That's an interesting formula, and might be helpful for me too.

If there's ever a new game with one (or a few) unusual piece, I might be able to use that formula to help me know the power of that piece.

I ran Winboard with the debug option and legality checking turned off. I see the king icons in unusual places as before. Then I run the game "fun01" using "Two engines".

It makes one move then stalemates. The game output is this: "1.c4 {stalemate} 1/2-1/2"

The text from the debug file is here (a little long but I hope you can zero in on what you need to know).
Thanks again, :)
Code: Select all
recognized 'normal' (-1) as variant normal
recognized 'normal' (-1) as variant normal
shuffleOpenings = 0
Version: WinBoard 4.9.170105 + fmax
Reset(1, 0) from gameMode 0
recognized 'normal' (-1) as variant normal
GameEnds(0, (null), 2)
shuffleOpenings = 0
StartChildProcess (dir="..\Fairy-Max") fmax
nice engine proc to 10
3702 >first : xboard
protover 2
3749 <first : tellics say     Fairy-Max 5.0b
3749 <first : tellics say     by H.G. Muller
3749 <first : feature myname="Fairy-Max 5.0b"
3749 >first : accepted myname
3749 <first : feature memory=1 exclude=1
3749 >first : accepted memory
3749 >first : accepted exclude
3749 <first : feature setboard=0 xedit=1 ping=1 done=0
3749 >first : accepted setboard
3749 >first : accepted xedit
3749 >first : accepted ping
3749 >first : accepted done
3749 <first : feature variants="normal,fun01,nocastle,shatranj,asean,makruk,cambodian,ai-wok,courier,knightmate,capablanca,gothic,janus,falcon,cylinder,berolina,super,seirawan,spartan,great,light-brigade,king-of-the-hill,bifurcator,team-mate,los-alamos,ciccolini,mexican,grande-acedrex,roman,almost-wildebeest,fairy"
3749 >first : accepted variants
3749 <first : feature option="Resign -check 0"
3749 >first : accepted option
3749 <first : feature option="Resign Threshold -spin 800 200 1200"
3749 >first : accepted option
3749 <first : feature option="Claim draw after -spin 50 0 200"
3764 >first : accepted option
3764 <first : feature option="Ini File -file ./fmax.ini"
3764 >first : accepted option
3764 <first : feature option="Multi-PV Margin -spin 0 0 1000"
3764 >first : accepted option
3764 <first : feature option="Variant fairy selects -combo FIDE-Clobberers /// Clobberers-FIDE /// FIDE-Nutters /// Nutters-FIDE /// Clobberers-Nutters /// Nutters-Clobberers /// FIDE-Rookies /// Rookies-FIDE /// Clobberers-Rookies /// Rookies-Clobberers /// Nutters-Rookies /// Rookies-Nutters"
3764 >first : accepted option
3764 <first : feature option="Makruk rules -combo makruk /// Cambodian /// Ai-wok"
3764 >first : accepted option
3764 <first : feature option="Dummy Slider Example -slider 20 0 100"
3764 >first : accepted option
3764 <first : feature option="Dummy String Example -string happy birthday!"
3764 >first : accepted option
3764 <first : feature option="Dummy Path Example -path ."
3764 >first : accepted option
3764 <first : feature option="Automatic persistent-hash dialog -check 0"
3764 >first : accepted option
3764 <first : feature option="Info -button"
3764 >first : accepted option
3764 <first : feature option="Save in hash file -button"
3764 >first : accepted option
3764 <first : feature option="Clear Hash -button"
3764 >first : accepted option
3764 <first : feature done=1
3764 >first : accepted done
3780 >first : memory 82
3780 >first : new
random
3780 >first : level 40 1 0
3780 >first : post
3780 >first : hard
3780 >first : easy
3780 >first : ping 1
Impossible move , type = 0
3811 <first : pong 1
recognized 'normal' (-1) as variant normal
recognized 'fun01' (-1) as variant normal
recognized 'normal' (-1) as variant normal
recognized 'fun01' (-1) as variant normal
recognized 'nocastle' (-1) as variant nocastle
recognized 'shatranj' (-1) as variant shatranj
recognized 'asean' (-1) as variant asean
recognized 'makruk' (-1) as variant makruk
recognized 'cambodian' (-1) as variant normal
recognized 'normal' (-1) as variant normal
recognized 'fun01' (-1) as variant normal
recognized 'nocastle' (-1) as variant nocastle
recognized 'shatranj' (-1) as variant shatranj
recognized 'asean' (-1) as variant asean
recognized 'makruk' (-1) as variant makruk
recognized 'cambodian' (-1) as variant normal
recognized 'ai-wok' (-1) as variant normal
recognized 'normal' (-1) as variant normal
recognized 'fun01' (-1) as variant normal
recognized 'nocastle' (-1) as variant nocastle
recognized 'shatranj' (-1) as variant shatranj
recognized 'asean' (-1) as variant asean
recognized 'makruk' (-1) as variant makruk
recognized 'cambodian' (-1) as variant normal
recognized 'ai-wok' (-1) as variant normal
recognized 'courier' (-1) as variant courier
recognized 'knightmate' (-1) as variant knightmate
recognized 'capablanca' (-1) as variant capablanca
recognized 'gothic' (-1) as variant gothic
recognized 'janus' (-1) as variant janus
recognized 'falcon' (-1) as variant falcon
recognized 'cylinder' (-1) as variant cylinder
recognized 'berolina' (-1) as variant berolina
recognized 'super' (-1) as variant super
recognized 'seirawan' (-1) as variant seirawan
recognized 'spartan' (-1) as variant spartan
recognized 'great' (-1) as variant great
recognized 'light-brigade' (-1) as variant normal
recognized 'normal' (-1) as variant normal
recognized 'fun01' (-1) as variant normal
recognized 'nocastle' (-1) as variant nocastle
recognized 'shatranj' (-1) as variant shatranj
recognized 'asean' (-1) as variant asean
recognized 'makruk' (-1) as variant makruk
recognized 'cambodian' (-1) as variant normal
recognized 'ai-wok' (-1) as variant normal
recognized 'courier' (-1) as variant courier
recognized 'knightmate' (-1) as variant knightmate
recognized 'capablanca' (-1) as variant capablanca
recognized 'gothic' (-1) as variant gothic
recognized 'janus' (-1) as variant janus
recognized 'falcon' (-1) as variant falcon
recognized 'cylinder' (-1) as variant cylinder
recognized 'berolina' (-1) as variant berolina
recognized 'super' (-1) as variant super
recognized 'seirawan' (-1) as variant seirawan
recognized 'spartan' (-1) as variant spartan
recognized 'great' (-1) as variant great
recognized 'light-brigade' (-1) as variant normal
recognized 'king-of-the-hill' (-1) as variant normal
recognized 'normal' (-1) as variant normal
recognized 'fun01' (-1) as variant normal
recognized 'nocastle' (-1) as variant nocastle
recognized 'shatranj' (-1) as variant shatranj
recognized 'asean' (-1) as variant asean
recognized 'makruk' (-1) as variant makruk
recognized 'cambodian' (-1) as variant normal
recognized 'ai-wok' (-1) as variant normal
recognized 'courier' (-1) as variant courier
recognized 'knightmate' (-1) as variant knightmate
recognized 'capablanca' (-1) as variant capablanca
recognized 'gothic' (-1) as variant gothic
recognized 'janus' (-1) as variant janus
recognized 'falcon' (-1) as variant falcon
recognized 'cylinder' (-1) as variant cylinder
recognized 'berolina' (-1) as variant berolina
recognized 'super' (-1) as variant super
recognized 'seirawan' (-1) as variant seirawan
recognized 'spartan' (-1) as variant spartan
recognized 'great' (-1) as variant great
recognized 'light-brigade' (-1) as variant normal
recognized 'king-of-the-hill' (-1) as variant normal
recognized 'bifurcator' (-1) as variant normal
recognized 'normal' (-1) as variant normal
recognized 'fun01' (-1) as variant normal
recognized 'nocastle' (-1) as variant nocastle
recognized 'shatranj' (-1) as variant shatranj
recognized 'asean' (-1) as variant asean
recognized 'makruk' (-1) as variant makruk
recognized 'cambodian' (-1) as variant normal
recognized 'ai-wok' (-1) as variant normal
recognized 'courier' (-1) as variant courier
recognized 'knightmate' (-1) as variant knightmate
recognized 'capablanca' (-1) as variant capablanca
recognized 'gothic' (-1) as variant gothic
recognized 'janus' (-1) as variant janus
recognized 'falcon' (-1) as variant falcon
recognized 'cylinder' (-1) as variant cylinder
recognized 'berolina' (-1) as variant berolina
recognized 'super' (-1) as variant super
recognized 'seirawan' (-1) as variant seirawan
recognized 'spartan' (-1) as variant spartan
recognized 'great' (-1) as variant great
recognized 'light-brigade' (-1) as variant normal
recognized 'king-of-the-hill' (-1) as variant normal
recognized 'bifurcator' (-1) as variant normal
recognized 'team-mate' (-1) as variant normal
recognized 'normal' (-1) as variant normal
recognized 'fun01' (-1) as variant normal
recognized 'nocastle' (-1) as variant nocastle
recognized 'shatranj' (-1) as variant shatranj
recognized 'asean' (-1) as variant asean
recognized 'makruk' (-1) as variant makruk
recognized 'cambodian' (-1) as variant normal
recognized 'ai-wok' (-1) as variant normal
recognized 'courier' (-1) as variant courier
recognized 'knightmate' (-1) as variant knightmate
recognized 'capablanca' (-1) as variant capablanca
recognized 'gothic' (-1) as variant gothic
recognized 'janus' (-1) as variant janus
recognized 'falcon' (-1) as variant falcon
recognized 'cylinder' (-1) as variant cylinder
recognized 'berolina' (-1) as variant berolina
recognized 'super' (-1) as variant super
recognized 'seirawan' (-1) as variant seirawan
recognized 'spartan' (-1) as variant spartan
recognized 'great' (-1) as variant great
recognized 'light-brigade' (-1) as variant normal
recognized 'king-of-the-hill' (-1) as variant normal
recognized 'bifurcator' (-1) as variant normal
recognized 'team-mate' (-1) as variant normal
recognized 'los-alamos' (-1) as variant normal
recognized 'normal' (-1) as variant normal
recognized 'fun01' (-1) as variant normal
recognized 'nocastle' (-1) as variant nocastle
recognized 'shatranj' (-1) as variant shatranj
recognized 'asean' (-1) as variant asean
recognized 'makruk' (-1) as variant makruk
recognized 'cambodian' (-1) as variant normal
recognized 'ai-wok' (-1) as variant normal
recognized 'courier' (-1) as variant courier
recognized 'knightmate' (-1) as variant knightmate
recognized 'capablanca' (-1) as variant capablanca
recognized 'gothic' (-1) as variant gothic
recognized 'janus' (-1) as variant janus
recognized 'falcon' (-1) as variant falcon
recognized 'cylinder' (-1) as variant cylinder
recognized 'berolina' (-1) as variant berolina
recognized 'super' (-1) as variant super
recognized 'seirawan' (-1) as variant seirawan
recognized 'spartan' (-1) as variant spartan
recognized 'great' (-1) as variant great
recognized 'light-brigade' (-1) as variant normal
recognized 'king-of-the-hill' (-1) as variant normal
recognized 'bifurcator' (-1) as variant normal
recognized 'team-mate' (-1) as variant normal
recognized 'los-alamos' (-1) as variant normal
recognized 'ciccolini' (-1) as variant normal
recognized 'normal' (-1) as variant normal
recognized 'fun01' (-1) as variant normal
recognized 'nocastle' (-1) as variant nocastle
recognized 'shatranj' (-1) as variant shatranj
recognized 'asean' (-1) as variant asean
recognized 'makruk' (-1) as variant makruk
recognized 'cambodian' (-1) as variant normal
recognized 'ai-wok' (-1) as variant normal
recognized 'courier' (-1) as variant courier
recognized 'knightmate' (-1) as variant knightmate
recognized 'capablanca' (-1) as variant capablanca
recognized 'gothic' (-1) as variant gothic
recognized 'janus' (-1) as variant janus
recognized 'falcon' (-1) as variant falcon
recognized 'cylinder' (-1) as variant cylinder
recognized 'berolina' (-1) as variant berolina
recognized 'super' (-1) as variant super
recognized 'seirawan' (-1) as variant seirawan
recognized 'spartan' (-1) as variant spartan
recognized 'great' (-1) as variant great
recognized 'light-brigade' (-1) as variant normal
recognized 'king-of-the-hill' (-1) as variant normal
recognized 'bifurcator' (-1) as variant normal
recognized 'team-mate' (-1) as variant normal
recognized 'los-alamos' (-1) as variant normal
recognized 'ciccolini' (-1) as variant normal
recognized 'mexican' (-1) as variant normal
recognized 'normal' (-1) as variant normal
recognized 'fun01' (-1) as variant normal
recognized 'nocastle' (-1) as variant nocastle
recognized 'shatranj' (-1) as variant shatranj
recognized 'asean' (-1) as variant asean
recognized 'makruk' (-1) as variant makruk
recognized 'cambodian' (-1) as variant normal
recognized 'ai-wok' (-1) as variant normal
recognized 'courier' (-1) as variant courier
recognized 'knightmate' (-1) as variant knightmate
recognized 'capablanca' (-1) as variant capablanca
recognized 'gothic' (-1) as variant gothic
recognized 'janus' (-1) as variant janus
recognized 'falcon' (-1) as variant falcon
recognized 'cylinder' (-1) as variant cylinder
recognized 'berolina' (-1) as variant berolina
recognized 'super' (-1) as variant super
recognized 'seirawan' (-1) as variant seirawan
recognized 'spartan' (-1) as variant spartan
recognized 'great' (-1) as variant great
recognized 'light-brigade' (-1) as variant normal
recognized 'king-of-the-hill' (-1) as variant normal
recognized 'bifurcator' (-1) as variant normal
recognized 'team-mate' (-1) as variant normal
recognized 'los-alamos' (-1) as variant normal
recognized 'ciccolini' (-1) as variant normal
recognized 'mexican' (-1) as variant normal
recognized 'grande-acedrex' (-1) as variant normal
recognized 'normal' (-1) as variant normal
recognized 'fun01' (-1) as variant normal
recognized 'nocastle' (-1) as variant nocastle
recognized 'shatranj' (-1) as variant shatranj
recognized 'asean' (-1) as variant asean
recognized 'makruk' (-1) as variant makruk
recognized 'cambodian' (-1) as variant normal
recognized 'ai-wok' (-1) as variant normal
recognized 'courier' (-1) as variant courier
recognized 'knightmate' (-1) as variant knightmate
recognized 'capablanca' (-1) as variant capablanca
recognized 'gothic' (-1) as variant gothic
recognized 'janus' (-1) as variant janus
recognized 'falcon' (-1) as variant falcon
recognized 'cylinder' (-1) as variant cylinder
recognized 'berolina' (-1) as variant berolina
recognized 'super' (-1) as variant super
recognized 'seirawan' (-1) as variant seirawan
recognized 'spartan' (-1) as variant spartan
recognized 'great' (-1) as variant great
recognized 'light-brigade' (-1) as variant normal
recognized 'king-of-the-hill' (-1) as variant normal
recognized 'bifurcator' (-1) as variant normal
recognized 'team-mate' (-1) as variant normal
recognized 'los-alamos' (-1) as variant normal
recognized 'ciccolini' (-1) as variant normal
recognized 'mexican' (-1) as variant normal
recognized 'grande-acedrex' (-1) as variant normal
recognized 'roman' (-1) as variant normal
recognized 'normal' (-1) as variant normal
recognized 'fun01' (-1) as variant normal
recognized 'nocastle' (-1) as variant nocastle
recognized 'shatranj' (-1) as variant shatranj
recognized 'asean' (-1) as variant asean
recognized 'makruk' (-1) as variant makruk
recognized 'cambodian' (-1) as variant normal
recognized 'ai-wok' (-1) as variant normal
recognized 'courier' (-1) as variant courier
recognized 'knightmate' (-1) as variant knightmate
recognized 'capablanca' (-1) as variant capablanca
recognized 'gothic' (-1) as variant gothic
recognized 'janus' (-1) as variant janus
recognized 'falcon' (-1) as variant falcon
recognized 'cylinder' (-1) as variant cylinder
recognized 'berolina' (-1) as variant berolina
recognized 'super' (-1) as variant super
recognized 'seirawan' (-1) as variant seirawan
recognized 'spartan' (-1) as variant spartan
recognized 'great' (-1) as variant great
recognized 'light-brigade' (-1) as variant normal
recognized 'king-of-the-hill' (-1) as variant normal
recognized 'bifurcator' (-1) as variant normal
recognized 'team-mate' (-1) as variant normal
recognized 'los-alamos' (-1) as variant normal
recognized 'ciccolini' (-1) as variant normal
recognized 'mexican' (-1) as variant normal
recognized 'grande-acedrex' (-1) as variant normal
recognized 'roman' (-1) as variant normal
recognized 'almost-wildebeest' (-1) as variant normal
recognized 'normal' (-1) as variant normal
recognized 'fun01' (-1) as variant normal
recognized 'nocastle' (-1) as variant nocastle
recognized 'shatranj' (-1) as variant shatranj
recognized 'asean' (-1) as variant asean
recognized 'makruk' (-1) as variant makruk
recognized 'cambodian' (-1) as variant normal
recognized 'ai-wok' (-1) as variant normal
recognized 'courier' (-1) as variant courier
recognized 'knightmate' (-1) as variant knightmate
recognized 'capablanca' (-1) as variant capablanca
recognized 'gothic' (-1) as variant gothic
recognized 'janus' (-1) as variant janus
recognized 'falcon' (-1) as variant falcon
recognized 'cylinder' (-1) as variant cylinder
recognized 'berolina' (-1) as variant berolina
recognized 'super' (-1) as variant super
recognized 'seirawan' (-1) as variant seirawan
recognized 'spartan' (-1) as variant spartan
recognized 'great' (-1) as variant great
recognized 'light-brigade' (-1) as variant normal
recognized 'king-of-the-hill' (-1) as variant normal
recognized 'bifurcator' (-1) as variant normal
recognized 'team-mate' (-1) as variant normal
recognized 'los-alamos' (-1) as variant normal
recognized 'ciccolini' (-1) as variant normal
recognized 'mexican' (-1) as variant normal
recognized 'grande-acedrex' (-1) as variant normal
recognized 'roman' (-1) as variant normal
recognized 'almost-wildebeest' (-1) as variant normal
recognized 'fairy' (-1) as variant fairy
recognized 'normal' (-1) as variant normal
recognized 'fun01' (-1) as variant normal
recognized 'nocastle' (-1) as variant nocastle
recognized 'shatranj' (-1) as variant shatranj
recognized 'asean' (-1) as variant asean
recognized 'makruk' (-1) as variant makruk
recognized 'cambodian' (-1) as variant normal
recognized 'ai-wok' (-1) as variant normal
recognized 'courier' (-1) as variant courier
recognized 'knightmate' (-1) as variant knightmate
recognized 'capablanca' (-1) as variant capablanca
recognized 'gothic' (-1) as variant gothic
recognized 'janus' (-1) as variant janus
recognized 'falcon' (-1) as variant falcon
recognized 'cylinder' (-1) as variant cylinder
recognized 'berolina' (-1) as variant berolina
recognized 'super' (-1) as variant super
recognized 'seirawan' (-1) as variant seirawan
recognized 'spartan' (-1) as variant spartan
recognized 'great' (-1) as variant great
recognized 'light-brigade' (-1) as variant normal
recognized 'king-of-the-hill' (-1) as variant normal
recognized 'bifurcator' (-1) as variant normal
recognized 'team-mate' (-1) as variant normal
recognized 'los-alamos' (-1) as variant normal
recognized 'ciccolini' (-1) as variant normal
recognized 'mexican' (-1) as variant normal
recognized 'grande-acedrex' (-1) as variant normal
recognized 'roman' (-1) as variant normal
recognized 'almost-wildebeest' (-1) as variant normal
recognized 'fairy' (-1) as variant fairy
Reset(1, 1) from gameMode 0
recognized 'fun01' (-1) as variant fun01
GameEnds(0, (null), 2)
14397 >first : force
14397 >first : ping 2
shuffleOpenings = 0
14507 >first : memory 82
14507 >first : new
random
14507 >first : variant fun01
14507 >first : level 40 1 0
14507 >first : post
14507 >first : hard
14507 >first : easy
14507 >first : ping 3
Impossible move , type = 0
14522 <first : pong 2
14553 <first : setup (PNBRQ............HKpnbrq............hk) 8x8+0_fairy rknqknkr/pppppppp/8/8/8/8/PPPPPPPP/RKNQKNKR w KQkq - 0 1
recognized 'fairy' (-1) as variant fun01
recognized 'fairy' (-1) as variant fun01
shuffleOpenings = 0
FEN castling rights: 7 0 6 7 0 6
14678 <first : pong 3
31893 >first : force
StartChildProcess (dir="..\Fairy-Max") fmax
nice engine proc to 10
32530 >second: xboard
protover 2
32530 <second: tellics say     Fairy-Max 5.0b
32530 <second: tellics say     by H.G. Muller
32545 <second: feature myname="Fairy-Max 5.0b"
32545 >second: accepted myname
32545 <second: feature memory=1 exclude=1
32545 >second: accepted memory
32545 >second: accepted exclude
32545 <second: feature setboard=0 xedit=1 ping=1 done=0
32545 >second: accepted setboard
32545 >second: accepted xedit
32545 >second: accepted ping
32545 >second: accepted done
32545 <second: feature variants="normal,fun01,nocastle,shatranj,asean,makruk,cambodian,ai-wok,courier,knightmate,capablanca,gothic,janus,falcon,cylinder,berolina,super,seirawan,spartan,great,light-brigade,king-of-the-hill,bifurcator,team-mate,los-alamos,ciccolini,mexican,grande-acedrex,roman,almost-wildebeest,fairy"
32545 >second: accepted variants
32545 <second: feature option="Resign -check 0"
32545 >second: accepted option
32545 <second: feature option="Resign Threshold -spin 800 200 1200"
32545 >second: accepted option
32545 <second: feature option="Claim draw after -spin 50 0 200"
32561 >second: accepted option
32561 <second: feature option="Ini File -file ./fmax.ini"
32561 >second: accepted option
32561 <second: feature option="Multi-PV Margin -spin 0 0 1000"
32561 >second: accepted option
32561 <second: feature option="Variant fairy selects -combo FIDE-Clobberers /// Clobberers-FIDE /// FIDE-Nutters /// Nutters-FIDE /// Clobberers-Nutters /// Nutters-Clobberers /// FIDE-Rookies /// Rookies-FIDE /// Clobberers-Rookies /// Rookies-Clobberers /// Nutters-Rookies /// Rookies-Nutters"
32561 >second: accepted option
32561 <second: feature option="Makruk rules -combo makruk /// Cambodian /// Ai-wok"
32561 >second: accepted option
32561 <second: feature option="Dummy Slider Example -slider 20 0 100"
32561 >second: accepted option
32561 <second: feature option="Dummy String Example -string happy birthday!"
32561 >second: accepted option
32561 <second: feature option="Dummy Path Example -path ."
32561 >second: accepted option
32561 <second: feature option="Automatic persistent-hash dialog -check 0"
32561 >second: accepted option
32561 <second: feature option="Info -button"
32561 >second: accepted option
32561 <second: feature option="Save in hash file -button"
32561 >second: accepted option
32561 <second: feature option="Clear Hash -button"
32561 >second: accepted option
32561 <second: feature done=1
32561 >second: accepted done
32576 >second: memory 82
32576 >second: new
random
32576 >second: variant fun01
32576 >second: level 40 1 0
32576 >second: post
32576 >second: hard
32576 >second: easy
32576 >second: ping 1
Impossible move , type = 0
32576 >second: force
32639 <second: setup (PNBRQ............HKpnbrq............hk) 8x8+0_fairy rknqknkr/pppppppp/8/8/8/8/PPPPPPPP/RKNQKNKR w KQkq - 0 1
32639 <second: pong 1
32654 >second: edit
32654 >second: #
32654 >second: Pa2
32654 >second: Pb2
32654 >second: Pc2
32654 >second: Pd2
32654 >second: Pe2
32654 >second: Pf2
32654 >second: Pg2
32654 >second: Ph2
32654 >second: Ra1
32654 >second: Kb1
32654 >second: Nc1
32654 >second: Qd1
32654 >second: Ke1
32654 >second: Nf1
32654 >second: Kg1
32654 >second: Rh1
32654 >second: c
32654 >second: Ra8
32654 >second: Kb8
32654 >second: Nc8
32654 >second: Qd8
32654 >second: Ke8
32654 >second: Nf8
32654 >second: Kg8
32654 >second: Rh8
32654 >second: Pa7
32654 >second: Pb7
32654 >second: Pc7
32654 >second: Pd7
32654 >second: Pe7
32654 >second: Pf7
32654 >second: Pg7
32654 >second: Ph7
32654 >second: .
Two Machines
New game (0): Fairy-Max 5.0b-Fairy-Max 5.0b (w)
32654 >first : computer
32654 >second: computer
32654 >first : black
32654 >first : time 6000
32654 >first : otim 6000
32654 >first : white
book hit = (NULL)
32654 >first : go
nps: w=-1, b=-1
32654 <first : Error (unknown command): computer
32654 <second: Error (unknown command): computer
32654 <first : # times @ 1506383062
32654 <first : # 16+16 pieces, centr = (1,1) R=32
32654 <first :  1      4        0          7 a2a4
Impossible move a2a4, type = 0
Impossible move a2a4, type = 32
32670 <first :  1     15        0          9 a2a3
Impossible move a2a3, type = 0
Impossible move a2a3, type = 32
32670 <first :  1     30        0         11 d2d3
Impossible move d2d3, type = 0
Impossible move d2d3, type = 32
32670 <first :  2     -2        0         19 d2d3 c8d6
Impossible move c8d6, type = 0
Impossible move c8d6, type = 32
32670 <first :  2     14        0         28 d2d4 c8d6
Impossible move c8d6, type = 0
Impossible move c8d6, type = 32
32670 <first :  2     17        0         47 f2f4 c8d6
Impossible move c8d6, type = 0
Impossible move c8d6, type = 32
32686 <first :  3     24        0        250 f2f4 c8d6 c2c3
Impossible move c2c3, type = 0
Impossible move c2c3, type = 32
32686 <first :  3     26        0        311 c2c4 c8d6 d2d3
Impossible move d2d3, type = 0
Impossible move d2d3, type = 32
32686 <first :  4     -6        0        532 c2c4 c8d6 d2d3 f8e6
Impossible move f8e6, type = 0
Impossible move f8e6, type = 32
32686 <first :  4     15        0        771 c2c3 c8d6 d2d4 f8e6
Impossible move f8e6, type = 0
Impossible move f8e6, type = 32
32686 <first :  5     11        1       1563 c2c3 c8d6 d2d4 f8e6 c1d3
Impossible move c1d3, type = 0
Impossible move c1d3, type = 32
32686 <first :  5     28        1       2693 c2c4 f8e6 d2d4 c8d6 f1e3
Impossible move f1e3, type = 0
Impossible move f1e3, type = 32
32686 <first :  6     10        1       5376 c2c4 f8e6 d2d4 c8d6 f1e3 d6e4
Impossible move d6e4, type = 0
Impossible move d6e4, type = 32
32686 <first :  6     30        3       6335 c2c3 c8d6 d2d4 f8e6 c1d3 d6e4
Impossible move d6e4, type = 0
Impossible move d6e4, type = 32
32686 <first :  7     31        3      11187 c2c3 c8d6 d2d4 f8e6 c1d3 d6e4 f1e3
Impossible move f1e3, type = 0
Impossible move f1e3, type = 32
32733 <first :  8     10        7      51506 c2c3 c8d6 d2d4 f8e6 c1d3 d6e4 f1e3 d8c8
Impossible move d8c8, type = 0
Impossible move d8c8, type = 32
32764 <first :  8     18       10      77649 c2c4 f8e6 d2d3 c8d6 f1e3 e6d4 f2f4 d6f5 e3f5 d4f5
Impossible move d4f5, type = 0
Impossible move d4f5, type = 32
32779 <first :  8     30       12      96638 d2d3 c8d6 e2e4 f8e6 f1e3 e6d4 c1e2 d4e6
Impossible move d4e6, type = 0
Impossible move d4e6, type = 32
32873 <first :  9     32       21     177370 d2d3 f8e6 e2e4 e6d4 c2c3 d4c6 f1e3 c8d6 c1e2
Impossible move c1e2, type = 0
Impossible move c1e2, type = 32
32920 <first :  9     38       26     228652 d2d4 c8d6 c2c3 f8e6 c1d3 d8c8 f1e3 d6e4 f2f4
Impossible move f2f4, type = 0
Impossible move f2f4, type = 32
32998 <first :  9     60       34     301108 h2h4 c8d6 h4h5 f8e6 h5h6 d6f5 c2c4 e6d4 d2d3
Impossible move d2d3, type = 0
Impossible move d2d3, type = 32
33014 <first : 10     70       35     317803 h2h4 c8d6 h4h5 f8e6 h5h6 e6c5 d2d4 c5e4 c2c3 d6f5
Impossible move d6f5, type = 0
Impossible move d6f5, type = 32
33108 <first : 11     67       45     399088 h2h4 c8d6 h4h5 f8e6 h5h6 d6f5 c2c4 e6d4 d2d3 d8c8 f1e3 f5e3 f2e3
Impossible move f2e3, type = 0
Impossible move f2e3, type = 32
33279 <first : 12     54       62     566713 h2h4 c8d6 h4h5 f8e6 h5h6 d6f5 c2c4 f5d4 d2d3 d4c6 f1e3 c6e5
Impossible move c6e5, type = 0
Impossible move c6e5, type = 32
33733 <first : 12     80      107    1005776 c2c4 c8d6 d1c2 d6c8 c4c5 f8e6 c2c4 e6f8 c4b3
Impossible move c4b3, type = 0
Impossible move c4b3, type = 32
33733 <first : # times @ 1506384140: real=1078 cpu=1078
33733 <first : # promo = 0 (`) GT = 0
33733 <first : move c2c4
33733 >second: time 6000
33733 >second: otim 5892
book hit = (NULL)
33733 >second: c2c4
33733 >second: black
33733 >second: go
silence
33748 <second: 1/2-1/2 {Stalemate}
GameEnds(28, Stalemate, 6)
Interrupting first
33748 >first : result 1/2-1/2 {Stalemate}
Interrupting second
33748 >second: result 1/2-1/2 {Stalemate}
33748 >first : force
33748 >first : ping 4
33748 >second: force
33748 >second: ping 2
33748 <first : Error (unknown command): result
33748 <second: # times @ 1506384140
33748 <second: # 8+8 pieces, centr = (1,1) R=0
33748 <second: resign { refuses own move }
33748 <second: Error (unknown command): result
33748 <second: pong 2
33748 <first : pong 4
GameEnds(28, Stalemate, 2)
82861 >first : quit
82861 >second: quit
vickalan
 
Posts: 17
Joined: 26 Jan 2017, 16:54

Re: Need help with about Fairy Max/ winboard

Postby vickalan » 30 Jan 2017, 06:24

Did you type out that (piece value) formula correctly?

If I try it for a knight (N=8) I get this:
= 1.1*N*(30+5/8*N).
= 1.1*8*(30 + 5/(8*8))
= 1.1*8*(30.078125) = 264.6875!!!

(Either there's a typo in the formula, or I'm making some silly mistake in applying it).
vickalan
 
Posts: 17
Joined: 26 Jan 2017, 16:54

Re: Need help with about Fairy Max/ winboard

Postby H.G.Muller » 30 Jan 2017, 15:04

1.1*N*(30 +(5/8)*N)

The operators * and / have equal priority, and associate from left to right. I forgot to mention the resultis in centi-Pawn. So for N=8 you get 1.1*8*35 = 308. Kaufman value for the Knight is 325, but the Knight is one of the strongest symmetric movers with 8 targets.

As to the problem, this is due to Fairy-Max. In the log you can see that Fairy-Max sends a 'setup' command with a FEN for the initial position with 3 Kings on the back rank (and no Hawk). So it did not understand the game definition properly. I will think abut what could cause this, but I ama bit busy now, as my wife's birthday party will start in an hour.
User avatar
H.G.Muller
 
Posts: 3080
Joined: 16 Nov 2005, 12:02
Location: Diemen, NL

Re: Need help with about Fairy Max/ winboard

Postby H.G.Muller » 31 Jan 2017, 10:27

OK, I thought a bit about this issue. Fairy-Max behaves here as if there is a mismatch between the initial position given in the game definition (8 4 5 7 3 5 4 8) and the piece definitions. From the setup FEN it prints, it seems that it thinks both piece 3 and 4 are K (while 4 was supposed to be N), that piece 5 is N (supposed to be B) and that 8 is R (supposed to be H). So like the order of the piece definitions is P, P, K, K, N, B, Q, R. Strange enough this is exactly the same order as in which the pieces are defined for 'variant normal'.So the switch from 'normal' (in which Fairy-Max always starts) and 'fun01' seems to have workedonly incompletely: Fairy-Max obviously understood the new pieceToChar table and initial position, but failed to read the new piece definitions to overwrite those from the previous variant. Like it somehow choked on the game definition between reading the back-rank setups and the definition of the Knight.

This is confirmed by the fact that it also doesn't echo the line with the ADGH to the GUI, (as seen from the debug log), which it should have if it reached that point in the game definition. Any stray character (e.g. an extra comma) could have this effect. That the second engine claims stalemate can then also be understood: WinBoard loads the start position received from the first engine into the second (to make sure both engines play from the same position in case this is a shuffle variant). But when none of the piece definitions has been read, the piece IDs WinBoard uses for this are all invalid, so the board remains empty. (The first engine did not have this problem, because internally it sets up the pieces by number,not by ID.) And when you have no pieces, you have no moves, and you are not in check, hence stalemate.

You can try the following: put two lines

Code: Select all
#
# test

in the fun01 game definition immediately after the second "8 4 5 7 3 5 4 8" line. This would terminate the game definition beforeany pieces are read. You can check this by double-clicking the fmax.exe icon to launch Fairy-Max in a terminal window, and type the following 3 lines to it:

Code: Select all
protover 2
new
variant fun01

This should give you the following:

Code: Select all
tellics say     Fairy-Max 5.0b
tellics say     by H.G. Muller
protover 2
feature myname="Fairy-Max 5.0b"
feature memory=1 exclude=1
feature setboard=0 xedit=1 ping=1 done=0
feature variants="normal,fun01,builderB,builder,nocastle,shatranj,asean,makruk,c
ambodian,ai-wok,courier,knightmate,capablanca,gothic,janus,falcon,cylinder,berol
ina,super,seirawan,spartan,great,light-brigade,king-of-the-hill,bifurcator,team-
mate,los-alamos,ciccolini,mexican,grande-acedrex,roman,almost-wildebeest,fairy"
feature option="Resign -check 0"
feature option="Resign Threshold -spin 800 200 1200"
feature option="Claim draw after -spin 50 0 200"
feature option="Ini File -file ./fmax.ini"
feature option="Multi-PV Margin -spin 0 0 1000"
feature option="Variant fairy selects -combo FIDE-Clobberers /// Clobberers-FIDE
 /// FIDE-Nutters /// Nutters-FIDE /// Clobberers-Nutters /// Nutters-Clobberers
 /// FIDE-Rookies /// Rookies-FIDE /// Clobberers-Rookies /// Rookies-Clobberers
 /// Nutters-Rookies /// Rookies-Nutters"
feature option="Makruk rules -combo makruk /// Cambodian /// Ai-wok"
feature option="Dummy Slider Example -slider 20 0 100"
feature option="Dummy String Example -string happy birthday!"
feature option="Dummy Path Example -path ."
feature option="Automatic persistent-hash dialog -check 0"
feature option="Info -button"
feature option="Save in hash file -button"
feature option="Clear Hash -button"
feature done=1
new
variant fun01
setup (PNBRQ............HKpnbrq............hk) 8x8+0_fairy rknqknkr/pppppppp/8/8
/8/8/PPPPPPPP/RKNQKNKR w KQkq - 0 1
piece test

Note that this gives indeed the same erroneous FEN with triple Kings as you got, but also that it ends with printing "piece test", indicating that it has read the definition up to the "# test" line.

Then you can move the two added lines one line down (below the white Pawn definition), and retry this. At some point before the Knight definition it should stop printing the "piece test", indicating that it was not able to recognize the immediately preceding piece-definition line as a valid definition. Then you can delete that line, and retype it (it might contain some invisible character). If it prints the "piece test" again you can keep moving the added "#" lines down, until you reach the intended end of the definition. (Where you can delete them,as the "# H& ADGH" line will take over its function.)

Sorry that this is so cumbersome; unfortuately Fairy-Max does not report back what it understood from the game definitions when it is reading those; it simply assumes that failure to read anything valid (i.e. an x,y pair to add to the moves of the current piece,or an ID:value pair to add yet another piece) means it reached the endof the definition (so that it can start toproces the "#" lines). So if something goes wrong, it is pretty hard to figure out where the source of the trouble lies.
User avatar
H.G.Muller
 
Posts: 3080
Joined: 16 Nov 2005, 12:02
Location: Diemen, NL

Re: Need help with about Fairy Max/ winboard

Postby vickalan » 31 Jan 2017, 21:28

It works! I found two offending lines (below). I retyped both to exactly as it was (so maybe there was invisible characters)?

p:74  16,24 16,6 15,5 17,5
n:259 14,7 31,7 33,7 18,7 -14,7 -31,7 -33,7 -18,7

(to my knowledge I never touched either of these lines. Can they be altered during the upload process?)

My first use of Fairy-Max was to watch a game with four hawks at the corners. The game ended with a white hawk and king mating a single black king (move 102). (I didn't immediately think a single hawk can force a mate).

I will keep experimenting with Fairy-max. Looks like an interesting great new tool!!!

Also, thanks for helping with the formula. I expressed it as follows (although I know the original parameters have meaning for you):

=33(N) + 0.6875(N)^2 (I like to see the relation of N-squared)

I trust that this is accurate for close-range leapers.

Btw, I've been experimenting with a new piece: the Huygens. It jumps in orthogonal directions by prime numbers of squares (causing opponent pieces to make inefficient maneuvers when chasing it).

It controls an infinite number of squares when played on an infinite chessboard (another game-format that I've been playing on). A new formula will be needed to estimate the value of the Huygens, but I won't burden with you with such a request right now. (maybe something I can work on later).

Anyway, thanks for your help! I'm sure I'll be discussing more things with you soon.:)
vickalan
 
Posts: 17
Joined: 26 Jan 2017, 16:54

Re: Need help with about Fairy Max/ winboard

Postby H.G.Muller » 01 Feb 2017, 10:15

vickalan wrote:(to my knowledge I never touched either of these lines. Can they be altered during the upload process?)

It must be something like that, although I have never seen it before. I guess it would have been very helpful if Fairy-Max, after loading a game definition, would print a confirmation like "# Loaded 8 pieces: P(4) P(4) K(10) N(8) B(4) R(4) Q(8) H(16)", so that you could immediately see where it encountered something irregular. But in fact I want to get rid of this 'low level' format for defining pieces anyway. It would be nice if the piece moves could be defined in Betza notation.

My first use of Fairy-Max was to watch a game with four hawks at the corners. The game ended with a white hawk and king mating a single black king (move 102). (I didn't immediately think a single hawk can force a mate).

I knew that a piece that only jumps 2 or 3 orthogonally could not force mate, despite attacking two orthogonally adjacent squares. (Which is a necessary requirement, with orthodox Kings.) So the diagonal moves must make the difference. (With only diagonal jumps it would be color bound, and thus also have no mating potential.) An extra single diagonal step (the 'Half-Duck') is already sufficient to have mating potential in combination with the orthogonal jumps. Another strong piece that covers two orthogonally adjacent squares, but cannot force mate is the Gnu (jumps like Knight or (3,1)). Amongst the asymmetric pieces the Silver General from Shogi (1 step diagonal or 1 step forward) cannot force mate.

To get a more precise estimate of the value of the Hawk you could try to define an initial position where one side has Hawks, and the other has 'Dragon Kings' (move as Rook or 1 step diagonally), which are worth ~7 Pawns, and play a couple of hundred bullet games to see which side does better. Note, however, that pieces that can jump over a distance of 3 often lead to a non-quiet initial position, because they can attack (through forks) opponent back-rank pieces that are still boxed in and unprotected, from beyond the zone defended by the Pawns. That would give a misleading value estimate. This can beprevented by starting from a position with the Pawns on 3rd rank instead of 2nd.

I will keep experimenting with Fairy-max. Looks like an interesting great new tool!!!

I trust that this is accurate for close-range leapers.

Indeed, it works reasonably well. I never found a similar formula for describing sliding pieces.

It controls an infinite number of squares when played on an infinite chessboard (another game-format that I've been playing on). A new formula will be needed to estimate the value of the Huygens, but I won't burden with you with such a request right now. (maybe something I can work on later).

Well, a Rook also covers an infinite number of squares on an infinite board. But how much that is worth will depend very much on what the strategic goal of the game is. If the important game elements (Kings and promotion zones) are all confined in a narrow area, and the King has only a finite range, moving very far away will be a pointless exercise; there just wouldn't be anything of interest there. So moves with a range much larger than the typical spread of the on-sliding pieces won't contribute much to the value.

Of course the absence of board edges also can changes the nature of pieces very much; Rooks cannot force checkmate without at least one corner. There also seem to be pieces that can force checkmate on boards of arbitrarily large size, but not on a quarter-infinite board. (Because on any finite size board you can always force a position where the bare King is between your own King and an edge, by forcing your King to the central square, while on an infinite quadrant the bare King might run off to infinity without you ever being able to catch up with it.)
User avatar
H.G.Muller
 
Posts: 3080
Joined: 16 Nov 2005, 12:02
Location: Diemen, NL

Re: Need help with about Fairy Max/ winboard

Postby vickalan » 01 Feb 2017, 19:33

H.G.Muller wrote:...and play a couple of hundred bullet games to see which side does better.
Is the tournament option the way to have the computer play multiple games automatically?
I did try one 5-game series, but haven't yet explored all its options yet.
Well, a Rook also covers an infinite number of squares on an infinite board. But how much that is worth will depend very much on what the strategic goal of the game is.
A rook will control infinite squares, but if it's blocked by pieces of either color it's range will be limited. That will give the Huygens some advantage over pieces like the bishop or a rook. My rough (preliminary) estimate of this piece when played on "Chess on an Infinite Plane" is as follows.

(The span of the initial setup of pieces on the board is 18 files x 20 ranks).
Huygens: jumps 5, 7, 11, 13, 17, 19, 23, 29, 31...(prime numbers) in orthogonal directions.
so assume useful attacks are (when centered):
horizontal: -7,-5, 5, 7
vertical: -7,-5, 5, 7, 11
so attacking squares = 9
Using the Muller formula:
V(huygens) = 33(N) + 0.69(N)^2
V(huygens) = 33(9) + 0.69(9)^2 = 353 (slightly more than a bishop)

moving very far away will be a pointless exercise; there just wouldn't be anything of interest there. So moves with a range much larger than the typical spread of the non-sliding pieces won't contribute much to the value.
I agree. I'm currently in three games of Chess on an Infinite Plane (but only to about move 10 so far) and few pieces have travelled outside the initial span of pieces. The only case where I can think of travelling far is like you said: a king trying to avoid checkmate.

If sliding pieces are trying to mate an escaping king, the calculation on how to do it (or even if it's possible) might not be too much more difficult than it is with chess. If jumpers are involved the calculation is probably more complicated. If the help of a Huygens is required, this might be the most complicated since there is no simple formula to derive prime numbers.

The largest known prime number is (2)^74,207,281 − 1 (has 22,338,618 digits) so if you have a king that goes farther than this it might be very difficult to determine if it can be mated of not.:)

Btw, the Huygens is named after Christiaan Huygens, a Dutch mathematician and the key inventor of the pendulum clock.
Last edited by vickalan on 19 Feb 2017, 16:56, edited 2 times in total.
vickalan
 
Posts: 17
Joined: 26 Jan 2017, 16:54

Re: Need help with about Fairy Max/ winboard

Postby H.G.Muller » 02 Feb 2017, 10:33

For a simple match between two players, you can set the 'Games per Match' in the Tournament options dialog, and select 'Machine Match' from the 'Mode' menu to start it (after starting WinBoard with the desired engines, and selecting the variant). You can control the file where the games are saved from the Tournament Options or Save Options dialog.

WinBoard will alternate colors in a match, however, so if you define an asymmetric variant where only white (say) has Hawks, the match result that WinBoard displays in the title bar does not reflect the Hawk performance. You would have to load the PGN file with the saved games to see the latter, because in the title bar of the Game List window WinBoard will then mention the number of white and black wins.

An alternative is to start WinBoard with the 'Additional option' -sameColorGames 100. This parameter overrules the 'Games per Match', and forces the first engine to always play with white, so that the match result immediately reflects the white and black performance. To measure the value of a certain material imbalance, you would have to play matches with reversed colors, to average out the white advantage.
User avatar
H.G.Muller
 
Posts: 3080
Joined: 16 Nov 2005, 12:02
Location: Diemen, NL

Re: Need help with about Fairy Max/ winboard

Postby vickalan » 02 Feb 2017, 21:30

Using Fairy-Max I did a little test (asymmetric game sides), but ran games from the tournament menu (not machine match). It plays the game from the same color each time (maybe switching engines although both are Fairy-max).

But I don't understand the message when the match is over:
"1. 6.0/10 Fairy-max 4.8
2. 4.0/10 Fairy-max 4.8"
This doesn't match the results from the match - maybe it's the result of engine vs. engine although as mentioned both are Fairy-Max.

(I get the match results from the "tourney" file, such as "+++++-+=++").

So in a little test I was trying to confirm your results about the value of a man "guard". I ran 4 sets of 20 games on a 10 x 8 board. Chess pieces were normal except the asymmetrical (4 bishops) vs. (2 bishops and 2 guards). Half the games used 260 for the value of a guard, the other half 350. (The purpose of changing the value is because its value is "unknown" going into the test).

Here's the results:

(with value of guard = 260)
bishops win as black: 16/20 games
bishops win as white: 17/20 games
(with value of guard = 350):
bishops win as black: 12.5/20 games
bishops win as white: 15/20 games

Overall:(based on small 80 game test)
Score (bishops): 75.6%
Score (guards): 24.4%


So this (small) test seems to validate your conclusion that a guard is not too much more powerful than a bishop (and may be less?).

Let me know if you see anything that looks irregular about this test methodology. There might be more tests I do in the future, and just want to know that I'm applying Fairy-max in a valid way.

Regards, :)
vickalan
 
Posts: 17
Joined: 26 Jan 2017, 16:54

Re: Need help with about Fairy Max/ winboard

Postby H.G.Muller » 02 Feb 2017, 23:27

Indeed it switches engines, but when you play an engine against itself it doesn't show. But it affects how it counts the result of the match, making it useless for yourpurpose. Because you don't want to know how the players do, but how the colors do.

Your methodology looks sound, except that the low number of games causes a sizable statistical error. The standard error in the score percentage for N games is about 40%/sqrt(N), so for the 80 games it would be about 4.5%. So the true Bishop score will most likely be somewhere between 70% and 80%, which is still very much better than 50%. Normally a Pawn advantage leads to a 65% score, so the Bishop-pair seems to be more than 1 Pawn better (perhaps even 1.5 Pawn) than the Guard pair.

You could try Guards vs Knights to get a score closer to 50%, and direct evidence for which of the two performs better. Note that on 10x8 the Bishop gains value compared to 8x8, while the Knight loses value. Even a lone Bishop is worth 0.5 Pawn more than a Knight on 10x8, (where on 8x8 they are equal), and a Bishop pair is good for a bonus of 0.5 Pawn in both cases.

Be sure to define the Guard with a lower-case ID, so that it will be center seeking. Not centralizing such a slow piece would probably suppress its effective value a lot. The most reliable results will be those where the Guard value you defined corresponds to the value implied by the game result.
User avatar
H.G.Muller
 
Posts: 3080
Joined: 16 Nov 2005, 12:02
Location: Diemen, NL

Next

Return to Winboard and related Topics

Who is online

Users browsing this forum: No registered users and 4 guests