Scorpio Chess and Nebiyu Alien
New version 2.8.8 MCTS + NN is available. Significant work has been done with regard to GPU acceleration
Go to my github release page and download pre-compiled binaries of egbbdll64.dll for windows (CPU and GPU).
Here are the links for convenience
The egbbdll serves dual purpose, namely, for probing bitbases and neural networks so extract it in a directory where bitbases are located.
For the GPU version of egbbdll, we need to set the Path environment variable and incase of linux LD_LIBRARY_PATH for the system to find
cudnn.dll and other dependencies.
Networks trained from labeled epd positions and CCRL games can be downloaded here
Once you extract these files, you can pick a network by setting the path to network files in scorpio.ini.
----------------------------------------------------------------------------------------------------
Version 2.8.6 now supports neural network evaluation (no policy network though). The substitute for the policy network
is progressive widening where we consider few moves initially and then increase the number of moves considered
with more simulations. I am also experimenting with aggressive pruning to use the slow NN eval with alpha-beta as well.
You can train your own network from PGN files or a set of labeled epd positions using nn-train
----------------------------------------------------------------------------------------------------
Update on MCTS version only: Scorpio 2.8.5 MCTS
----------------------------------------------------------------------------------------------------
Version 2.8 (February, 2018) The MCTS search is now very strong due to alpha-beta rollouts.
There is some work the standard alpha-beta search with regard to tuning search parameters, fixing ABDADA bug
discovered in TCEC, turning on singular search etc.
Version 2.7.9 (December 16, 2017) This version has Monte Carlo Tree Search (MCTS). This is turned off
by default since it plays at TSCP's level. Feel free to use this to trash AlphaZero's success to be based upon hardware :)
There were improvements in the now "old" alpha-beta engine regarding tuning of evaluation terms.
Older version 2.7.8 (Halloween 2017). This release is after 3 and 1/2 years but certainly does not
have that much work in it. Maybe a 20 elo improvement at best. Changes include parallel and cluster
search work done in 2014, and automatic evaluation tuning done in the last couple of weeks which
prompted this release.
Only Linux binaries tested by me. Thanks to Dann Corbit, Michel B for the Windows and Mac binaries.
I will upload Android binaries once I get them working.
Older version 2.7.7 that played TCEC (March 24, 2014)
Older version binaries from Jim Ablett (Window, Linux, Android)
Direct link to android binary with ini file
scorpio-276-android-ja
scorpio.ini
Snapshots of day-to-day updates
http://github.com/dshawul/Scorpio
NEBIYU
Nebiyu is a general game playing engine based on Scorpio chess. Its target is to support many variants of chess, checkers reversi , go and the game of amazons. Hence many optimizations specific to chess had to be dropped. However, the engine is still strong for many humans at least for the above mentioned first three board games. The Go engine still needs a lot of work but I know I can't beat it :)
The development started out as a "new years resolution" of mine to
H.G.Muller's plea for support of the spartan chess variant but it quickly turned out to be a very interesting project. Besides the chess engine development, the project also involved modification of the
winboard protocol to support these 'alien' variants. Have a look at
H.G's page here for full description. Remember to first download and install Winboard 4.5 !
Older version from six years ago
- Multi player chess (quadruple & triple chess) and Hex (not finished yet).
The latter had also a cuda counterpart but I don't know where I have it. - Different methods for approximating perft. See help.
- I found the test CUDA code for Hex. Here it is
Egbbdll v4.1 (Latest)
Egbbdll v3.3 (Older)
Egbbdll v3.0 (Oldest)
If it doesn't work for you, check the following frequently made errors. Trust me it works :)
- Rename the dll to egbbdll.dll without the suffixes.
- After downloading the new egbb files from Dann's site, replace the egbb dlls with the ones available here.The v3.2 had issues with SMP.
- Mixing old and new egbb dlls. Use v3.3 for the new ones and v3.0 for the old ones.
- Some engines work only for a certain way of egbb path scripting. For example for Toga c:/egbb/ and c:\egbb\ would work but not c:/egbb and c:/egbb. Make sure that the engine displays "EgbbProbe v3.x" message.
Engines
There are basically four types of players:
- An engine - Set command line and working directory.
- Command line : command to be executed when starting process.
This can be tweaked to use adapters like polyglot, remote engines, java engines etc - Working directory for the engine to find its initialization & log files etc.
- Command line : command to be executed when starting process.
- A human player - Yes humans could be installed too:)
- Command line : name of human being
- Working directory should be set to human
- An ICS player - To play on internet chess servers fics, ics etc with style 12 support.
JavaBoard acts like a client and will not try to handle tournaments by itself.
- Command line : address port [username] [password]
- Working director is ics
- A TCP server/client - JavaBoard can act a server and a client. To begin service "Engines->Accept connections @ port"
Connections can be made from another computer using JavaBoard or any telnet client if you wish. To use JavaBoard client install
a TCP engine with:
- Command line : address port [username] [password]
- Working directory : tcps
information type "help commands". You can observe multiple games from game servers and later switch by the game ID.
Referee engine
The referee engine is used to check legality of moves and display the board. You can say it is part of the GUI as it is used for that purpose only.
For any engine to be a referee engine , it should send the "setup" command after each move. It should do so even when getting an Illegal move.
So the engine should do either one of the following when receiving any move:
a) setup newFEN
b) Illegal move : move
setup oldFEN
JavaBoard waits for response from the referee to know if a move is Illegal and update the board accordingly . You can create any board game and create a simple engine (basically a move generator) and take advantage of all features of JavaBoard. Client application need not load a referee engine since the server will send them the board positions. Also since any telnet client like putty can be used, it is unwise to put a restriction of loading a referee engine on the client side.
The referee engine is written only once for a new variant!! Nebiyu can be used as a referee for many variants so there is almost no need for other referee engines. All existing winboard and uci engines can be played against Nebiyu and also against each other. At first I thought Nebiyu has to be one of the participants since it is the board updater. But with this concept of referee engine any existing engines can be played against each other ! Nebiyu sits as the referee and updates the board on their behalf, checks legality of moves, so it pretty much acts as the GUI. So in short writing a referee engine is only required for a completely new game that Nebiyu don't support (which is very hard to find :) ). Also Nebiyu has highlighting capabilities but JavaBoard do not support that yet. I will try to rewrite Nebiyu in Java to avoid loading a referee engine most of the time but that is really not necessary and also not elegant. Because the point of JavaBoard is that the game rules are to be taken care of by an external referee engine so loading is the true solution..
Tournaments
- Number of games in match - Total number of games in a match
- Permutation - If there are three players , 3! = 6 games are played by the same participants
- Time control - Winboard "level 40 5 0" type
- Pondering - Untested
Console mode
ICS Bot
If an engine and ICS server is loaded, JavaBoard will automatically seek for games by itself. It detects game terminations and send seeks again. So to run your engine overnight as ICS bot all you have to do is load the engine and freechess.org 5000 g. No referee is required since we have a server. The console mode with out -debug maybe used to run it in the background with no display.
Winboard engines which do not send moves in plain coordinate notation (e2e4) do not work. I will not add SAN support because the GUI do not try to interpret moves. You can send "87$@#$" as long as the engines understand what it means. So if both engines understand SAN it works!! One can write a referee engine which converts one move format to the other but it is simpler to assume that two engines can play each other when they use the same move format.
Changes :
- FICS seek table added. I don't see much use for the popular "seek graph". The table seems to work as good. You can sort based on any
property, say rating of seeker, and then double click on your opponent to play... Simple!
- A lot of verbose output in ICS mode is off now so only chats and other important staff is displayed. The debug window can be used as a chat
box too. I am reluctant to add chat boxes for different users, tells, shouts etc...
- Variants with holdings such as crazy house can be viewed now. Holdings are displayed at the bottom row. Just click on the piece and drop it to make a move.
- Multiple games can be viewed at the same time with separate windows. If you have enough space you can watch a thousand games since boards are created dynamically. The layout is 2 columns by N rows. You can select any of the boards for further investigation such as move history and plotting graphs.
- You can play at most one game , while observing many at the same time. To play a bug-house open one window for your game and watch your partner's game on a separate board placed by the side.
- The size of the applet is significantly reduced. I was jarring Thumbs.db of Windows XP thumbnail database which was accounting for most of the size. Silly me! Now it is only 180kb compared to previous 530kb. I knew I didn't write that much stuff for all that size!
- Drag and drop of pieces is added now. Many people prefer that over click-click mode in blitz games, although personally I don't find it as a significant improvement. Anyway you can use both modes at the same time.
- Flicker free drawing. Tabbed pane browsing of games in observation list. Separate chat (whisper/kibitz) boxes for each game.
- Applet size reduced further by 40 kb. Also loading time of applet reduced from 1 minute to 2-3 seconds !! That was achieved by merging
the image files into one file.
- Automatic highlighting of moves. This is done by comparing consecutive FENs since JavaBoard has no idea of moves.
- It is now possible to accept take back offers. It doesn't actually process take back offers directly. When a position with a lesser move number than the previous position is received, it assumes a take back was done. Less headache and more robust.
- Ics shortcut command buttons similar to Thief's. Less typing!
- Now every tell from users and channels have a separate chat panel.
- You can either play online here, or download the jar file here once and use it, or use the JNLP to launch JavaBoard.
- Do not be frustrated if you don't see a chess board soon! The reason is that JavaBoard is meant as a general game interface and displaying a board at start up is meaningless. Another reason is that I am following a principle that if no game is being played there shouldn't be a board. So when a game is over, the board gets destroyed automatically. If you are playing on a chess server, then boards will be created for each observe command you type. If you are not on a chess server, then you need to load a referee engine to see a board. So far only Nebiyu can do that. It will take care of board displays and check legality of moves. Once you load a referee engine, sigh... you still won't see a board!! Did you say what?? Yes you need to start a match or a tourney. Then.. only then will you be welcomed with a beautifully drawn chess board popping out of nowhere :) The point is that clocks start running when a game is started. So if the a human takes his time thinking on the initial position and decide to make the first move when he wishes, it means he has the advantage on the first move. I know this sounds weird but it is the most logical. I tried the "conventional" way of displaying a chess board, but it introduced a lot of ugly hacks to take care of the the special case condition.
variant | normal | variant | shatranj | variant | jetan | variant | giveaway | variant | gothic |
h2h3 | 4463070 | h2h3 | 1066655 | i2i3 | 238505736 | h2h3 | 2053087 | j2j3 | 27192885 |
h2h4 | 5385554 | g2g3 | 1163857 | i2j3 | 238749705 | h2h4 | 2289701 | j2j4 | 30994639 |
g2g3 | 5346260 | f2f3 | 1178010 | i2h3 | 237088081 | g2g3 | 2631070 | i2i3 | 32395645 |
g2g4 | 5239875 | e2e3 | 1318410 | h2h3 | 239114732 | g2g4 | 1373678 | i2i4 | 32792521 |
f2f3 | 4404141 | d2d3 | 1470254 | h2i3 | 283533495 | f2f3 | 2504977 | h2h3 | 28638475 |
f2f4 | 4890429 | c2c3 | 1171567 | h2g3 | 263464939 | f2f4 | 2251339 | h2h4 | 32192319 |
e2e3 | 9726018 | b2b3 | 1163900 | g2g3 | 245871608 | e2e3 | 3139671 | g2g3 | 43282666 |
e2e4 | 9771632 | a2a3 | 1062225 | g2h3 | 245983884 | e2e4 | 2161741 | g2g4 | 42731248 |
d2d3 | 8073082 | g1h3 | 1211844 | g2f3 | 245220431 | d2d3 | 3233771 | f2f3 | 34872810 |
d2d4 | 8879566 | g1f3 | 1637880 | f2f3 | 266219051 | d2d4 | 2338832 | f2f4 | 39637679 |
c2c3 | 5417640 | b1c3 | 1657184 | f2g3 | 263196045 | c2c3 | 2531638 | e2e3 | 44387071 |
c2c4 | 5866666 | b1a3 | 1217310 | f2e3 | 282589946 | c2c4 | 2276329 | e2e4 | 47620503 |
b2b3 | 5310358 | f1h3 | 950138 | e2e3 | 256291080 | b2b3 | 2602974 | d2d3 | 39464276 |
b2b4 | 5293555 | f1d3 | 1200263 | e2f3 | 272718219 | b2b4 | 1399843 | d2d4 | 43835739 |
a2a3 | 4463267 | c1e3 | 1333680 | e2d3 | 272358445 | a2a3 | 2060617 | c2c3 | 32854158 |
a2a4 | 5363555 | c1a3 | 1061532 | d2d3 | 257118091 | a2a4 | 2710239 | c2c4 | 35099755 |
g1h3 | 4877234 | nodes | 19864709 | d2e3 | 274567798 | g1h3 | 1963145 | b2b3 | 30383101 |
g1f3 | 5723523 | d2c3 | 256505597 | g1f3 | 2402530 | b2b4 | 31008755 | ||
b1c3 | 5708064 | variant | grand | c2c3 | 247575445 | b1c3 | 2385274 | a2a3 | 27166638 |
b1a3 | 4856835 | j3j4 | 926416584 | c2d3 | 254867051 | b1a3 | 1953706 | a2a4 | 30975700 |
nodes | 119060324 | j3j5 | 985626466 | c2b3 | 284090637 | nodes | 46264162 | i1j3 | 28933894 |
i3i4 | 1016953859 | b2b3 | 238413740 | i1h3 | 30322738 | ||||
variant | spartan | i3i5 | 1023258694 | b2c3 | 245105589 | variant | wildcastle | b1c3 | 32136750 |
h2h3 | 15137689 | h3h4 | 987444340 | b2a3 | 238494227 | h2h3 | 4463070 | b1a3 | 28942056 |
h2h4 | 18279353 | h3h5 | 1048171919 | f1h3 | 277552978 | h2h4 | 5385554 | e1f3 | 55839014 |
g2g3 | 18167235 | g3g4 | 1107909883 | f1i4 | 259949909 | g2g3 | 5346260 | e1d3 | 59098582 |
g2g4 | 17854666 | g3g5 | 1135836371 | f1d3 | 294613192 | g2g4 | 5239875 | g1h3 | 37809042 |
f2f3 | 15006559 | f3f4 | 1132998143 | f1c4 | 287130043 | f2f3 | 4404141 | g1f3 | 44620553 |
f2f4 | 16384078 | f3f5 | 1204003753 | f1f3 | 294820471 | f2f4 | 4890429 | nodes | 1025229212 |
e2e3 | 34143618 | e3e4 | 1142113125 | f1f4 | 287749779 | e2e3 | 9726018 | ||
e2e4 | 34110467 | e3e5 | 1180552966 | j2i4 | 275333885 | e2e4 | 9771632 | variant | capablanca |
d2d3 | 27586700 | d3d4 | 1238509376 | j2j3 | 237906109 | d2d3 | 8073082 | j2j3 | 28588868 |
d2d4 | 29930527 | d3d5 | 1271704929 | a2b4 | 283841647 | d2d4 | 8879566 | j2j4 | 32465690 |
c2c3 | 18781609 | c3c4 | 988670513 | a2a3 | 238397492 | c2c3 | 5417640 | i2i3 | 24802715 |
c2c4 | 19904214 | c3c5 | 1021359164 | g1j4 | 263743951 | c2c4 | 5866666 | i2i4 | 26996704 |
b2b3 | 17852989 | b3b4 | 990255438 | g1d4 | 300690283 | b2b3 | 5310358 | h2h3 | 31717791 |
b2b4 | 17767267 | b3b5 | 993530245 | g1h4 | 274902912 | b2b4 | 5293555 | h2h4 | 35870856 |
a2a3 | 15137201 | a3a4 | 925923718 | g1f4 | 292971748 | a2a3 | 4463267 | g2g3 | 27723215 |
a2a4 | 18212175 | a3a5 | 985396376 | d1g4 | 283723187 | a2a4 | 5363555 | g2g4 | 29988375 |
g1h3 | 16576919 | i2g1 | 679622733 | d1a4 | 241913922 | g1h3 | 4877234 | f2f3 | 52623654 |
g1f3 | 19428214 | i2j4 | 904919060 | d1e4 | 260198030 | g1f3 | 5723523 | f2f4 | 52678872 |
b1c3 | 19451039 | i2h4 | 934207293 | d1c4 | 249992615 | b1c3 | 5708064 | e2e3 | 43107759 |
b1a3 | 16560624 | b2c4 | 963807277 | nodes | 11053075725 | b1a3 | 4856835 | e2e4 | 46818840 |
nodes | 406273143 | b2d1 | 611949233 | nodes | 119060324 | d2d3 | 46397175 | ||
b2a4 | 906296328 | variant | berolina | d2d4 | 48325852 | ||||
variant | knightmate | h2g1 | 704232356 | h2g3 | 36834945 | variant | nocastle | c2c3 | 30363782 |
h2h3 | 3548296 | h2i1 | 730644480 | h2f4 | 38059646 | h2h3 | 4463070 | c2c4 | 32155480 |
h2h4 | 3965844 | c2b1 | 780729960 | g2f3 | 25564123 | h2h4 | 5385554 | b2b3 | 28126504 |
g2g3 | 4232616 | c2d1 | 656547147 | g2e4 | 28939805 | g2g3 | 5346260 | b2b4 | 30369092 |
g2g4 | 4086545 | j1j2 | 796361533 | g2h3 | 25540855 | g2g4 | 5239875 | a2a3 | 28701556 |
f2f3 | 2911930 | j1i1 | 861374080 | f2e3 | 23916436 | f2f3 | 4404141 | a2a4 | 32556619 |
f2f4 | 3287482 | j1h1 | 841870033 | f2d4 | 24825307 | f2f4 | 4890429 | i1j3 | 30250326 |
e2e3 | 5872106 | j1g1 | 820921481 | f2g3 | 24069667 | e2e3 | 9726018 | i1h3 | 33345105 |
e2e4 | 5788856 | j1f1 | 777815072 | f2h4 | 25429381 | e2e4 | 9771632 | b1c3 | 32058743 |
d2d3 | 4438701 | j1e1 | 754691198 | e2d3 | 33948623 | d2d3 | 8073082 | b1a3 | 28723639 |
d2d4 | 5425047 | j1d1 | 690632833 | e2c4 | 37925078 | d2d4 | 8879566 | h1i3 | 52668083 |
c2c3 | 4586617 | j1c1 | 752291471 | e2f3 | 33661156 | c2c3 | 5417640 | h1g3 | 53499031 |
c2c4 | 4503549 | j1b1 | 729895694 | e2g4 | 41182235 | c2c4 | 5866666 | c1d3 | 39217127 |
b2b3 | 3867050 | a1a2 | 796366979 | d2c3 | 42157116 | b2b3 | 5310358 | c1b3 | 35660984 |
b2b4 | 3901827 | a1b1 | 884015185 | d2b4 | 47943923 | b2b4 | 5293555 | nodes | 1015802437 |
a2a3 | 3551382 | a1c1 | 862102365 | d2e3 | 36259045 | a2a3 | 4463267 | ||
a2a4 | 3932115 | a1d1 | 750832158 | d2f4 | 39616022 | a2a4 | 5363555 | variant | courier |
e1f3 | 3390709 | a1e1 | 775884542 | c2b3 | 24219580 | g1h3 | 4877234 | l2l3 | 3847421 |
e1d3 | 3278311 | a1f1 | 756868821 | c2a4 | 27635999 | g1f3 | 5723523 | k2k3 | 4120544 |
nodes | 74568983 | a1g1 | 756148657 | c2d3 | 27130497 | b1c3 | 5708064 | j2j3 | 5016259 |
a1h1 | 733752492 | c2e4 | 29366193 | b1a3 | 4856835 | i2i3 | 4510324 | ||
variant | suicide | a1i1 | 709911880 | b2a3 | 25576566 | nodes | 119060324 | h2h3 | 7333311 |
h2h3 | 2053087 | d2c1 | 898037738 | b2c3 | 25550030 | g2g3 | 4500766 | ||
h2h4 | 2289701 | d2e1 | 855713609 | b2d4 | 28296775 | variant | makruk | f2f3 | 5355926 |
g2g3 | 2631070 | d2d1 | 803976828 | a2b3 | 36675142 | h3h4 | 7353858 | e2e3 | 7428214 |
g2g4 | 1373678 | e2d1 | 708649870 | a2c4 | 38045858 | g3g4 | 6388244 | d2d3 | 4926581 |
f2f3 | 2504977 | e2f1 | 759173322 | g1h3 | 30622502 | f3f4 | 6975587 | c2c3 | 5078731 |
f2f4 | 2251339 | e2e1 | 756500338 | g1f3 | 29161739 | e3e4 | 6400120 | b2b3 | 4119570 |
e2e3 | 3139671 | f2d1 | 748272189 | b1c3 | 29016218 | d3d4 | 6386776 | a2a3 | 3847484 |
e2e4 | 2161741 | f2g4 | 1316986866 | b1a3 | 30560409 | c3c4 | 7003885 | k1l3 | 4258951 |
d2d3 | 3233771 | f2h1 | 841974292 | nodes | 947730871 | b3b4 | 6388190 | k1j3 | 5399303 |
d2d4 | 2338832 | f2e4 | 1307914981 | a3a4 | 7355946 | b1c3 | 5422452 | ||
c2c3 | 2531638 | f2f1 | 798623231 | g1e2 | 6888903 | b1a3 | 4259019 | ||
c2c4 | 2276329 | g2e1 | 607591087 | b1d2 | 6398234 | j1l3 | 3517286 | ||
b2b3 | 2602974 | g2h4 | 1034902615 | f1g2 | 5332152 | j1h3 | 4168629 | ||
b2b4 | 1399843 | g2i1 | 652877801 | f1e2 | 4392684 | c1e3 | 4163175 | ||
a2a3 | 2060617 | g2f4 | 1143790059 | f1f2 | 4369015 | c1a3 | 3515201 | ||
a2a4 | 2710239 | g2f1 | 609764914 | c1d2 | 4392680 | nodes | 94789147 | ||
g1h3 | 1963145 | g2h1 | 660028804 | c1b2 | 5772206 | ||||
g1f3 | 2402530 | nodes | 57736106747 | c1c2 | 4844685 | ||||
b1c3 | 2385274 | h1h2 | 9506195 | ||||||
b1a3 | 1953706 | a1a2 | 9494323 | ||||||
nodes | 46264162 | e1f2 | 5748471 | ||||||
e1d2 | 4820792 | ||||||||
d1e2 | 5225018 | ||||||||
d1c2 | 5736405 | ||||||||
d1d2 | 4903680 | ||||||||
nodes | 142078049 |