Carballo Chess Engine Code
Brought to you by:
albertoruibal
File | Date | Author | Commit |
---|---|---|---|
.settings | 2011-07-10 | albertoruibal | [r116] Carballo 0.6: Splitted code in subprojects inte... |
applet | 2012-05-23 | albertoruibal | [r147] Option to indicate if legality check must be done |
core | 2012-05-23 | albertoruibal | [r136] Option to indicate if legality check must be done |
jse | 2012-05-23 | albertoruibal | [r140] Weird error test |
old | 2010-02-08 | albertoruibal | [r52] outdated by pgn class |
target | 2009-09-20 | albertoruibal | [r1] Initial import |
testresults | 2010-10-26 | albertoruibal | [r96] latest results |
webtv | 2012-05-23 | albertoruibal | [r146] computer vs computer mode |
.classpath | 2011-07-10 | albertoruibal | [r119] |
.project | 2011-07-10 | albertoruibal | [r119] |
carballo.png | 2009-09-20 | albertoruibal | [r1] Initial import |
license.txt | 2009-11-21 | albertoruibal | [r32] added license |
pom.xml | 2011-07-10 | albertoruibal | [r112] Carballo 0.6: Splitted code in subprojects inte... |
readme.html | 2011-07-10 | albertoruibal | [r112] Carballo 0.6: Splitted code in subprojects inte... |
<html> <body> <h1>Description</h1> <p>Carballo (the galician word for Oak, well it's all about search trees) is an Open Source Java chess engine hosted at <a href="http://sourceforge.net/projects/carballo/">http://sourceforge.net/projects/carballo/</a>, where you can download a UCI binary to play in interfaces like <a href="http://www.playwitharena.com">Arena</a>. Has the following features:</p> <ul> <li>Simple and clear code (has 6000 lines aprox. excluding tests)</li> <li>Maven source code organization</li> <li>JUnit used for testing, multiple test suites provided (Perft, BT2630, LCTII, WAC, etc.)</li> <li>Based on Bitboards (not so complicated as other people say)</li> <li>State-of-the-art magic bitboard move generator (doubles the basic move generator speed!), also code for magic number generation</li> <li>PVS searcher</li> <li>Iterative deepening</li> <li>Aspiration window, moves only one border of the window if falls out</li> <li>Transposition Table (TT) with Zobrist Keys (two zobrist keys per board, to avoid collisions) and multiprobe/two tier</li> <li>Quiescent search with only good captures (acording to SEE) and limited check generation</li> <li>Move sorting: two killer move slots, SEE, MVV/LVA and history heuristic</li> <li>Also Internal Iterative Deepening to improve sorting</li> <li>Fractional Extensions: check, pawn push and passed pawns, mate threat, recapture (2 = 1PLY)</li> <li>Reductions: Late Move Reductions (LMR)</li> <li>Pruning: Null Move Pruning, Static Null Move Pruning, Futility Pruning and Aggressive Futility Pruning</li> <li>Polyglot Opening Book support; in the code I include Fruit's Small Book</li> <li>FEN notation import/export support, also EPD support for testing</li> <li>Pluggable evaluator function, distinct functions provided: the Simplified Evaluator Function, other Complete and other Experimental</li> <li>Parametrizable evaluator (only the complete & experimental evaluators)</li> <li>Contempt factor</li> <li>Cute drag and drop Applet GUI, to fit in web sites</li> <li>UCI interface with lots of UCI options</li> </ul> <p>It scores 2387 ELO points at BT2630 tests in my Core2 Duo@2.2GHz. Also solves 277 positions of the 300 WinAtChess test (5 seconds for each). His real strength is about 2100 ELO points.</p> <p>It is licensed under GPL, and you are free to use, distribute or modify the code but I ask for a mention to the original author and/or a link to my blog. I also put links in my source code to webs were I found information for coding.</p> <h1>Test Results</h1> <p>I made a Java Engines Tournament to compare Carballo against other chess engines at tournament time 5 minutes. Here are the results: (Those results are outdated, mow i'm running tests with Carballo 0.5 and more Java Engines, will show the results when finished)</p> <pre> Engine Score Ol Fr Me Al Ca Cu Br Ar Ch Fr JC S-B 01: OliThink-5.3.0 45,0/50 ····· 01001 11111 11=11 11111 1=11= 1=111 11111 11111 11111 11111 966,25 02: FrankWalter-1.0.8 41,5/50 10110 ····· 11==0 11101 10011 10111 11111 11111 =1111 11111 11111 873,75 03: Mediocre-0.3.4 34,5/50 00000 00==1 ····· 0101= =1000 11101 11=11 11111 11111 11111 11111 613,00 04: Alf-1.0.9 33,5/50 00=00 00010 1010= ····· 1010= 10001 11111 11111 11111 11111 11111 575,50 05: Carballo-0.5 32,5/50 00000 01100 =0111 0101= ····· 1=001 =1011 1111= 11011 11111 11111 600,25 06: Cuckoo-1.0.4 32,0/50 0=00= 01000 00010 01110 0=110 ····· 111=1 1=111 11111 11111 =1111 563,00 07: Bremboce-0.6.2 21,0/50 0=000 00000 00=00 00000 =0100 000=0 ····· 10111 11=11 =1111 11111 256,75 08: ArabianKnight-0.55 14,5/50 00000 00000 00000 00000 0000= 0=000 01000 ····· 11=1= 110=1 11111 135,25 09: Cheoss-0.6.49 8,5/50 00000 =0000 00000 00000 00100 00000 00=00 00=0= ····· =1=== =1=0= 112,25 10: Frittle-1.0 8,0/50 00000 00000 00000 00000 00000 00000 =0000 001=0 =0=== ····· =111= 65,25 11: JChecs-0.1.0 4,0/50 00000 00000 00000 00000 00000 =0000 00000 00000 =0=1= =000= ····· 45,25 275 games played / Tournament is finished Name of the tournament: JavaEnginesTournament Site/ Country: JDEDEVELOPER5, España Level: Tournament Game in 5 Minutes Hardware: Intel(R) Core(TM)2 Duo CPU T7500 @ 2.20GHz 2200 MHz with 752 MB Memory </pre> <br> <h1>History</h1> <b>Version 0.6:</b> Sorce code reorganization and PGN improvements <ul> <li>Code splitted in carballo-core, carballo-jse and carballo-applet</li> <li>Carballo-Core is GWT-friendly</li> <li>Integrated SAN notation on Board class</li> <li>Improved PGN export with SAN notation</li> </ul> <b>Version 0.5:</b> Improves about 150 ELO points over Carballo 0.4 <ul> <li>PVS searcher: SearchEngine completely changed</li> <li>Futility pruning now works!</li> <li>New TT algorithm, now also uses TT to store evaluation values</li> <li>Bug with draw detection with 3-fold repetition</li> <li>Bug with time management on tournament, was using the opponent's time amount</li> <li>Bug with history table overflow</li> </ul> <b>Version 0.4:</b> First version integrated with Mobialia Chess <ul> <li>Parametrizable evaluator</li> <li>Evaluator changes</li> </ul> </body> </html>