Sunday, August 12, 2012

mACE GUI Update

I decided to publish a small update to the mACE GUI that can be used to play against my iCE engine. Unlike iCE it is written in Free Pascal, so I had a bit of a hard time to switch back to Pascal coding syntax ( := instead of =, = instead of ==, no ; before an else statement and this kind of stuff).

The mACE GUI allowed 3 strength settings (low, medium and high) which allowed the engine 3, 5 and 10 minutes thinking time for 40 moves. It turned out that this is to strong, even in low it was unbeatable for an average amateur player. I decided to weaken it further by putting search limits to its search. I call that skill level and I implemented the skill level 0 - 10.

The skill level specifies the max main search depth for the engine, so in skill level 5 the engine searches 5 ply deep. The engine performs still a quiescence search (it plays out all winning captures when the max search depth is reached, so it does not hang a piece there) and uses some extensions (like the check extension).

I was surprised that even in skill level 0, the engine plays quiet reasonable and it takes some effort to beat it. So to have some real weak levels I also introduced some randomness. In skill level 0 and 1 there is a 10% - 20% chance that the GUI discards the move sent from the engine and picks a random move from the legal move list. This now gives me a real good chance to beat it and hopefully increases the fun for others as well.