Flexible library or server for board games (chess or others)

c++chess

I'm looking for a program or library that I could use for experimenting with board games (chess mostly, but not necessarily — other similarly complex board games
are OK too). I'll test different game-playing algorithms.

This is what I need:

  • I'd like, if possible, to make my program play against
    players like gnuchess and crafty, but also against itself
    and against a human player;

  • It's OK if my player-program can communicate with the
    "server" via TCP, but it would be even nicer if it had
    a C interface (not C++, because then I'd have to write
    a wrapper);

  • I may want to change the game rules (initial position of
    pieces, number of pieces, and even movement rules);

  • Flexible (it's OK if the library/server validates
    chess moves, for example, but I'd like such feature to be
    optional because I will want to turn it off for some
    experiments);

  • Free (I may want to get into the source code and maybe
    change a few bits).

I'd be grateful if anyone could point me to such a library/server…

Thanks a lot!

P.S.: I wanted to include a "board-games" tag, but it seems that I'd need more reputation for that…

P.S. 2: I'd like to accept two answers (they're complementary). It's a pity StackOverflow doesn't allow that.

Best Solution

VASSAL is a cross-platform engine for playing board and card games over the internet. It is designed for allowing humans to play each other, but it is extensible enough you could add an AI player.

It is open-source and extremely customizable, people have created original games using it.

Related Question