How wide is a Settlers turn?
Legal actions per decision, by phase
Measured evidenceScroll the chart horizontally to inspect all values.
Bars are medians over builder-game decisions; the interval marks the 10th to 90th percentile. The main phase lists every legal build, exchange, and card play the server enumerates.
Source: Engine-arena structure run fcd6c0c1-af77-4d2f-b43d-5c598f8d5ff5: 64 builder games (fast, ETA, fast, ETA) on seeds 0-63; 21840 decisions after setup and 12578 sampled searches.
View data table
| Series | Phase | Legal actions | Low | High |
|---|---|---|---|---|
| Builder games | roll | 1 | 1 | 1 |
| Builder games | main | 8 | 1 | 17 |
| Builder games | discard | 1 | 1 | 1 |
| Builder games | robber | 22 | 20 | 24 |
| Builder games | free roads | 9 | 7 | 11.5 |
The engine's legal-action list is the raw width: every legal build site, every unit bank exchange, every playable card, and every robber hex paired with each victim. The search does not branch over all of it. Its candidate generator keeps builds, purchases, card plays, roads that shorten the path to a reachable site or extend a contested longest road, and exchanges that reduce a build deficit, then narrows later steps of the turn to the best few by static value.
Main-phase width through the game
Measured evidenceScroll the chart horizontally to inspect all values.
Median legal actions in the main phase per eight-turn window, with the 10th to 90th percentile; width grows as hands and road networks grow.
Source: Engine-arena structure run fcd6c0c1-af77-4d2f-b43d-5c598f8d5ff5: 64 builder games (fast, ETA, fast, ETA) on seeds 0-63; 21840 decisions after setup and 12578 sampled searches.
View data table
| Series | Turn | Legal actions | Low | High |
|---|---|---|---|---|
| Main phase | 4 | 2 | 1 | 9 |
| Main phase | 12 | 5 | 1 | 12 |
| Main phase | 20 | 5 | 1 | 13 |
| Main phase | 28 | 6 | 1 | 13 |
| Main phase | 36 | 7 | 1 | 15 |
| Main phase | 44 | 8 | 1 | 15 |
| Main phase | 52 | 8 | 1 | 16 |
| Main phase | 60 | 8 | 1 | 16 |
| Main phase | 68 | 9 | 1 | 17 |
| Main phase | 76 | 9 | 1 | 19 |
| Main phase | 84 | 9 | 1 | 18 |
| Main phase | 92 | 9 | 1 | 19 |
What a planned turn costs
The measurement analysed every third decision with expectimax-v2 at depths 1
to 4 under a fixed 400,000-transition budget and no clock. Medians rise from
2,110 transitions and 15 ms at depth 1 to 180,066 transitions and 1.65 s at
depth 4; a quarter of the depth-4 analyses hit the budget and are excluded from
the medians. The ratio between consecutive depths is about six, then four, then
three and a half: the opponents' round costs a fixed number of scenarios, and
the transposition memo catches more as trees grow.
Native analysis time, by depth
Measured evidenceScroll the chart horizontally to inspect all values.
Median wall-clock milliseconds per analysis on one core with the 10th to 90th percentile; native release build, default scenario and sample counts.
Source: Engine-arena structure run fcd6c0c1-af77-4d2f-b43d-5c598f8d5ff5: 64 builder games (fast, ETA, fast, ETA) on seeds 0-63; 21840 decisions after setup and 12578 sampled searches.
View data table
| Series | Depth (planned own turns) | Milliseconds | Low | High |
|---|---|---|---|---|
| expectimax-v2, default budgets | 1 | 15.09 | 3.29 | 106.1 |
| expectimax-v2, default budgets | 2 | 92.09 | 28.64 | 379.5 |
| expectimax-v2, default budgets | 3 | 465 | 123.2 | 1492 |
| expectimax-v2, default budgets | 4 | 1654 | 248.4 | 3816 |
Engine transitions per analysis, by depth
Measured evidenceScroll the chart horizontally to inspect all values.
Median transitions applied per analysis with the 10th to 90th percentile; each additional planned turn multiplies the work by the scenario count and the inner beam.
Source: Engine-arena structure run fcd6c0c1-af77-4d2f-b43d-5c598f8d5ff5: 64 builder games (fast, ETA, fast, ETA) on seeds 0-63; 21840 decisions after setup and 12578 sampled searches.
View data table
| Series | Depth (planned own turns) | Transitions | Low | High |
|---|---|---|---|---|
| expectimax-v2, default budgets | 1 | 2110 | 335 | 15740 |
| expectimax-v2, default budgets | 2 | 12520 | 5079 | 49450 |
| expectimax-v2, default budgets | 3 | 50400 | 18450 | 147800 |
| expectimax-v2, default budgets | 4 | 180100 | 40540 | 335000 |
Where the work goes
In a depth-4 analysis the current turn is a small tree, a median of 179 own-turn nodes ending in 19 positions. Each later level starts from the positions the previous level followed through the opponents' round, so the counts multiply: a median of 709 nodes at level 2, 3,984 at level 3, and 17,251 at level 4. The share of own-turn positions already seen falls from 21% at depth 1 to 5% at depth 4, because dice scenarios spread later levels over many distinct boards.
Work per search level
Measured evidenceScroll the chart horizontally to inspect all values.
Median own-turn nodes explored and end-of-turn positions followed at each level of a depth-4 analysis, with the 10th to 90th percentile; the current turn is a small tree, later levels multiply by the scenarios that lead to them.
Source: Engine-arena structure run fcd6c0c1-af77-4d2f-b43d-5c598f8d5ff5: 64 builder games (fast, ETA, fast, ETA) on seeds 0-63; 21840 decisions after setup and 12578 sampled searches.
View data table
| Series | Search level (own turn) | Count per analysis | Low | High |
|---|---|---|---|---|
| Own-turn nodes explored | 1 | 179 | 39.8 | 1458 |
| Own-turn nodes explored | 2 | 708.5 | 218.7 | 1441 |
| Own-turn nodes explored | 3 | 3984 | 845.4 | 7914 |
| Own-turn nodes explored | 4 | 17250 | 1228 | 37510 |
| End-of-turn positions followed | 1 | 19 | 12 | 41 |
| End-of-turn positions followed | 2 | 492 | 162.7 | 927 |
| End-of-turn positions followed | 3 | 2409 | 551.8 | 4553 |
| End-of-turn positions followed | 4 | 10160 | 929 | 21960 |
Share of own-turn positions already seen
Measured evidenceScroll the chart horizontally to inspect all values.
Transpositions divided by transpositions plus expanded own-turn nodes; different action orders within a turn often reach the same position.
Source: Engine-arena structure run fcd6c0c1-af77-4d2f-b43d-5c598f8d5ff5: 64 builder games (fast, ETA, fast, ETA) on seeds 0-63; 21840 decisions after setup and 12578 sampled searches.
View data table
| Series | Depth (planned own turns) | Fraction |
|---|---|---|
| expectimax-v2 | 1 | 0.209 |
| expectimax-v2 | 2 | 0.123 |
| expectimax-v2 | 3 | 0.065 |
| expectimax-v2 | 4 | 0.048 |
In the browser
The same search compiled to WebAssembly runs 1.26 to 1.38 times slower than the native release build on 40 sampled main-phase positions (medians by depth in the chart), so a one-second budget in a browser worker usually completes depth 3 and always completes depth 2.
Search time by depth: native and WASM
Measured evidenceScroll the chart horizontally to inspect all values.
Median milliseconds per analysis on 40 sampled main-phase positions with the 10th to 90th percentile; WASM to native ratio 1.26 at depth 1, 1.36 at depth 2, 1.38 at depth 3.
Source: 40 main-phase positions sampled from builder games on seeds 100 to 103 by the structure tool; each analysed once natively (release build, one core) and once in WASM under Node 26 on an otherwise idle machine; iterative deepening off, default sample and scenario counts.
View data table
| Series | Depth (planned own turns) | Milliseconds | Low | High |
|---|---|---|---|---|
| Native (release build) | 1 | 6 | 2.2 | 60.9 |
| Native (release build) | 2 | 34.6 | 18.6 | 249.2 |
| Native (release build) | 3 | 226 | 90.3 | 417 |
| WASM in Node | 1 | 7.4 | 2.9 | 72 |
| WASM in Node | 2 | 49.6 | 24.7 | 264.2 |
| WASM in Node | 3 | 312.2 | 118 | 577.5 |
One decision, term by term
At turn 59 of an engine-arena game on seed 5, the corrected search at depth 3 chose to buy a development card with two wool in hand rather than extend a road. The bars show each candidate's value as the stack of its additive leaf terms; the point term dominates because a fifth of the deck is a victory card and the game is close.
One decision at depth 3: buy the card that might be the winning point
Red player · turn 59 · Build and trade · expectimax-v2
5 candidates
Scroll the chart horizontally to inspect all candidates.
- Depth
- 3
- Time
- 142.9 ms
- Level 1
- 29 nodes · 10 afterstates
- Level 2
- 494 nodes · 364 afterstates
- Level 3
- 3092 nodes · 1712 afterstates
- Totals
- 33961 transitions · 20596 leaves · 1588 scenarios · 136 transpositions
Candidate values at turn 59 of an engine-arena game on seed 5 with each leaf term stacked; the search chose the development card over building a road first.
Source: Traced engine-arena game, seed 5, corrected expectimax-v2 at depth 3 with a 1.5 s budget against ETA, fast, ETA; values are mass-weighted heuristic points from the search report.
View data table
| Candidate | Value | Chosen | development | diversity | expansion | hand | hand_risk | opponent_production | opponent_progress | plan | points | ports | production | road | terminal |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| buy development | 3563 | Yes | 21.68 | 26.78 | 25.5 | 58.24 | -4.11 | -90.59 | -339.5 | 47.47 | 897.5 | 0 | 97.98 | 14.64 | 2808 |
| road on edge 25 | 2927 | No | 19.66 | 29.28 | 25.08 | 61.16 | -3.39 | -94.13 | -343 | 50.04 | 891.7 | 0 | 105.8 | 16.09 | 2169 |
| road on edge 58 | 2903 | No | 19.47 | 29.86 | 27.55 | 63.97 | -4.49 | -94.13 | -343 | 53.24 | 891.5 | 0 | 108.1 | 16.19 | 2135 |
| road on edge 34 | 2671 | No | 20.28 | 30.22 | 24.51 | 70.85 | -7.15 | -94.13 | -343 | 54.67 | 879.1 | 0.25 | 105.8 | 16.32 | 1913 |
| end turn | 2358 | No | 21.18 | 32.02 | 27.89 | 64.96 | -5.25 | -92.8 | -343.1 | 57.93 | 846.7 | 0 | 120.7 | 20.05 | 1608 |
Agent notes
Structure run fcd6c0c1-af77-4d2f-b43d-5c598f8d5ff5 under the
log/tree-structure study: analysis/structure.py --seeds 0-63 --every 3 --depths 1,2,3,4 --write-assets, which runs the server's structure binary
(64 fast/ETA/fast/ETA games, every third decision analysed at each depth with
iterative: false, node_budget: 400000, no time budget) and derives the plot
assets. Medians and 10th to 90th percentiles are over analyses; aborted
analyses are excluded from the cost figures. The record in
records/structure/ carries the rows digest. The decision exhibit comes from
tournament --trace on seed 5 with the corrected depth-3 candidate; its values
are the search's mass-weighted heuristic points. Native timings are from a
32-thread run with 8 threads reserved for the tool on an otherwise idle machine
and are not a browser benchmark. Attribution: Claude Fable 5.1
(claude-fable-5-1) through Claude Code.