The release of Nanook Chess v0.2 has been postponed due to professional reason until september or october.
I need to finish the attack board for a better position evaluation, and to implement rules to manage ending game before to be able to release this new version.
Showing posts with label nanook chess. Show all posts
Showing posts with label nanook chess. Show all posts
Monday, July 18, 2011
Thursday, May 26, 2011
Nanook v0.2 will be released in June or July
I'm planning to release Nanook v0.2 in June or July: I implemented almost all the functionalities I wanted to add (I will describe them later), but I still have a lot of work on testing and to improve the board evaluation.
Even with a bad evaluation function, v0.2 won 100% of the 10 games they played against v0.17 (5 minutes/side for each game), so it seems to play much better. As soon as I will have an evaluation working correctly, I will test it against other chess engine, and try to estimate the elo gain since last version
Even with a bad evaluation function, v0.2 won 100% of the 10 games they played against v0.17 (5 minutes/side for each game), so it seems to play much better. As soon as I will have an evaluation working correctly, I will test it against other chess engine, and try to estimate the elo gain since last version
Thursday, May 5, 2011
Nanook chess from scratch - First step : UCI protocol, move generator and alpha-beta
I want for this version of Nanook chess to avoid from the beginning all kind of moves bugs that we often detect too late. Beginning with a stable move generator and a well working alpha-beta algorithm is the best way to correctly progress forward.
So, first of all, I choose a 0x88 board representation : It's a little different from the one used in the previous version of Nanook, but it seems to me to be a better way. Then I developed the move generator, nothing complicated at this point : just need to make sure that special move as castling/en passant/promotion are well understood. An finally, I implemented a basic alpha-beta algorithm with a really simple evaluation function (counting score of captured pieces, no score for position).
Before to make a step forward, I need to make sure that all these points work perfectly, the best way to do it is to implement now the UCI protocol, in order to be able to test all kind of situation with fen positions.
UCI protocol implements a lot of commands, basically at this point it will be interesting to integrate the commands position/info/bestmove/etc... (options and timer can be done later), the most important is the possibility to load a fen position. Believe it or not, but previous version of Nanook was not able to load a fen position, I never implemented it ! Testing a position was possible only using startpos...
As soon as these commands are understood, the engine can reply with the best move, and some other informations... It should be interesting also to manage "go infinite" and "stop": when you will launch test analysis, the GUI might use these commands. The best way is probably to create a Thread where you launch your analysis, so you can continue to read input commands from GUI and wait for the "stop" signal.
Ok, so now Nanook Chess implements all these points, I just need to load and test some specific fen positions via UCI to make sure it didn't make an illegal move. I was thinking to do my own GUI engine with a list of fen positions and their expected moves, but it seems Arena give this possibility with the "engine analysis", you can load an EPD file (EPD is a format where you can find a list of fen positions and the move expected to be played for each of them), the engine will analyse these moves, and finally it will display which moves the engine success and fails. Great ! So the only thing I need to do is to create an EPD list with positions that Nanook should understand at this point of development (get a "free" piece, find a mate, escape a mate, test a pat, promotion, ...), and I will go forward only when it will success with 100%. This seems to be a very good way to proceed : for each step of the project, I will check again all EPD positions, and develop new ones, then Nanook should never have a worst score than the step before.
I'm now preparing an EPD list of fen (around 30 specific positions), I will probably test the engine today or tomorrow with it.
So, first of all, I choose a 0x88 board representation : It's a little different from the one used in the previous version of Nanook, but it seems to me to be a better way. Then I developed the move generator, nothing complicated at this point : just need to make sure that special move as castling/en passant/promotion are well understood. An finally, I implemented a basic alpha-beta algorithm with a really simple evaluation function (counting score of captured pieces, no score for position).
Before to make a step forward, I need to make sure that all these points work perfectly, the best way to do it is to implement now the UCI protocol, in order to be able to test all kind of situation with fen positions.
UCI protocol implements a lot of commands, basically at this point it will be interesting to integrate the commands position/info/bestmove/etc... (options and timer can be done later), the most important is the possibility to load a fen position. Believe it or not, but previous version of Nanook was not able to load a fen position, I never implemented it ! Testing a position was possible only using startpos...
As soon as these commands are understood, the engine can reply with the best move, and some other informations... It should be interesting also to manage "go infinite" and "stop": when you will launch test analysis, the GUI might use these commands. The best way is probably to create a Thread where you launch your analysis, so you can continue to read input commands from GUI and wait for the "stop" signal.
Ok, so now Nanook Chess implements all these points, I just need to load and test some specific fen positions via UCI to make sure it didn't make an illegal move. I was thinking to do my own GUI engine with a list of fen positions and their expected moves, but it seems Arena give this possibility with the "engine analysis", you can load an EPD file (EPD is a format where you can find a list of fen positions and the move expected to be played for each of them), the engine will analyse these moves, and finally it will display which moves the engine success and fails. Great ! So the only thing I need to do is to create an EPD list with positions that Nanook should understand at this point of development (get a "free" piece, find a mate, escape a mate, test a pat, promotion, ...), and I will go forward only when it will success with 100%. This seems to be a very good way to proceed : for each step of the project, I will check again all EPD positions, and develop new ones, then Nanook should never have a worst score than the step before.
I'm now preparing an EPD list of fen (around 30 specific positions), I will probably test the engine today or tomorrow with it.
Wednesday, April 27, 2011
History and Future of Nanook Chess : a new version from scratch in preparation
I think it's now time to improve Nanook chess with a real new version. The last release v0.17 is weak, I identified a lot of problems 2 years ago but I never corrected them, a lot of functionalities are not implemented, and I don't feel very well to let this project unfinished.I started this project almost 8 years ago in C language, for a computer school project. The name of the project was "Epichess", and it has been developed to play chess through network, with client/server connections functionalities, 2D graphic, multiplayers/multi-engines for tournament, elo estimation, compatibility on Windows/Linux… I worked in this project during 2 months, the engine was weak, oriented for beginners.
4 years ago, I decided to extract the engine from Epichess project and make it compatible with UCI protocol, rewriting quickly just some pieces of code, with no improvement, Nanook v0.15 was born. V0.16 has been released in june 2007, with some improvements but nothing really new.
In may 2009, after 2 years of inactivity, I added some new functionalities, but it was more like a patch than a real new version, just to make it a little stronger.
Now, when I watch the C code source, I’m very surprised and I understand why Nanook Chess is so unstable… I patched this code for so long, I actually can see some error that I coded 8 years ago that are still there. The only way to have a new stable version is to develop this project from scratch, and that’s the decision I just caught: the next version of Nanook Chess will be developed in C++ from scratch. I expect from this version to be stronger than the 0.17, more stable and implementing the UCI protocol with all functionalities.
Thursday, April 21, 2011
Links to download "Nanook Chess" are updated
The server Host for the binaries v0.16 and v0.17 changed 1 month ago, and links to download them was not working anymore. I just updated the links with the news host, they are now available.
First message since 2 years
It has been a long time since my last message, unfortunately I didn't have time to work on Nanook Chess these 2 past years, too much work, too much extra activities.
I remember I developed v0.17 after 2 years of inactivity, I guess it's now time for a 0.18, or directly a v1 ! :-)
I had problems with my email and just saw some comments written 1 year ago, sorry for that, I will now redirect them to my main email, so this should never happen again.
I will investigate to find time to develop a new version, more powerfull, and let you know when I start it, I did a lot of benchmark these past months about performance C/JAVA programming in AI and text mining domain, and it should be interesting to describe these results adapted to Chess case.
I remember I developed v0.17 after 2 years of inactivity, I guess it's now time for a 0.18, or directly a v1 ! :-)
I had problems with my email and just saw some comments written 1 year ago, sorry for that, I will now redirect them to my main email, so this should never happen again.
I will investigate to find time to develop a new version, more powerfull, and let you know when I start it, I did a lot of benchmark these past months about performance C/JAVA programming in AI and text mining domain, and it should be interesting to describe these results adapted to Chess case.
Tuesday, May 19, 2009
Nanook v0.17 available
Nanook v0.17 is finally available ! You can download this version here. This is the list of the main changes :
- Basic implementation of the aspiration windows
- Better Killer moves
- Principal Variation Search
- Basic implementation of Late Move Reduction
- Corrected some bugs with hash table and check problems
- Basic implementation of history heuristic
I didn't manage yet the following important points :
- to ameliorate the compatibility with UCI protocol
- to work on the evaluation function
- to implement some specific algorithms to play end games
But it will be probably the main points I will work on wih the next version.
Here are the results of the last tournament between nanook v0.16 and v0.17, this new version seems better... :-)
15 games of 5 minutes :
I still have a lot of improvements to do in order to have a Nanook Chess version not so weak... I work will work on it !
- Basic implementation of the aspiration windows
- Better Killer moves
- Principal Variation Search
- Basic implementation of Late Move Reduction
- Corrected some bugs with hash table and check problems
- Basic implementation of history heuristic
I didn't manage yet the following important points :
- to ameliorate the compatibility with UCI protocol
- to work on the evaluation function
- to implement some specific algorithms to play end games
But it will be probably the main points I will work on wih the next version.
Here are the results of the last tournament between nanook v0.16 and v0.17, this new version seems better... :-)
15 games of 5 minutes :
| Module | Score | Na | Na | S-B |
|---|---|---|---|---|
| Nanook_0-17 | 13,5/15 | · ·· ·· ·· ·· ·· ·· | =11111111111=1= | 20,25 |
| Nanook v0.16 | 1,5/15 | =00000000000=0= | · ·· ·· ·· ·· ·· ·· | 20,25 |
I still have a lot of improvements to do in order to have a Nanook Chess version not so weak... I work will work on it !
Friday, April 17, 2009
Nanook Chess v0.17 is close to be ready
On the way of the v0.2, I'm developing the version v0.17, implementing PVS algorithm and late move reduction. I still have some bug that I'm resolving, but this version is really quicker than the previous one.
I will keep updating about the test resuts and new functionality during this week.
I will keep updating about the test resuts and new functionality during this week.
Thursday, April 2, 2009
I started to develop the version 0.2 of Nanook Chess, right now I resolved several bugs and optimized the software. This development version is yet stronger than the previous one :
I still have to optimize the evaluation function before to make more tests, it's really slow and it seems to be the highest problem to resolve.
| Classement | Module | Score | Na | Na | S-B |
|---|---|---|---|---|---|
| 1 | Nanook v0.2 dev | 7,0/10 | · ·· ·· ·· ·· | 110101=11= | 21,00 |
| 2 | Nanook v0.16 | 3,0/10 | 001010=00= | · ·· ·· ·· ·· | 21,00 |
I still have to optimize the evaluation function before to make more tests, it's really slow and it seems to be the highest problem to resolve.
Wednesday, March 18, 2009
Nanook Chess is back
Nanook Chess development has been stopped almost 2 years ago. I have been too busy to continue to work on it, but I hope to be able to improve the AI level in the coming months.
The 2 years old version is now available at the following address : Nanook chess v0.16
The 2 years old version is now available at the following address : Nanook chess v0.16
Subscribe to:
Posts (Atom)