Topple

Discussion of anything and everything relating to chess playing software and machines.

Moderators: hgm, Rebel, chrisw

User avatar
Graham Banks
Posts: 41511
Joined: Sun Feb 26, 2006 10:52 am
Location: Auckland, NZ

Re: Topple

Post by Graham Banks »

konsolas wrote: Tue Jun 26, 2018 9:06 pmI don't have the resources to test Topple against a lot of other engines, so I don't really have a elo estimate, unfortunately.
I'll try it out to see if I can add it into my Amateur Series.
gbanksnz at gmail.com
konsolas
Posts: 182
Joined: Sun Jun 12, 2016 5:44 pm
Location: London
Full name: Vincent

Re: Topple

Post by konsolas »

Topple v0.1.1 has been released, fixing a bug where promotions to A1 would be interpreted as en-passant, corrupting the board representation. It also contains minor improvements to search and evaluation: https://github.com/konsolas/ToppleChess/releases

PS: I really appreciate everyone who has offered to help test Topple :D
konsolas
Posts: 182
Joined: Sun Jun 12, 2016 5:44 pm
Location: London
Full name: Vincent

Re: Topple

Post by konsolas »

SzG wrote: Wed Jun 27, 2018 2:07 pm
konsolas wrote: Wed Jun 27, 2018 1:12 pm Topple v0.1.1 has been released, fixing a bug where promotions to A1 would be interpreted as en-passant, corrupting the board representation. It also contains minor improvements to search and evaluation: https://github.com/konsolas/ToppleChess/releases

PS: I really appreciate everyone who has offered to help test Topple :D
Exe not renamed, it says it's v0.1.0.
Oops, should be fixed now.
konsolas
Posts: 182
Joined: Sun Jun 12, 2016 5:44 pm
Location: London
Full name: Vincent

Re: Topple

Post by konsolas »

SzG wrote: Wed Jun 27, 2018 2:18 pm Thanks. Just noticed that the command 'go depth 15' does not work, it displays 'board=nullptr'.
You need to initialise the board first. e.g. with the command "position startpos".
konsolas
Posts: 182
Joined: Sun Jun 12, 2016 5:44 pm
Location: London
Full name: Vincent

Re: Topple

Post by konsolas »

I think a lot of engines default to the start position, but the UCI protocol does state that:

"Before the engine is asked to search on a position, there will always be a position command to tell the engine about the current position."

So Topple starts without a default position loaded.
tpoppins
Posts: 919
Joined: Tue Nov 24, 2015 9:11 pm
Location: upstate

Re: Topple

Post by tpoppins »

Another way to do it is to run ucinewgame first.

Good job on the fix, Vincent: 64 games completed with v0.1.1 without a single illegal move.
Tirsa Poppins
CCRL
Dann Corbit
Posts: 12546
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: Topple

Post by Dann Corbit »

Still no good.

Code: Select all

Topple v0.1.0 (c) Vincent Tang 2018
uci
id name Topple v0.1.0
id author Vincent Tang
option name Hash type spin default 128 min 1 max 1048576
option name Threads type spin default 1 min 1 max 128
option name Clear Hash type button
uciok
ucinewgame
go infinite
board=nullptr
This is a common problem with UCI engines.
I have added a setboard to ucinewgame to many UCI engines in the past.
Not having the engine ready for game play is a very strange thing about the UCI protocol to me.
What is the value in that?
Taking ideas is not a vice, it is a virtue. We have another word for this. It is called learning.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
konsolas
Posts: 182
Joined: Sun Jun 12, 2016 5:44 pm
Location: London
Full name: Vincent

Re: Topple

Post by konsolas »

The protocol states: "[ucinewgame] is sent to the engine when the next search (started with "position" and "go") will be from a different game", so a 'position' command must still be sent before the 'go' command, even if you use the 'ucinewgame' command.

A proper io sequence that conforms to the protocol could be:

Code: Select all

> uci
< id name Topple v0.1.1
< id author Vincent Tang
< option name Hash type spin default 128 min 1 max 1048576
< option name Threads type spin default 1 min 1 max 128
< option name Clear Hash type button
< uciok
> ucinewgame
> isready
< readyok
> position startpos
> go infinite
< info depth 1 seldepth 2 score cp 105 time 0 nodes 51 nps 51000 pv d2d4
etc...
With regards to your second question, Dann, I believe this choice was made for a few reasons:
  • Often, when analysing a game, the GUI makes the engine start searching from the end of the game so that it's transposition table contains useful entries for earlier positions in the game. If the engine initialised itself to startpos after 'ucinewgame', it would be a waste because the GUI would have to send a position command telling the engine to load a different position anyway.
  • Additionally, the GUI handles opening books for the engine, so the game often doesn't even start from startpos anyway, so initialising the engine to startpos after 'ucinewgame' would once again be a waste, because it would immediately receive a new position to load.
Dann Corbit
Posts: 12546
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: Topple

Post by Dann Corbit »

Maybe so, but I will still put a setpos into your ucinewgame for my own use.
I use it for things like profile and I want to reduce my keystrokes.
Yes, I really am that lazy.
Taking ideas is not a vice, it is a virtue. We have another word for this. It is called learning.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.
Dann Corbit
Posts: 12546
Joined: Wed Mar 08, 2006 8:57 pm
Location: Redmond, WA USA

Re: Topple

Post by Dann Corbit »

Code: Select all

            } else if (cmd == "ucinewgame") {
                delete board;
                board = new board_t("rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1");
            } else if (cmd == "setoption") {
Some people have an evil streak that is hard to combat.
Taking ideas is not a vice, it is a virtue. We have another word for this. It is called learning.
But sharing ideas is an even greater virtue. We have another word for this. It is called teaching.