Tuesday, May 2, 2017

UCI chess engine: Mobmat903d

=== MOBMAT History
MOBMAT gets it's name from MOBility and MATerial, arguably the two most dominant evaluation measurements. The first version of MOBMAT was written in the late 70’s as a result of reading chess programming articles in Byte magazine. The first MOBMAT could only look 1-ply ahead in it’s search and couldn’t play en passant moves. It, as it’s name suggested, did a root level evaluation of material balance and the mobility of the side to move and the material balance and  mobility of the opponent after each move was tried. Not very good. Still, it was entertaining for my office mates who could play chess. It was written in our mainframes terminal implementation of Basic and had an 8x8 board representation.

Over the decades, I played with various board representations, mainly as an intellectual challenge, but did graduate up to writing my code in C. I knew 8x8 was inefficient, had not heard of 0x88, and I bitboards seemed worthless on the 8/16-bit CPU’s on which i available to work on. I therefore put effort into 64 byte array board representation. I optimized it as much as I could and finally, after sitting on the shelf for a very long time, I rewrote MOBMAT in 2015 using the historical code I had archived. I was able to obtain a fairly good nodes per second rate but of course those pesky sliding pieces were a bottleneck, along with detecting in-check. But that version of MOBMAT combined all the modern search techniques that were previously alien to me, and combined with a transposition table, it played fairly decently. 

In the spring of 2016, I decided to bite the bullet and rewrote the entire application to use bitboards, which is what the current version uses.

=== MOBMAT Technical Details
MOBMAT is a personal project and still in development, and as a result, no source code is currently being made available at this time. 

No comments:

Post a Comment

Best posts of the month