## ROCE-Roman's Own Chess Engine

##### Readme, (27.06.2009)

### Intro

Roce is yet another chess engine that probably no one needs. Still it's a lot of fun to work on it. I started writing Roce around christmas time in 2003. At first it was supposed to be a weeks or months project mainly meant to improve my knowledge of the C programming language. But the project turned out to be more challenging and timeconsuming than I expected it to be.

### How to run Roce

If you intend to play against Roce you should get a nice GUI like Arena or something else that supports the UCI-protocol. Roce should also work under the Fritz or under the Shredder classic Interface. In fact any GUI that supports the UCI-protocol should do.

### Playing strength

Roce is still a rather weak engine. It won't miss simple tactics but it still lacks a lot of chess knowledge and will play unsound moves in many situations. On the other hand it plays with a rather risky and attacking style and even mediocre players have a good chance to win or draw a game so depending on your strength it might be an interesting opponent to play with.

### History

- x-mas 2003, start to write a move generator
- february 2004, HD failure on my notebook, sources are lost
- march 2004, start coding again
- august 2004, move generator works fine up to ply 5
- septembre 2004, fixed an ep-bug, move generator seems to work fine now
- decembre 2004, implemented minimax/negamax and a simple material eval
- january 2005, implemented a NegaMax search
- february 2005, added a pieces/square table in order to improve move ordering for alpha beta
- june 2005, replaced the material-only eval with a material/square-evaluation
- june/july 2005, added parts of the UCI protocol to the engine
- july 2005, Roce 0.034 played the first games against other engines (and lost most of them)
- july/august 2005, fixed several bugs (promotion bugs, input/output problems) new version 0.0344
- February 2006, fixed some bugs in the movegenerator, console output format changed, search modified, new version 0.0345
- july 2006, added a QS to the search, new version 0.0350
- march 2007, Chess960 capability added and some other minor changes, new version 0.0360
- january 2008, ep-bug fixed, search and QS improved, new version 0.0370
- july 2008, another ep-bug fixed, verification search added, problem with zobrist keys fixed
- june 2009, a few bugs fixed, transposition table added, new version 0.0390

### A few technical details

Roce is using the rather old fashioned 10x12 board representation.

Roce generates most of the time only legal moves unlike most other chess engines which usually depend on pseudo move generation. While legal move generation is rather timeconsuming it simplifies also some things. Mate and stalemate can be detected by the move generator already and information regarding mobility is always up to date. In the quiescent search I'm generating pseudo captures beginning with version 0.036 on though and only switch to legal move generation if the side to move is in check.

##### Tech. specs in detail

- 10x12 array for board representation
- piece list, incrementally updated in makemove
- eval, incrementally updated in makemove
- plain alpha-beta-search, negamax-design with beta-cutoffs
- nullmove, R=2, verification search
- in-check-extension, not in qs
- quiescent search, move ordering by MVV/LVA
- hash table, always overwrite

### What is RoceConfig.exe good for?

Thanks to the effort of Patrick Jansen Roce (versions beginning from 0.0344) comes together with a nice configuration tool which makes changing settings very easy. RoceConfig helps you to adjust the settings of Roce to your needs without having to fiddle around with the configuration file directly.

### What is the file perfttestsuite.epd good for?

The file consists of a testsuite of positions which are usefull to check if the movegenerator works properly. This feature is mainly used to check if the move generation and move making part is still working properly after some modifications have been made to the sources. The test can be started by entering the command 'testmovegen' and takes -depending on the speed of your computer- a few minutes to hours to finnish. It's sufficient to run this command only once on a certain computer to make sure it's working properly as some aggressive optimization might cause problems on some processors. Most of the positions and numbers in the file were posted by Andrew Wagner on the Chess Computer Club (CCC) in 2004.

### Legal stuff

The binary of Roce is currently available for free but I preserve the right to change that at any time (although it's very unrealistic that Roce will ever go commercial, of course). The source code won't be released most probably as there are already more than enough sources of engines available.

### Credits

The chess engine Roce is written entirely by me. The name is program. But of course I was able to recycle a lot of great ideas from smart people. The main reason I got interested in chess programming was due an article that appeared in the German Computer Journal DOS in 1997. The article 'Der PC lernt Schach-Das Spiel der Koenige' was written by Chrilly Donninger and Klaus Manhart. Later when I was writing on my engine I also learnt a lot about the matter from Bruce Morelands excellent site. Several ideas I got by reading and asking questions on several chess forums like the Winboard forum or the Chess Computer Club.

Furthermore I would like to thank all those who are running computer chess tournaments. Always very interesting to have a look at the games or at the results even though Roce is usually to be found at the end of those lists. Many thanks to Leo Dijksma, Guenther Simon, Olivier Deville and Karl-Heinz Soentges for letting Roce compete in their tournaments. Maybe there are more tournaments where Roce is participating I'm not even aware of. Let me know if that should be the case.

Roman Hartmann
rhartmann[nospamplease]@bluewin.ch