A Modest Chess Engine

git clone git://github.com/skeeto/october-chess-engine.git

Here's what I've been working on for about the last week: a little chess application in Java. It has a built-in AI you can play against and it's capable of playing both standard chess and Gothic chess right now. It's actually a chess framework, so it would be fairly easy for me to add new chess variants, and the AI would be able to play it automatically. The hardest part is handling a particular chess variant's castling rule, since that's the hardest rule to generalize.

The AI is a minimax search over four full plies with a fairly simplistic heuristic (but more than just adding up material). It's probably not that great of a player, but it's good enough that none of my friends, nor I, are able to beat it. I concentrated more on making it flexible than fast, so it can't search more than five plies without taking unreasonably long. But it does use multiple threads to do the search, so it should be pretty speedy on an SMP system.

I thought about adding multiplayer capability and perhaps giving it the ability to interface with standalone chess engines (wow are those protocols ugly!), like GNU Chess. But there are other programs that already do this better than I ever could. I've done about as much as I was interested in doing with it.

Maybe you remember that chess AI essay I wrote some years back? I was talking about using a genetic algorithm to tweak the AI parameters. Well, I actually tried to do that here with this AI (see the OptimizeGA class in the code). Turns out it's not very useful anyway! :-P It wasn't getting anywhere useful in my experiments.

Have a comment on this article? Start a discussion in my public inbox by sending an email to ~skeeto/public-inbox@lists.sr.ht [mailing list etiquette] , or see existing discussions.

This post has archived comments.

null program

Chris Wellons

wellons@nullprogram.com (PGP)
~skeeto/public-inbox@lists.sr.ht (view)