nullprogram.com/blog/2010/10/17/
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.