giovedì 21 novembre 2013

Vajolet chess engine

After a year of hard work, my engine Vajolet, reached a level that make me proud of it but now I feel like it need to be rewritten from scratch to solve some design problem that stop it from reaise to the 3000 elo points.

My engine has just reached the 2650 elo point in CCRL 40/40 list and the 67th position and a new version is ready to be release. This will be the last release of Vajolet as you know it. In the last year, following the winglet blog and then studying lots of free engine like stockfish, cheng and fruit I was able to write a good engine.

Now I have hit some stonewall made of past design choice that make me make no progress at all so I decided to restart th project, taking all the good things of the old code, discard some idea and try to build a better engine.

but what are the main problems of vajolet?

  • a design that make very difficult to add multithread
  • a code that can only work on windows
  • poor testing 

so what's are my new GOAL for the new code? 

  • first of all a multithread engine ( it will be added only when the engine will be in an advanced state of developing)
  • 32/64 bit compile and use of SSE parallel instruction for the evalutation.
  • a full working windows/ linux environment
  • c++11 to use some very interesting new feature and libraries like the new randomMersenne twister and portable threading library.
  • a good framework to test, evalutate and rank my engine.
  • bug free code. I need more test and lots of assert and deterministic code (I'll check vajolet result with more than one compiler in debug and release compile).

what have I achieved up to now?

up to now I have rewritten the legal move generator, the code to check that a move is legal, the make/unmake code and the UCI parser.
The new code runs nicely on both windows 7 and linux and is fast as the old one. I still havent tried the code on a 64 bit platform but I'll do as soon as possibile.

what I need to do now?

I need to finish testing my legal move generator, document it, add lot of assert and as soon as I get satisfied from this code I'll go to the next task:  start to write a simple alpha/beta searcher.

I also decided tos tart this blog to keep you informed about my progress and to release/explain my testing/developing procedure.

sincerely yours Marco Belli

5 commenti:

  1. Good luck and fun with the rewrite. iCE is also already my third chess engine. So I know exactly what you experienced.

    Thomas...

    RispondiElimina
  2. thank yoo. I think ICE will be a very tough opponent for my new engine for a very long time

    RispondiElimina
  3. Good luck! If I may advice something, start developement with different implementations of things You don't like in your current engine. As the engine matures, it becomes more nd more difficult to change them, because the rest is tuned to interact with those questionable parts.

    RispondiElimina
  4. I have an engine, but it is only around 2000 strength. It is written in Javascript. I am rewriting it, trying to make 2500. Good luck :)

    RispondiElimina