Chess Overview
This is vanilla chess with no bells and whistles. Our engine implements all standard stalemate rules:
- Insufficient Material
- Repetition
- Fifty Move Rule
It is helpful to be familiar with Standard Algebraic Notation (SAN). For help on strategy visit the chess programming wiki.
Details
Time per move | Each algo gets 300,000 milliseconds (5 minutes) total to finish the entire game. This emulates a real life chess clock. (We are still figuring out the best amount of time to provide for our games. This is subject to change.) |
Ranking system | The algos are ranked based on win percentage (we plan to change this to some sort of Elo system). |
Algo initializing config |
config['color'] is a string representing the color your algo is playing. This will be 'w' if your algo is white or 'b' if your algo is black. |
Valid moves | A string that is a valid move in SAN for the current game state. |
Sample Algo
import random
class Algo:
def __init__(self, config: dict):
self.color = config['color']
def take_turn(
self,
state: ChessGameState,
interface: ChessInterface
) -> str:
# Log the FEN of the current state
interface.log(state.fen)
# Iterate over possible moves
moves = state.all_valid_moves
for m in moves:
# Log the move
interface.log(m)
# Get the resulting game state if you played that move
next_gs = interface.make_pseudo_move(state, m)
# Log the resulting game state
interface.log(next_gs.fen)
# Return a random legal move
return random.choice(moves)