The repeated insults received via email and the spam and junk comment that I’m receving in this days (most of them automatically deleted) take me to the decision to stop further developing Naraku. Sorry for all the people who liked an engine with a lot of different elo levels, but if I have to take insults for what I always treated like an hobby, it is not worth it. My goal was to create a free alternative to Chessmaster or Hiarcs (an engine with a lot of personality and levels of strenght).
About the origins of Naraku. It started as a hobbyst project in 2007, first as a stand alone C application (without UCI interface), and then rewriting in it a lot of ideas taken from other engines (this part started at the end of 2009). As I always written on the blog and other forums, these ideas included fruit, crafty, ippolit and a little part of Stockfish. Ah, I have to thanks the excellent TSCP (Tom Kerrigan’s simple chess program) code, that really help me a lot in learning chess programming.
I also learnead a lot when I worked for “La Sapienza” University last year, using the free subscriptions to a lot of scientific magazines of the university (sciencedirect and so on). In this period I was able to greatly improve the engine.
Then, after the coming of houdini, I started to think that rewriting the bitboard structure of the engine with an ippolit-like bitboard could help a lot, so I did it. It required me a lot of work. If this could be interpreted as cloning, deriving or some other similar words I do not care. But was not my intention to create troubles in the chess community: I never publicized my engine apart from my blog, never asked to anyone to test it, only offer for free from here. But when you take insults for a work that you think could be useful in the chess community, well, it simply not worth it. But it could be easily demostrated that Naraku share a lot with Ippo and at the same time have a lot of differences.
And now a few answer to some question that repeated full my email address:
Why Naraku use Multipv option if it don’t have it? Because I plan to include it in future version, then I switched to correct other bugs and removed to the things to do, at the point that actual version still dont have it.
Was Naraku based on Fruit 1.5 (or other version)? No. And BTW Fruit 1.5 is a lot weaker than Naraku.
Why you don’t create a multicore version as you stated almost a year ago? Because I tried it, but I was unable to do. Crash, slowness, a lot of problems came out. Thinking that parallelization was an easier task to do, I was wrong.
And yes, older version of Naraku was planned to delete with the release of 1.4 version. This version can be used to learn to play chess; and I think that Naraku can play a good chess even if set at 1000 elo points, a task that most of the actual engine are unable to do.
So I stop developing the engine at this stage. Because is an hobby for me, I think I’ll make some other programs… maybe an adventure game, I really like the Adventure game studio tool, really simple and powerful.
Ah, Naraku means “Hell” in english, is the main antagonist in the InuYasha series, I opted for his name for the engine, because in the anime Naraku make a lot of deep strategical plans.
I’ve released a new version, much stronger than 1.31. This version is dedicated to my girlfriends Simona, and today is her birthday.
You can download Naraku HERE.
80-90 elo points better than Naraku 1.31 (estimated)
Tuned a lot of parameters
Better positional evaluation, more like a human game
Better endgame evaluation
Bitboard rewritten and much more efficient, similar to the engines of the ippolit series or gull
Some moves inserted into the engine as lookup tables, a sort of small book inside the engine. Currently it not give an advantage in terms of elo (it’s only a test), but I am convinced that in next versions there will be a considerable improvement
More efficient time management
Rewritten input / output interface
Deep razoring REMOVED. It gave a lot of problem in long time matches.
Difficulty levels: Currently you can set from 850 to about 2500 elo in a chess interface that support UCI_EloLimit command (like Arena). The difficulty levels have yet to to be tuned.
64-bit? I am currently attending a postgraduate course at LyondellBasell, and on my laptop I can compile only 32-bit executables. When I get home, at the end of April, I will release a 64-bit version of Naraku, which should be at least 20 elo stronger.
Naraku 1.3 is bugged. It stop responding on Chessbase and Acquarium GUI. At this moment, it only work on Arena.
I want to thank Werner Schule, who discovered this bug (related to uci implementation) and help me finding a solution. I’ve identified 2 other bugs, in the evaluation and in the futility pruning algorithm, that also crash the engine in non-Arena GUI. I rewrote part of the functions that receive and send UCI commands, and now I’m working to correct the other bugs. In this week I release a new version.
I’ve released a new version of my engine. This version adds many new features:
- More aggressive pruning and better move ordering
- Engine now dinamically select optimum futility parameters based on depth and turns of game, but it is still not perfect tuned
- Late move reduction
- Better PGO compile (engine slighty faster)
- Better evaluation function
- Bishop outpost
Naraku logo by Dusan Stamenkovic
Now I’m making internal tests based on H.Schnapp 220-suite, with 40/4 match against various engine (Fruit 2.1, Amyan 1.72, Rotor 0.5, Aristarch 4.50, Ufim 8.02, AnMon 5.7 and Naraku 1.2) as used by CEGT. After over 10000 games with various revisions of the engine, I estimate Naraku 1.3 with a rating of 2613 +- 14 elo points (using CEGT rating for the other engines).
Naraku is actually competing on Chesswar.
Due to work, that absorbs all my energies, I have to postpone personalities in the engine to the next version.
Naraku 1.2 has been added to the prestigious CEGT:
It is in position 575, with a rating of 2574 elo points (all version rating list) and 158 in single version rating list! It seems that I have overestimated a bit his strength but it is a very good result
I’ve released a new version of my engine. This version adds many new features:
- Adaptive Deep Razoring
- Futility Pruning
- Code cleanup and optimization, about 1% faster when searching
- SSE1 compile (to support old CPU)
- Logo by Dusan Stamenkovic
By my internal tests, this new version is 20-25 elo points stronger than Naraku 1.12 on long time control. So Naraku could be rated approx 2745 elo.
I removed Inuyasha and Shippo, because in the next releases I’ll add some options to setup the engine strength by choosing some personalities.
I’ve released a new Naraku version. Based on my internal tests, this version is about 40-45 elo point stronger than Naraku 1.01. So Naraku 1.1 have a elo rating of 2690-2695.
List of changes:
Null move pruning algorithm totally rewritten, now it is quicker and more efficient
Better evaluation function and material weights
You can download this and previous versions from the “Naraku Chess Engine” section of the blog.
Ho completato anche una classifica dei migliori motori scacchistici per partite brevi (40/4 ripetuti, ovvero 40 mosse in 4 minuti ripetute). Le impostazioni sono: 40/4′ ripetuti, ponder off, opening book fino a 10 mosse. Ho tolto i risultati dei motori a 32 bit, concentrandomi solo su quelli a 64 bit, per risparmiare tempo e partite. La classifica finale è la seguente:
Program Elo + - Games Score Av.Op. Draws
1 Houdini 1.02 x64 4CPU : 3280 11 11 1723 54.4 % 3249 57.3 %
2 IvanHoe 9.55b x64 4CPU : 3266 16 16 771 51.8 % 3254 57.5 %
3 IvanHoe 57a4 x64 4CPU : 3266 13 13 914 51.9 % 3253 66.7 %
4 Fire 1.2 x64 4CPU : 3264 17 17 702 51.8 % 3252 54.8 %
5 Deep Rybka 4 x64 4CPU TM : 3262 9 9 2908 60.6 % 3187 44.9 %
6 Fire 1.31 x64 4CPU : 3261 18 18 730 50.8 % 3255 50.7 %
7 Deep Rybka 3 x64 4CPU : 3228 11 11 2548 63.8 % 3130 40.5 %
8 Robbolito 0.09 x64 : 3227 16 16 968 46.1 % 3255 49.8 %
9 Stockfish 1.8 x64 4CPU : 3222 13 13 1581 53.4 % 3198 42.0 %
10 Stockfish 1.71JA x64 4CPU : 3199 13 13 1592 56.8 % 3152 45.1 %
11 Naum 4.2 x64 4CPU : 3154 13 13 1575 51.5 % 3144 43.1 %
12 Rybka 2.3.2a x64 4CPU : 3100 18 18 712 48.5 % 3110 47.9 %
13 Deep Shredder 12 4CPU : 3093 14 14 1464 43.8 % 3136 37.7 %
14 Critter 0.70 64bit 4CPU : 3084 19 19 673 41.5 % 3144 47.8 %
15 Deep Fritz 12 4CPU : 3080 22 22 607 36.4 % 3177 40.2 %
16 Spark 0.5 64bit 4CPU : 3067 25 25 451 41.8 % 3125 38.4 %
17 Deep Fritz 11 4CPU : 3050 18 18 825 31.9 % 3182 45.1 %
18 Zappa Mexico 2 x64 4CPU : 3013 14 14 1727 28.0 % 3177 35.2 %
19 Thinker 5.4c Inert x64 4CPU : 3005 26 27 529 26.8 % 3179 29.5 %
I pc usati sono dei quad core intel e amd: 2 quad core Q6600, 2 i7 920 2.66 ghz, 1 amd phenom 2 940. Ai miei risultati ho aggiunto altri risultati reperiti in rete alle stesse impostazioni (stesso tempo e capacità computazionali). In questo modo ho ottenuto una buona base statistica che consente di valutare con una buona approssimazione la forza di ciascun motore scacchistico. I dati sono stati calcolati con elostat tramite il programma Arena 2.01 in modo che Deep Rybka 4 abbia lo stesso punteggio del test 40/40′.
Rispetto a tempi più lunghi, dove aveva prevalso Rybka 4 (seppur di pochissimo, pochi punti elo), qui la situazione è capovolta. Tutti i motori più o meno derivati o successori di Ippolit (Ivanhoe, Houdini, Fire/Firebird), si dimostrano migliori, anche se tolto Houdini, avanti di 18 punti elo, tutti gli altri hanno praticamente lo stesso punteggio di Deep Rybka 4. Anche Robbolito, che sfrutta un solo core, guadagna qualcosa rispetto alla precedente classifica. Ciò lascia supporre che a tempi ancora più lunghi, o con più core (6-8 o veri e propri cluster), Deep Rybka 4 abbia ancora del margine, un aspetto da non sottovalutare nell’analisi delle partite. Il simbolo TM accanto a Deep Rybka 4 sta a significare che si sono adottati tempi diversi da quelli standard; più precisamente si sono adottati Normal move time=100 e Max move time=150, che sembra diano migliori risultati su partite brevi.