← Back to projects
In progress 2026

Farmland

An online multiplayer version of the board game Agricola, written in Go. It has an immutable rules engine and a bot that plays by simulating real moves, tuned over 150 simulated games.

  • Go
  • Rules engine
  • Game AI
Farmland cover

The idea

Agricola is a turn based worker placement board game. Its rules are dense: actions, a resource economy, harvests, and end game scoring all interact. I wanted to see if I could model all of that cleanly and then build a bot that plays it well.

How it works

  • An immutable rules engine. Every action takes a game state and returns a new one. Nothing gets mutated in place, so each rule is easy to test on its own and any game can be replayed from its moves.
  • A bot that plays real moves. The bot picks its move by simulating real moves through the same engine the players use. I tuned it over 150 simulated games.
  • A small server. The whole thing runs as a single Go process, and clients get game updates by long polling.

Stack

Go.

Status

In progress. The rules engine and the bot are where most of the work has gone.