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
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.