Building a better settler
We build computer players for Settlers and test how they plan, trade, and act under uncertainty. Each finding links to its experiment, recorded results, and next question. The project is open source.
| Start here | What you can do |
|---|---|
| Experiments | Follow the findings from newest to oldest |
| Build a client | Write a player and run a long simulation |
| Run the server | Set up with only the research and server repositories |
| Research approaches | Explore the decisions and mechanisms being studied |
The current baseline
ntuple-leaf combines expectimax search with learned position values. In
its registered protocol comparison, it won 46 of 80 games against 25 for the
previous hand-written-leaf search. All 80 games completed.
Win rate by competitor
95% intervalThat result concerns one lineup and one relative seating scheme. Read the experiment and replay, the later seating findings, and the current evidence boundary before generalizing. New comparisons use both relative orders of the candidate and reference. The latest retests identify a promising leaf blend; it still needs a protocol cohort before replacing this baseline.
Explore the research
Proposed and tested directions in resource planning, uncertainty, learning, trading, and cooperation.
Showing 17 of 17 ideas
The islandTested
Opening portfolios
Should you maximize production, diversify, or commit to a powerful specialization?
The islandTested
Build tempo
Which next build converts your current resources into progress fastest?
The islandTested
Expansion and races
When is an expensive road worth buying before an opponent closes the route?
The islandTested
Ports and market power
How does an outside option change what you should accept in a trade?
UncertaintyTested
Beliefs about hidden hands
How much should a player infer from production, spending, and refused trades?
UncertaintyTested
Search under uncertainty
What should expectimax average over, and where does opponent choice enter?
UncertaintyTested
Risk and timing
When should a player prefer reliable progress or a volatile route to victory?
UncertaintyTested
Development and surprise
When does a hidden option justify delaying a visible build?
UncertaintyTested
Learned pattern values
Can lookup tables of small board patterns, learned from self-play, replace the hand-written leaf and save a ply of search?
The conversationTested
Bilateral bargaining
How do you make a mutually useful trade without funding the winner?
The conversationProposal
Truthful signals
When does an honest explanation persuade more effectively than silence?
The conversationProposal
Bluffs and disclosure
What is the value of a bluff after you count lost credibility and revealed information?
The conversationTested
Reciprocity and reputation
Can a small concession buy enough future cooperation to recover its cost?
The conversationProposal
Bounded pliability
Should social context change expectimax itself, or rerank a bounded set of alternatives?
The tableTested
Leader containment
Who should pay to slow the leader, and when should you decline to help?
The tableTested
Opponent adaptation
How quickly should a player change its strategy when an opponent behaves differently?
The tableTested
Population and self-play
Does an approach remain strong when the table stops resembling its training partners?
Each approach connects a game decision to a proposed mechanism and an experiment. The experiment timeline shows what has been tested; the roadmap shows what remains open.
Run matches and contribute
Your first match
Install Python 3.11+, Rust 1.96+, and just. Keep the server checkout beside this
repository as ../server, or set SETTLERS_SERVER_DIR to its absolute path.
# From research/. Leave the server in this terminal.
just setup
just tables
just server# In another terminal, also from research/.
just doctor
just match ntuple-leaf expectimax-v2-plan ntuple-leaf expectimax-v2-plan --games 1The server guide explains storage and optional fast/ETA opponents. The client guide includes a working Python policy, registration, mirrored cohorts, parallel runs, and result inspection.
Keep the research reproducible
The harness has no third-party Python dependencies. It runs independently of
web and design; an all-stdio lineup needs only Python and a reachable server.
Locally built Rust players need the server checkout, and the learned baseline
also needs the committed tables unpacked with just tables.
Register a study before collecting evidence. Keep frozen protocols, compact
records, and selected public exhibits in Git. Raw runs, server state,
credentials, and archives stay in ignored runs/, .runtime/, and artifacts/.
Use just archive to retain a verified bundle and its receipt. Temporary research
worktrees belong inside .worktrees/ in this repository.
Follow the research workflow to update the owning
study and dated log, then run just notebook and just check. The
publishing guide explains sourced charts and game replays.
When the separate website checkout is available, just site-check validates
its routes and MDX. The website renders these documents under /research;
running simulations does not require building or deploying it.
The canonical source remote is settlerust/research. No artifact bucket is
assumed. Agent entry points are in AGENTS.md and .agents/skills/.