Ultima

Discussion of chess software programming and technical issues.

Moderator: Ras

User avatar
hgm
Posts: 28413
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Ultima

Post by hgm »

Evert wrote:That misses out castling, by the way, which I don't think is a big problem in practice.
Just as well: in FIDE rules castling does NOT reset the 50-move counter.

The philosophy is apparently that castling, although irreversible, is not really progress towards decisive victory. By that line of reasoning, Daniel's proposal to not reset on Pawn pushes in Shatran-like games does make some sense. But not entirely, as a Ferz, although weak, is stronger than a Pawn, and promotions can be a necessary step on the way to victory. (E.g. in KFPKF or KFPPKF, which could be difficult to win when the Ferzes are on unequal colors.)

In Ultima, however, Pincer 'Pawn' moves are no sign of progress at all.
User avatar
hgm
Posts: 28413
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Ultima

Post by hgm »

OK, I found a bug in the way the SAN generator worked in variants that do not know check (such as variant alien). An illegal move was then erroneously treated as if it was legal and needed no disambiguation, because this is the way moves that are illegal because they move into check are treated in variants with check (to even generate pretty SAN for such illegal moves). So only if a second disambiguation test where check detecton is switched off considers them illegal as well, they are treated as illegal, and will be fully disambiguated. But if check detection was off from the start, this second test was never done.

Anyway, I fixed it now, in the Alien version ( http://hgm.nubati.net/WinBoard-4.5.beta.zip )

There still might be problems on loading a game, though: it seems WinBoard checks the legality of all moves read from a PGN file before any of them are sent to the first engine. So the board updates willnot come before the moves are checked, which will lead to the pieces captured by side effects remaining initially on the board. Which again can lead to false illegal-move claims because of alleged blocking.

I guess something has to be changed fundamentally in the way WinBoard operates. Problem is that even when I already send the movestothe engine during PGN reading, this will still create a race condition, where WB might start parsing the next move before the setup response to the previous move has came in. It really should wait for that setup, but it can only do that if we make the sendng of setup commands by the engine obligatory in variant alien on any move. Perhaps we cannot escape that.
Daniel Shawul
Posts: 4186
Joined: Tue Mar 14, 2006 11:34 am
Location: Ethiopia

Re: Ultima

Post by Daniel Shawul »

The cobra piece font 'S' is currently big white box (undefined I guess).
It doesn't promote but it still has the 'disambiguity problem'. Why not use algebraic notation
fully in alien mode. It should not try to interpret anything in that mode. It is much
safer and also saves you from adding specialized code for the PGN parser.
Are you sure you give enough Piece-Square points for driving a bare King into the corner? In Spartacus I switch to another PST for the bare King (when I detect in the root it is bare), with greatly exagerated bonus for centralization. This helps in mating with many weak pieces, where you run the risk of getting trapped into a local eval maximum by centralizing your many weak pieces + King, rather than using them to drive the single King into the corner (for which you would have to leave the center with your own pieces).
I still use the same piece square tables as in middle game ! And the bonuses are still small
changing by +5 every step. And both the kings and pieces/pawns share it so it doesn't work.
To put the opponent king to a corner, either his own king or another major piece has to step out of the center.
So it can't progress once all his pieces/king is centralized unless it sees a mate.
User avatar
Evert
Posts: 2929
Joined: Sat Jan 22, 2011 12:42 am
Location: NL

Re: Ultima

Post by Evert »

hgm wrote: There still might be problems on loading a game, though: it seems WinBoard checks the legality of all moves read from a PGN file before any of them are sent to the first engine. So the board updates willnot come before the moves are checked, which will lead to the pieces captured by side effects remaining initially on the board. Which again can lead to false illegal-move claims because of alleged blocking.
Wouldn't the way to fix this be to switch off legality checking altogether?
Of course, this can still lead to a problem where one piece is captured but not removed from the board and then a later move that was unambiguous in the game is now ambiguous due to the presence of the ghost-piece.
I guess something has to be changed fundamentally in the way WinBoard operates. Problem is that even when I already send the movestothe engine during PGN reading, this will still create a race condition, where WB might start parsing the next move before the setup response to the previous move has came in. It really should wait for that setup, but it can only do that if we make the sendng of setup commands by the engine obligatory in variant alien on any move. Perhaps we cannot escape that.
I think that in general, if the rules are not known, it's not possible to properly load and parse a PGN file.
Perhaps there can be a feature option to let the GUI know that the engine supports sending setup commands when being fed a game, and then XBoard/WinBoard can wait for that reply if the engine says it will send the board FEN?
By the way - are all these extra features and commands for supporting variants (extra en-passant squares, suicide moves, setup options after a move is made) documented somewhere? At the moment I try to remember where they're discussed in case I need them, but it would be handy if they were collected together in one place.
User avatar
hgm
Posts: 28413
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Ultima

Post by hgm »

When you use the Cobra for the Pincers, you should assign the P and p in the /fontPieceToCharTable in ultima.ini to the Cobra in stead of the Lance.(Cobra is the next piece after Lance, so just swap the P and p with the following period.) If you are changing pieceToCharTables anyway, I want to urge you to change the default configuration with which you ship Nebiyu to C for Coordinator and X for Chameleon.

What you propose is already to a large extent in WinBoard: there is code to print all illegal moves with full from- and to-squares (after the piece indicator). I changed that recently to omitting the from-square if there is only a single piece of the given type on the board; in that case the move should never be ambiguous. Actually one could still generate reasonably pretty SAN in complete ignorance of the move, if ambiguity was done in another way (not based on legal moves to the same square, but just on presence on the board). With Pincers on c1, d1, f1 and g1 it would still be nice to write Pfe1.

The problem was that the test for when to execute this code was buggy, so it was not used.

About the PST: can't you switch to other PST for the bare King? I suppose that in general you use different middle-game PST for black and white pieces anyway.
User avatar
hgm
Posts: 28413
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Ultima

Post by hgm »

Evert wrote:Wouldn't the way to fix this be to switch off legality checking altogether?
Of course, this can still lead to a problem where one piece is captured but not removed from the board and then a later move that was unambiguous in the game is now ambiguous due to the presence of the ghost-piece.
Legality checking indeed has to be off in Ultima, so I guess you give a better description of the problem than I dis. Blocking of moves would indeed not be a problem with legality testing off. But ambiguity does.

Normally there is no problem: even with legality testing off WB adds disambiguators based on its idea of how the pieces move, (which might be completely wrong), which are exactly the disambiguators it needs when it parses them based on the same misconception about their move. But this is only true if the parsing and generation were done on the same board position.
I think that in general, if the rules are not known, it's not possible to properly load and parse a PGN file.
Perhaps there can be a feature option to let the GUI know that the engine supports sending setup commands when being fed a game, and then XBoard/WinBoard can wait for that reply if the engine says it will send the board FEN?
The board updates are only allowed in variant alien anyway. So we could make it obligatory in that variant. There is no reason to use that variant for games where the GUI would not need the board update anyway; for that varaint fairy would be the natural choice. (Setups for inital positions are accepted in any variant.) The only drawback is that you now also have to send it when it is not stricty needed because you play an ordinary Chess move (like an Ultma non-capture,or capture with the King).
By the way - are all these extra features and commands for supporting variants (extra en-passant squares, suicide moves, setup options after a move is made) documented somewhere? At the moment I try to remember where they're discussed in case I need them, but it would be handy if they were collected together in one place.
Theonly description that exists is on the http://hgm.nubati.net/alien.html page.
User avatar
hgm
Posts: 28413
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Ultima

Post by hgm »

I still detect some suspect behavior. I tried to self-play KLLPPKI

Code: Select all

[Event "Computer Chess Game"]
[Site "CHESS_LAPTOP"]
[Date "2011.03.22"]
[Round "-"]
[White "NebiyuAlien_1.2"]
[Black "NebiyuAlien_1.2"]
[Result "1/2-1/2"]
[TimeControl "40/60"]
[Variant "alien"]
[FEN "2l1k3/3pp3/8/7l/8/8/8/I2K4 w - - 0 1"]
[SetUp "1"]

{--------------
. . l . k . . .
. . . p p . . .
. . . . . . . .
. . . . . . . l
. . . . . . . .
. . . . . . . .
. . . . . . . .
I . . K . . . .
white to play
--------------}
1. Id4 {-2.50/10} La6 {+2.60/10 1.1} 2. Ih4 {-2.55/11 1.3} Lc6
{+2.45/11 1.5} 3. Kd2 {-2.40/11 1.4} Le4 {+2.50/11 1.4} 4. Ke1
{-2.50/11 1.4} Pe7e5 {+2.50/10 1.4} 5. Ig5 {-2.60/11 1.2} Pd7d5
{+2.65/10 1.4} 6. Kf2 {-2.70/11 1.4} Ld4 {+2.65/11 1.5} 7. Kf3
{-2.40/11 1.5} Kf7 {+2.45/12 1.5} 8. Ih6 {-2.00/10 1.4} Kg8 {+2.65/7 1.2}
9. Kg3 {+0.00/14 1.3} Lg1 {+0.50/12 1.5} 10. Kh4 {+0.00/15 2.2} Pd5d2
{+0.00/11 1.1} 11. Kh3 {-0.70/14 1.9} Pd2d4 {+0.00/13 1.2} 12. Kh4
{+0.00/15 2.0} Kf7 {+0.60/13 1.3} 13. Kh3 {+0.00/15 1.7} Ke7 {+0.00/13 1.5}
14. Kh4 {+0.00/15 2.2} Lf2 {+0.00/13 1.5} 15. Kg5 {+0.00/12 1.1} Lg3
{+0.65/13 2.2} 16. Kxh5 {+0.50/15 1.4} Lh2 {+299.46/13 1.5} 17. Kg4
{-7.90/13 3} Lh8 {+7.95/12 1.5} 18. Kf5 {-7.90/13 5} Pe5e6 {+7.85/10 1.5}
19. Ke4 {-7.95/11 1.1} Pd4a4 {+7.85/10 1.5} 20. Kd5 {-7.85/11 2.2} Lh1
{+7.65/10 1.4} 21. Kc4 {-7.80/11 1.5} Le4 {+7.80/10 1.5} 22. Kb4
{-7.85/12 2.5} Pa4a6 {+7.85/10 1.1} 23. Kb5 {-7.85/11 0.8} Pa6a2
{+7.85/10 1.5} 24. Kc5 {-7.80/11 2.7} Lb1 {+7.80/10 1.5} 25. Kd4
{-7.75/11 4} Pa2d2 {+7.60/8 1.4} 26. Ke3 {-7.80/11 1.4} Pd2d6
{+7.80/10 1.5} 27. Kf4 {-7.80/9 0.5} Lg1 {+7.70/10 1.5} 28. Ke5
{-299.70/10 4} Pd6b6 {+7.80/10 1.6} 29. Kd5 {-7.65/9 0.3} Lh1
{+7.60/10 1.5} 30. Kd4 {-7.65/9 0.3} Pb6d6 {+7.65/10 1.5} 31. Ke5
{-7.70/9 0.3} Kd7 {+7.85/10 1.5} 32. Kd4 {-7.70/9 0.3} Pd6b6 {+7.75/10 1.5}
33. Kc5 {-299.64/10 0.7} Pb6c6 {+7.80/10 1.6} 34. Kd4 {-7.70/9 0.4} Lh6
{+299.67/9 1.2} 35. Ke4 {-7.60/9 0.4} Lg5 {+7.75/10 1.6} 36. Kd4
{-299.78/8 0.3} Kd6 {+7.80/8 1.3} 37. Ke4 {-299.91/8 0.2} Pc6c7
{+7.85/10 1.6} 38. Kd4 {-299.83/8 0.2} Pc7d7 {+7.80/8 1.3} 39. Ke4
{-299.83/8 0.3} Lg6 {+7.80/10 1.8} 40. Kd4 {-299.87/6 0.1} Lh5
{+7.85/10 1.9} 41. Ke4 {-7.90/11 6} Kc5 {+7.70/10 1.5} 42. Ke3 {-7.90/11 3}
Kc4 {+7.85/8 1.1} 43. Kf4 {-7.90/11 2.1} Pd7d8 {+7.85/8 1.2} 44. Ke4
{-7.90/11 4} Pd8d4 {+7.75/8 1.3} 45. Ke3 {-7.90/11 2.7} Lh7 {+7.90/10 1.5}
46. Kf4 {-7.95/11 4} Pe6b6 {+299.75/9 1.2} 47. Ke5 {-7.85/11 3} Kc5
{+7.75/8 1.4} 48. Kf4 {-7.90/11 3} Kd5 {+7.90/8 1.5} 49. Kg5 {-7.95/11 4}
Lc7 {+7.90/8 1.3} 50. Kf5 {-7.95/11 3} Pb6b3 {+7.90/10 1.5} 51. Kg4
{-7.95/11 2.3} Ke5 {+7.95/10 1.6} 52. Kf3 {-7.90/11 1.6} Lc1 {+7.90/10 1.6}
53. Kg2 {-7.95/10 0.7} Kf4 {+299.90/10 1.4} 54. Kf2 {-299.89/10 0.8} Lh1
{+7.90/10 1.5} 55. Ke2 Pd4d7 {+7.85/10 1.6} 56. Kd2 {-7.85/11 1.6} Lb1
{+299.85/9 1.1} 57. Ke2 Pb3e3 {+7.90/10 1.6} 58. Kd2 {-7.90/11 1.9} Lg1
{+299.77/9 1.2} 59. Kd3 {-7.95/11 6} Pe3e4 {+7.80/8 1.3} 60. Kc4
{-7.75/9 0.4} Pe4e5 {+299.81/9 1.2} 61. Kd5 {-299.79/10 5} Pd7c7
{+299.81/9 1.6} 62. Kd6 {-299.91/8 2.4} Lb6 {+6.05/8 1.6} 63. Ke7 Lc5
{+6.20/7 1.6} 64. Kf7 {-5.45/6 0.1} Pc7d7 {+3.45/12 1.3} 65. Kg6
{+0.00/15 0.1} Pe5h5 {+0.00/96 1.1} 66. Kh7 {+0.00/17 0.1}
{Draw by fifty move rule} 1/2-1/2
Now after 5. Ig5 there is this positon:

4k3/3p4/8/4p1Il/4l3/8/8/4K3 b - - 1 5
[d]4k3/3p4/8/4p1Rn/4n3/8/8/4K3 b - - 1 5
(R=Immoblizer, n=Long Leaper)

Why doesn't play white Pe5xf5 here, to capture the Immobilizer? The score of the move it plays is only +2.65, so it does NOT think it will gain it anyway (although it later does).

On move 16 white plays the incredible blunder Kxh5??? with score +0.5, taking the poisoned Long Leaper, and losing the Immobilizer by the skewer 16... Lh2!, which (correctly) has a mate score.

8/4k3/7I/4p1Kl/3p4/6l1/8/8 w - - 8 16
[d]8/4k3/7R/4p1Kn/3p4/6n1/8/8 w - - 8 16
Lh5 is poisoned: 16. Kxh5??? Lh2!

However, the mate doesn't materialize. There is again the pathological switching between mate scores and normal eval during deepening, aimless moving, and finally a 50-move draw.

I also tried the simpler KLK; there the same behavior occurs, although finally (after 35 moves) it salvages the win through stalemate. (More by luck than planning, it seems to me):

Code: Select all

[Event "Computer Chess Game"]
[Site "CHESS_LAPTOP"]
[Date "2011.03.22"]
[Round "-"]
[White "NebiyuAlien_1.2"]
[Black "NebiyuAlien_1.2"]
[Result "0-1"]
[TimeControl "40/60"]
[Variant "alien"]
[FEN "2l1k3/8/8/8/8/8/8/3K4 w - - 0 1"]
[SetUp "1"]

{--------------
. . l . k . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . K . . . .
white to play
--------------}
1. Kd2 {-4.55/13} Kf8 {+4.55/12 1.4} 2. Kd3 {-4.55/13 2.3} Lb7
{+299.42/11 1.4} 3. Kd4 {-4.55/11 1.2} Lh7 {+4.50/10 1.2} 4. Ke5
{-4.50/11 1.1} Lh4 {+4.50/10 1.3} 5. Kd5 {-4.55/13 5} Kg8 {+4.45/12 1.5} 6.
Ke5 {-4.45/11 0.9} Kf7 {+4.45/10 1.1} 7. Kd5 {-4.55/11 1.0} Kg6
{+4.55/12 1.5} 8. Ke5 {-4.55/11 1.3} Le7 {+4.55/10 1.4} 9. Kd4
{-4.55/11 1.0} Kf5 {+4.55/10 1.5} 10. Kd5 {-4.55/11 0.7} Le5 {+4.55/10 1.3}
11. Kc4 {-4.55/13 1.7} Ke6 {+4.55/10 1.2} 12. Kd3 {-4.55/13 2.1} Kf6
{+4.55/10 1.2} 13. Kc4 {-4.55/13 3} Kg6 {+4.55/10 1.2} 14. Kd3
{-4.55/11 1.0} Lb2 {+299.67/11 1.5} 15. Ke4 {-4.55/11 1.1} Kg5
{+4.55/10 1.5} 16. Kd5 {-4.55/11 1.2} Kg4 {+4.55/10 1.5} 17. Ke4
{-4.55/11 1.1} Lb5 {+4.55/10 1.6} 18. Kd4 {-4.55/11 1.0} Kf5 {+4.55/10 1.5}
19. Ke3 {-4.55/11 0.9} Lc5 {+4.55/10 1.2} 20. Kd3 {-4.55/11 0.7} Lf2
{+4.55/10 1.3} 21. Kc4 {-4.55/11 0.6} Ke4 {+4.55/10 1.2} 22. Kb5
{-4.55/11 0.7} La7 {+4.55/12 1.6} 23. Kc4 {-4.55/11 0.7} Ld4
{+299.55/11 1.1} 24. Kb5 {-4.55/13 0.8} Ld5 {+4.55/12 1.6} 25. Kb6
{-4.60/14 4} Lb3 {+299.35/12 1.6} 26. Kc7 {-4.60/12 0.5} Lc3 {+4.60/13 1.6}
27. Kc8 {-4.60/12 0.4} Le5 {+4.60/15 1.6} 28. Kb7 {-4.60/14 2.5} Kf5
{+4.60/13 1.6} 29. Kb8 {-4.60/12 0.4} Ke6 {+4.60/13 1.5} 30. Kb7
{-4.60/12 0.3} Le4 {+4.60/13 1.6} 31. Kb6 {-4.60/12 0.7} Kd5 {+4.55/12 1.6}
32. Ka7 {-4.60/12 0.4} Kc6 {+299.92/17 1.3} 33. Ka8 {-299.93/11 0.2} Kc7
{+299.94/18 1.4} 34. Ka7 La4 {+299.96/18 1.4} 35. Ka8 La5 {+299.98/19 1.7}
{Black wins} 0-1
By hand I need only 13 moves to mate, so 35 should be considered pretty poor. Could this be a null-move problem?

Code: Select all

[Event "Computer Chess Game"]
[Site "CHESS_LAPTOP"]
[Date "2011.03.22"]
[Round "-"]
[White "NebiyuAlien_1.2"]
[Black "hgm"]
[Result "0-1"]
[TimeControl "40/60"]
[Variant "alien"]
[FEN "2l1k3/8/8/8/8/8/8/3K4 w - - 0 1"]
[SetUp "1"]

{--------------
. . l . k . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . K . . . .
white to play
--------------}
1. Kd2 {-4.55/13} Kd7 2. Kd1 {-4.60/14 1.6} Kd6 3. Kc1 {-4.60/14 1.5} Kd5
4. Kb2 {-4.60/16 20} Kd4 5. Kb3 {-299.89/15 6} Lc6 6. Kb4 {-4.60/14 3} Lb7
7. Ka5 {-4.55/13 1.0} Kc4 8. Ka6 {-4.60/14 1.1} Lb2 9. Ka7 {-299.89/15 2.1}
Kc5 10. Kb8 {-299.91/17 0.5} Kc6 11. Ka8 {-299.93/19 0.6} Kc7 12. Ka7 La2
13. Ka8 La3
{Black wins} 0-1
Daniel Shawul
Posts: 4186
Joined: Tue Mar 14, 2006 11:34 am
Location: Ethiopia

Re: Ultima

Post by Daniel Shawul »

Changing chameleon to X and coordinator to C doesn't work. For some reason it stopped getting appropriate FENs. I suspect it is a conflict between the letter defined in the ultima.ini and engine's ini. I thought at first it was a bug in nebiyu but it is not, since it works fine from its console. Try to replace the ulima specification with this one. Also I noticed that I was mapped to E (elephant) but in the ultima.ini it matches F (ferz) , if that helps. You are trying to use the font for both orthodox and ultima chess which may cause problems. I also get an initial board with kings facing eachother even if I specified the correct FEN in alien.ini with proper king placement.

Code: Select all


variant ultima
8 8
.*PpKkWwCcXxLlIi
clxwkxli/pppppppp/8/8/8/8/PPPPPPPP/ILXKWXLC w - - 0 1
#PNBRQFEACWMOHIJGDVLSUKpnbrqfeacwmohijgdvlsuk
 ......I....C.L.WX.P..K......i....c.l.wx.p..k 
P  150  pincherpawn
p  150  pincherpawn
K 1000  king
k 1000  king
W  400  withdrawer
w  400  withdrawer
C  300  coordinator
c  300  coordinator
X  700  chameleon
x  700  chameleon
L  400  longleaper
l  400  longleaper
I  900  immobilizer
i  900  immobilizer
0 8 8
46 1
Daniel Shawul
Posts: 4186
Joined: Tue Mar 14, 2006 11:34 am
Location: Ethiopia

Re: Ultima

Post by Daniel Shawul »

Incredible bug indeed. The problem is when a piece become immobilized I set the board[sq] = -board[sq] so that I skip generation of moves for -ve pieces. I forgot that immobilized pieces do participate in captures to help sandwich opponents as in the case of pincer captures. Well I have a dedicated flag to indicate if a piece is immobilized now... It may have caused lot of other problems too. Now it fixed as shown below..

Code: Select all


force
setboard 4k3/3p4/8/4p1Il/4l3/8/8/4K3 b - - 1 5
d

            a b c d e f g h
            * * * * * * * * * * * * * * * * * * * * * * * *
            * * * * * * * * * * * * * * * * * * * * * * * *
            * * * * * * * * * * * * * * * * * * * * * * * *
            * * * * * * * * * * * * * * * * * * * * * * * *
          8 . . . . k . . . * * * * * * * * * * * * * * * * 8
          7 . . . p . . . . * * * * * * * * * * * * * * * * 7
          6 . . . . . . . . * * * * * * * * * * * * * * * * 6
          5 . . . . p . I l * * * * * * * * * * * * * * * * 5
          4 . . . . l . . . * * * * * * * * * * * * * * * * 4
          3 . . . . . . . . * * * * * * * * * * * * * * * * 3
          2 . . . . . . . . * * * * * * * * * * * * * * * * 2
          1 . . . . K . . . * * * * * * * * * * * * * * * * 1
            * * * * * * * * * * * * * * * * * * * * * * * *
            * * * * * * * * * * * * * * * * * * * * * * * *
            * * * * * * * * * * * * * * * * * * * * * * * *
            * * * * * * * * * * * * * * * * * * * * * * * *
            a b c d e f g h

        4k3/3p4/8/4p1Il/4l3/8/8/4K3 b - - 1 5

analyze
3 29996 0 454  e4b1 e1d2 b1b2
4 1155 0 925  e5f5 e1f2 h5g5 f2e1
5 29994 0 1167  e5f5 e1f2 h5g5 f2e1 e4h1
5 29994 0 1178  e5f5 e1f2 h5g5 f2e1 e4h1
6 1160 1 2386  e5f5 e1d2 h5g5 d2e1 e8e7 e1f2
6 1160 1 2852  e5f5 e1d2 h5g5 d2e1 e8e7 e1f2
7 1195 3 8045  e5f5 e1f1 e8e7 f1g1 h5e2 g1h1 d7d5
7 1195 3 9597  e5f5 e1f1 e8e7 f1g1 h5e2 g1h1 d7d5
8 1190 4 17171  e5f5 e1f2 h5h2 f2g1 h2e5 g1h1 e8e7 h1g1
8 1190 7 33954  e5f5 e1f2 h5h2 f2g1 h2e5 g1h1 e8e7 h1g1
9 29990 9 38111  e5f5 e1d2 h5e2 d2e1 e8e7 e1f1 e4h1 f1e2 h1h2
9 29990 9 38928  e5f5 e1d2 h5e2 d2e1 e8e7 e1f1 e4h1 f1e2 h1h2
10 29990 12 49207  e5f5 e1d2 h5e2 d2c3 e4b1 c3d4 b1b4 d4d5 b4c4
10 29990 12 50176  e5f5 e1d2 h5e2 d2c3 e4b1 c3d4 b1b4 d4d5 b4c4
11 29992 14 56835  e5f5 e1d2 h5e2 d2c3 e4c4 c3d3 e8e7
11 29992 15 58475  e5f5 e1d2 h5e2 d2c3 e4c4 c3d3 e8e7
12 29992 23 86765  e5f5 e1d2 h5e2 d2c3 e4c4 c3d3 e8e7
12 29992 25 94813  e5f5 e1d2 h5e2 d2c3 e4c4 c3d3 e8e7
13 29992 36 132623  e5f5 e1d2 h5e2 d2c3 e4c4 c3d3 e8e7
13 29992 39 143705  e5f5 e1d2 h5e2 d2c3 e4c4 c3d3 e8e7
14 29992 92 377003  e5f5 e1d2 h5e2 d2e1 e2h2 e1f1 e4h1
14 29992 104 423352  e5f5 e1d2 h5e2 d2e1 e2h2 e1f1 e4h1
15 29992 181 743188  e5f5 e1d2 h5e2 d2e1 e2h2 e1f1 e4h1
15 29992 201 816771  e5f5 e1d2 h5e2 d2e1 e2h2 e1f1 e4h1
exit
nodes = 1686733 <18 qnodes> time = 4797ms nps = 351622
splits = 0 badsplits = 0

Code: Select all


setboard 8/4k3/7I/4p1Kl/3p4/6l1/8/8 w - - 8 16
d

            a b c d e f g h
            * * * * * * * * * * * * * * * * * * * * * * * *
            * * * * * * * * * * * * * * * * * * * * * * * *
            * * * * * * * * * * * * * * * * * * * * * * * *
            * * * * * * * * * * * * * * * * * * * * * * * *
          8 . . . . . . . . * * * * * * * * * * * * * * * * 8
          7 . . . . k . . . * * * * * * * * * * * * * * * * 7
          6 . . . . . . . I * * * * * * * * * * * * * * * * 6
          5 . . . . p . K l * * * * * * * * * * * * * * * * 5
          4 . . . p . . . . * * * * * * * * * * * * * * * * 4
          3 . . . . . . l . * * * * * * * * * * * * * * * * 3
          2 . . . . . . . . * * * * * * * * * * * * * * * * 2
          1 . . . . . . . . * * * * * * * * * * * * * * * * 1
            * * * * * * * * * * * * * * * * * * * * * * * *
            * * * * * * * * * * * * * * * * * * * * * * * *
            * * * * * * * * * * * * * * * * * * * * * * * *
            * * * * * * * * * * * * * * * * * * * * * * * *
            a b c d e f g h

        8/4k3/7I/4p1Kl/3p4/6l1/8/8 w - - 8 16

analyze
2 120 0 66  g5h5 g3e3
3 120 0 1045  g5h4 g3e3 h4h5
4 115 0 1396  g5h4 g3e3 h4h5 e7d6
5 65 0 2190  g5h4 g3e3 h4h5 e7d6 h6f4
5 -135 0 2304  g5h4 g3e3 h4h5 e7d6 h6f4
5 -270 0 2837  g5h4 g3g2 h4h3 g2e4 h3g3
5 -225 1 7348  g5f5 d4d5 f5f4 g3c3 h6e6
5 -225 1 7755  g5f5 d4d5 f5f4 g3c3 h6e6
6 -235 1 11119  g5f5 e5e2 f5e4 g3h4 e4e5 h4f6
6 -175 1 12362  g5h4
6 25 3 12843  g5h4
6 120 3 13928  g5h4 g3h2 h4g4 e5f5 g4h5 h2e5
6 120 3 13950  g5h4 g3h2 h4g4 e5f5 g4h5 h2e5
7 70 3 14039  g5h4
7 -70 3 14744  g5h4 g3h2 h4g4 e5f5 g4f5 h2f2 f5e4
7 -70 4 18509  g5h4 g3h2 h4g4 e5f5 g4f5 h2f2 f5e4
8 -20 4 28483  g5h4
8 -120 6 30432  g5h4 g3h2 h4g4 e5f5 g4h4 f5e5
8 0 6 31141  g5h4 g3h2 h4g4 e5f5 g4h4 f5e5
8 0 6 31179  g5h4 g3h2 h4g4 e5f5 g4h4 f5e5
9 0 6 32543  g5h4 g3h2 h4g4 e5f5 g4h4 f5e5
9 0 6 32600  g5h4 g3h2 h4g4 e5f5 g4h4 f5e5
10 0 7 35482  g5h4 g3h2 h4g4 e5f5 g4h4 f5e5
10 0 7 35558  g5h4 g3h2 h4g4 e5f5 g4h4 f5e5
11 -50 11 53682  g5h4 g3h2 h4g4 e5f5 g4h4 f5e5
11 -250 12 70805  g5h4 g3h2 h4g4 d4d3 g4f4 h2g1 f4e5 g1e3 e5f5 e3e6 f5f4
11 -270 14 78731  g5h4 g3g1 h4h3 d4d3 h3h2 g1e3 h6g6 d3d4 h2h1 e3e4 g6e6
11 -240 40 304772  g5f5 e5e2 f5e4 g3g4 e4f3 g4e6 h6f6 e2e5 f3e4 h5g4 f6f4
11 -75 43 325020  g5f4 g3h2 f4g4 d4d3 g4f4 h2g1 f4e5 g1e3 e5d5 e3e6 d5d4
11 -75 43 325020  g5f4 g3h2 f4g4 d4d3 g4f4 h2g1 f4e5 g1e3 e5d5 e3e6 d5d4
12 -85 50 371711  g5f4 g3h2 f4g4 d4d3 g4f4 h2g1 f4e5 g1c5 e5e4 c5c4 e4e3 d3d5
12 -85 50 371934  g5f4 g3h2 f4g4 d4d3 g4f4 h2g1 f4e5 g1c5 e5e4 c5c4 e4e3 d3d5
13 -135 70 535445  g5f4
13 -75 76 580256  g5f4 g3h2 f4f5 h2c2 f5e5 c2f2 e5e4 e7e6 e4d3 d4d5 h6e3 h5e5 d3
e4
13 -75 76 582371  g5f4 g3h2 f4f5 h2c2 f5e5 c2f2 e5e4 e7e6 e4d3 d4d5 h6e3 h5e5 d3
e4
14 -125 79 597885  g5f4
14 -80 87 674338  g5f4 g3h2 f4f5 h2c2 f5e5 c2f2 e5e4 e7e6 h6f8 h5h2 f8b8 h2e5 b8
d6 f2d2
14 -80 89 675798  g5f4 g3h2 f4f5 h2c2 f5e5 c2f2 e5e4 e7e6 h6f8 h5h2 f8b8 h2e5 b8
d6 f2d2
15 -130 109 832652  g5f4
15 -330 440 3466382  g5f4 g3h2 f4f5 d4d7 f5g4 d7d3 g4f4 h2g1 f4e5 g1c5 e5e4 c5c4
 e4e5 c4e6 e5d4
15 -255 539 4241044  g5f4 g3g1 f4e4 e7d6 e4d3 g1g4 d3c4 d4d5 h6f4 h5f7 f4g5 e5e6
 g5h4 f7f5 h4g3
15 -30 550 4303193  g5h4
15 -530 614 4886089  g5h4
15 -275 679 5453598  g5h4 g3g1 h4h3 d4d3 h3h2 g1d4 h6g6 e7e6 g6h6 d4f4 h2g2 d3d5
 g2h3 f4e4 h3g3
15 -275 928 7724728  g5h4 g3g1 h4h3 d4d3 h3h2 g1d4 h6g6 e7e6 g6h6 d4f4 h2g2 d3d5
 g2h3 f4e4 h3g3
16 -225 945 7843367  g5h4
16 -25 948 7851636  g5h4
16 -285 987 8176396  g5h4 g3g1 h4h3 d4d3 h3h2 g1d4 h2g2 e7e6 g2h1 e6d6 h6e3 h5g4
 e3f4 d4d5 h1h2 d3d4
16 -260 1501 12247026  g5f4 g3h2 f4f3 h2h4 f3e4 e7d6 e4d3 h4h2 d3c4 h2e2 h6d2 h5
f7 c4c3 f7f4 d2d3 d6d5
16 -260 1531 12469208  g5f4 g3h2 f4f3 h2h4 f3e4 e7d6 e4d3 h4h2 d3c4 h2e2 h6d2 h5
f7 c4c3 f7f4 d2d3 d6d5
17 -210 1773 14343867  g5f4
17 -310 2220 17547408  g5f4
17 -380 9261 69661273  g5f4 g3g2 h6f8 g2f3 f4g4 f3h3 g4f4 h5h6 f4e5 h6e6 e5d4 h3
e3 f8f4 e6f6 d4e3 f6f1 e3e4
17 -10 9267 69688251  g5h4
.
stat01: 9370 70081488 17 3 4 g5h4
17 -275 9584 72035805  g5h4 g3g1 h4h3 d4d3 h3h2 g1g4 h2g1 d3d5 h6f4 h5f7 f4g5 d5
d6 g5d2 f7d5 d2e3 g4f5 e3e4
17 -275 10028 76109147  g5h4 g3g1 h4h3 d4d3 h3h2 g1g4 h2g1 d3d5 h6f4 h5f7 f4g5 d
5d6 g5d2 f7d5 d2e3 g4f5 e3e4
18 -225 10146 77026862  g5h4
18 -25 10153 77049084  g5h4
18 -280 10276 78168706  g5h4 g3g1 h4h3 d4d3 h3h2 g1g4 h2g1 d3d5 h6f4 h5f7 f4g5 d
5d6 g5e3 g4g5 e3e4 f7d5 g1h1 g5f5
18 -280 13536 106334406  g5h4 g3g1 h4h3 d4d3 h3h2 g1g4 h2g1 d3d5 h6f4 h5f7 f4g5
d5d6 g5e3 g4g5 e3e4 f7d5 g1h1 g5f5
19 -230 13756 108068606  g5h4
19 -30 13762 108092782  g5h4
19 -280 14012 110328421  g5h4 g3g1 h4h3 d4d3 h3h2 g1g4 h2g1 d3d5 h6f4 h5f7 f4g5
d5d6 g5e3 f7d5 e3e1 d5e4 g1f2 g4f3 e1f1
Daniel Shawul
Posts: 4186
Joined: Tue Mar 14, 2006 11:34 am
Location: Ethiopia

Re: Ultima

Post by Daniel Shawul »

And the last one concering the fluctions is both a nullmove and qsearch_evasion problem. In qsearch only captures are generated when in check. So there is a lot of misevauation here because there are no captures except for the obvious reduction to KK. If you turn off null move and enable qsearch_evasion from the options menu, you will find a shorter mate and a smooth score! By the way this behaviour is shared by old versions of nebiyu and you can see it has difficutlies mating KRK. May be I should make generating evasions appropriately at least in the endgame. But in the middle game I have found that it is better as it is, because it is somehow speculative regarding attacks with kings. Believe me I run many games with the old version at least. I will try again.

Also the 50 move rule in action. It came up somewhat unexpectedly since pawn moves do not reset the counter. One engine was winning when that happened, so maybe the current scheme puts too much pressure ? You can't replay the game since I have G for Cameleon, but look at the scores at the end.
Edit bug : the counter was reset only on piece captures (forgot pawns). So this may be the problem

Code: Select all


[Event "Computer Chess Game"]
[Site "CEE-3624-AB52"]
[Date "2011.03.22"]
[Round "-"]
[White "NebiyuAlien_1.2"]
[Black "NebiyuAlien_1.2"]
[Result "1/2-1/2"]
[TimeControl "40/120"]
[Variant "alien"]
[FEN "c1g1kgli/3p2pp/1p4l1/p1p1pp2/P2IP1P1/L4P2/2PP2P1/1LGK1G1C w - c6 0 1"]
[SetUp "1"]

{--------------
c . g . k g l i
. . . p . . p p
. p . . . . l .
p . p . p p . .
P . . I P . P .
L . . . . P . .
. . P P . . P .
. L G K . G . C
white to play
--------------}
1. Ph5 {+0.00/10} Pff5 {+0.05/10 2.9} 2. Pff3 {+0.00/9 2.4} Pbb6
{-0.05/9 2.8} 3. Lc5 {+0.20/10 2.5} Pee5 {+0.05/10 2.8} 4. Pb5
{+0.10/10 2.8} Lb7 {-0.10/9 2.9} 5. Paa4 {+0.05/9 2.9} Wf6 {+0.00/9 2.8} 6.
Id4 {+0.00/8 2.7} Wg6 {+0.20/9 2.9} 7. Ph4 {+0.15/8 4} Lc6 {-0.15/10 2.9}
8. La3 {+0.20/9 2.8} Paa5 {-0.05/7 2.2} 9. Phe4 {+0.15/8 2.8} Wg4
{-0.25/6 3} 10. Wh4 {-0.10/8 2.9} Wf4 {-0.15/8 5} 11. Pgg4 {-0.55/7 2.9}
Lcg6 {-0.20/7 2.2} 12. Pg2 {+0.35/6 2.9} Pcc5 {-0.20/5 2.3} 13. Ga6
{+0.45/7 2.9} Cb7 {-0.20/6 2.8} 14. Lb5 {+0.15/6 2.9} Ph4 {-0.10/8 2.3} 15.
Lad3 {+0.10/5 2.2} Ld5 {-0.15/6 2.9} 16. Lbb3 {+0.20/7 3} Lge6 {-0.20/9 3}
17. Le3 {+0.00/8 2.5} Pff4 {+0.00/9 8} 18. Pgg4 {+0.60/9 2.8} Pg6
{-0.30/7 2.5} 19. Cf1 {+1.75/9 2.3} Led6 {-1.75/8 2.0} 20. Ga5
{+1.95/7 2.3} Ca6 {-1.45/9 2.8} 21. Ic4 {+0.60/6 6} Ke7 {-1.35/7 2.8} 22.
Pg3 {+1.75/9 11} Gf5 {-1.75/8 5} 23. Pd4 {+2.10/9 2.5} Kf6 {-2.40/8 4} 24.
Lb7 {+2.35/8 2.5} L6e6 {-1.35/7 2.4} 25. Ke2 {+1.30/4 0.6} Cd6
{-1.60/7 2.6} 26. La8 {+2.50/7 2.3} Cb8 {-2.40/7 8} 27. Ib4 {+1.60/6 2.6}
Lh1 {-2.30/7 1.7} 28. Ke1 {+2.50/6 2.8} Lh3 {-3.70/7 2.4} 29. Pf3
{+4.05/7 2.1} La2 {-3.90/6 2.7} 30. Cb5 {+3.70/6 2.5} Kg7 {-4.00/7 10} 31.
La3 {+4.70/6 3} Kg8 {-3.90/6 1.4} 32. Le4 {+3.65/7 2.7} Lh1 {-4.10/7 1.6}
33. Cf1 {+4.80/8 2.8} Ph3 {-3.90/7 2.1} 34. Gb5 {+3.85/7 2.8} Gd3
{-3.75/7 2.3} 35. Pge4 {+4.10/7 2.2} La1 {-3.95/9 1.4} 36. Le3
{+4.10/9 0.8} Ld1 {-4.00/10 1.2} 37. Pc1 {+4.30/9 0.7} Ie5 {-3.90/9 1.6}
38. Ic4 {+4.15/9 3} Lg2 {-5.00/8 1.3} 39. Pc2 {+5.20/10 5} If5
{-4.95/8 1.8} 40. If7 {+4.95/9 5} Pd5 {-4.90/10 1.9} 41. Gc6 {+5.05/9 3}
Pd6 {-3.85/10 2.3} 42. Ih7 {+3.80/9 4} Pf6 {-4.25/9 3} 43. Gd5
{+4.20/9 2.4} Pf7 {-4.15/10 2.9} 44. Ce2 {+4.45/10 2.4} Ga6 {-4.20/9 2.2}
45. Pcc5 {+4.05/10 2.9} Id7 {-4.05/9 4} 46. Pc4 {+4.00/8 3} Ge6
{-3.15/9 2.8} 47. Kf1 {+3.65/7 2.2} Cb4 {-1.40/10 2.5} 48. Kf2
{+0.00/11 2.5} Lg3 {+0.00/22 2.4} 49. Ih4 {+0.00/20 2.9} Pff5 {+0.00/18 3}
50. Ke1 {+0.00/18 2.3} Pf6 {+0.00/19 3}
{Draw by fifty move rule} 1/2-1/2