Settlers / Research

73 pages · Search titles and descriptions

↑ ↓ to navigate · Enter to open · Esc to closeLocal search
Play the game

Robber placement and victim choice

Robber-targeting contrasts

Measured evidence
-0.14-0.02750.0850.19750.31leader, 0-63leader, 64-127leader, bias-freeneed, 0-63need, 64-127need, bias-freethreat, 0-63threat, 64-127threat, bias-freeArm and measurementWins per game, arm minus controlno difference

Scroll the chart horizontally to inspect all values.

Paired seed contrast (95% interval)95% intervalno difference

Each arm's paired win difference with the arm in slot 0 on the development and fresh seeds, and the seating-bias-free effect from the swapped pairs.

Source: Engine-arena cohorts under containment/robber-targeting and containment/robber-targeting-bias: the arm against the unchanged depth-2 control with an ETA and a fast builder, 64 deterministic seeds each played once per rotation (256 games per point). The bias-free points pair the same-orientation confirmation with its swapped cohort on the same seeds. Run IDs are listed in the robber-targeting report.

View data table
SeriesArm and measurementWins per game, arm minus controlLowHigh
Paired seed contrast (95% interval)leader, 0-630.1250.02150.2285
Paired seed contrast (95% interval)leader, 64-1270.0352-0.04710.1175
Paired seed contrast (95% interval)leader, bias-free-0.0234-0.07310.0262
Paired seed contrast (95% interval)need, 0-630.16020.0570.2633
Paired seed contrast (95% interval)need, 64-1270.0391-0.06170.1398
Paired seed contrast (95% interval)need, bias-free-0.0449-0.0855-0.0043
Paired seed contrast (95% interval)threat, 0-630.11720.02210.2123
Paired seed contrast (95% interval)threat, 64-1270.0352-0.05610.1264
Paired seed contrast (95% interval)threat, bias-free-0.0332-0.08450.0181

What each arm changes

The search shortlists four robber placements by a static score and lets the lookahead choose among them. The score adds, per hex, the pips blocked at every rival building (cities double, weighted by the blocked seat's public points), and per victim a bonus for hand size and public points. Each arm changes exactly one part of that score, everything else held fixed:

SwitchChangeWhat it tests
robber.leaderThe hex score counts the points leader's blocked pips in full and every other seat's at a tenthBlocking the leader's best hex beats blocking the most pips overall
robber.needThe victim bonus replaces hand size with 2.8 times the expected share of the resource this seat most needs, from its resource knowledgeStealing the card this seat needs beats stealing from the biggest hand
robber.threatBlocked pips are weighted by 1 + 2 × the seat's bargain threat, and a victim with threat below 0.5 is never robbed while a threatening victim existsSparing trade partners and preferring the top threat beats ignoring threats

The cohorts

Every cohort seats the arm and the unchanged control v2:{"depth":2} with eta and fast on 64 deterministic seeds played once per rotation (256 games). All games completed; there were no invalid moves, stalls, or interruptions.

ArmSeedsOrientationArm winsControl winsContrast (95% interval)Run
leader0-63arm slot 012492+0.125 (+0.021 to +0.229)ccf05c4f-15a1-4774-a273-40b7d5491873
need0-63arm slot 013089+0.160 (+0.057 to +0.263)9109daab-18d0-4a2a-94e3-a7fa11c94a7a
threat0-63arm slot 012292+0.117 (+0.022 to +0.212)0ce9ecc0-7374-4c7c-8178-4d99db3ed0e1
leader64-127arm slot 0112103+0.035 (−0.047 to +0.117)a722f475-8cc5-4e2a-896b-4167764b2456
need64-127arm slot 010999+0.039 (−0.062 to +0.140)e214be7c-f184-4840-af3e-e82e7c23ffad
threat64-127arm slot 0110101+0.035 (−0.056 to +0.126)1d943a44-ffb0-459d-b487-733d26d50189
leader64-127arm slot 193114−0.082 (−0.166 to +0.002)10834001-571d-439c-83d2-9e31e1d5997b
need64-127arm slot 186119−0.129 (−0.217 to −0.041)165a28ac-94d3-4ebb-bbdf-989abb243bea
threat64-127arm slot 190116−0.102 (−0.183 to −0.020)cb91296b-ac8d-4f86-9ad6-5ba4d57af8ec

Why the slot-0 contrasts are not arm effects

Two identical searches placed in adjacent slots of this arena differ by a seating term that the seating diagnosis traced to turn-order adjacency: the seat directly before another acts first after three of the four rolls in a round. Every cohort above has the changed seat and the control adjacent, so each contrast mixes the arm's effect with the term. Pairing a same-orientation cohort with a swapped cohort on the same seeds cancels it exactly: the bias-free effect is half the per-seed difference of the two contrasts, and half their sum is the seating term itself.

ArmSame-orientation contrastSwapped contrastBias-free effect (95% interval)Seating term
leader+0.035+0.082−0.023 (−0.073 to +0.026)+0.059
need+0.039+0.129−0.045 (−0.086 to −0.004)+0.084
threat+0.035+0.102−0.033 (−0.084 to +0.018)+0.068

Read against the seating term, the picture is consistent: the dev-seed contrasts of +0.117 to +0.160 were the term plus whatever the seed selection added (the screens that chose these arms ran on seeds 0 to 15, inside the 0-63 cohorts), the fresh-seed contrasts near +0.035 were mostly the term, and the bias-free effects hover slightly below zero. The need arm is the one clear result: its interval excludes zero on the wrong side, so choosing the victim by the card this seat needs is worse than choosing by hand size at this table, plausibly because a big hand is worth more to rob than a well-aimed single card, and the need rule also ignores how many cards the victim holds.

Where the robber actually goes

The arena records every robber placement together with the points leader among the mover's rivals and that seat's highest-pip hex, cities counting double. Pooled over all nine cohorts (2,304 games), the default search landed the robber on that leader's best hex on 27.7 percent of its robber moves and robbed the leader on 45.5 percent. The leader arm raised both shares as designed (28.6 and 49.6 percent), the need arm changed victims rather than hexes, and the threat arm robbed the leader on 46.5 percent while sparing its low-threat partners. The builder policies behind eta and fast block the leader's best hex on about a third of their robber moves, so the default search was the least leader-aware robber at this table, and making it more leader-aware did not win more games.

SeatOn the leader's best hexRobbed the leader
default search (control seats, nine cohorts)1,244 of 4,499 (27.7%)2,047 of 4,499 (45.5%)
leader arm1,284 of 4,492 (28.6%)2,227 of 4,492 (49.6%)
need arm1,192 of 4,472 (26.7%)1,962 of 4,472 (43.9%)
threat arm1,119 of 4,456 (25.1%)2,070 of 4,456 (46.5%)
eta builders2,579 of 7,281 (35.4%)3,752 of 7,281 (51.5%)
fast builders2,706 of 8,069 (33.5%)4,078 of 8,069 (50.5%)

Failures and limits

The screens on 16 seeds (unregistered, 64 games each) read +0.312, +0.219, and +0.203, all larger than anything that followed: small screens overstate. The development cohorts shared seeds with the screens that selected the arms, so their contrasts carry selection on top of the seating term; the only unbiased numbers here are the swapped pairs on seeds 64 to 127. Everything is engine-arena evidence at one lineup (two searches and the two fixed builders, depth 2, deterministic tapes), and the arms were tested one at a time, so a combined arm remains untested.

Agent notes

Implementation: SearchConfig.robber (leader, need, threat) in crates/expectimax/src/v2, documented in docs/expectimax.md under "Robber targeting"; the scoring lives in the free robber_rows function, shared with the endgame leader bias. The need bonus reads ResourceKnowledge expected hands taken at the root of the decision, and the need itself is the largest missing-card gap toward the builds the seat is closest to affording. All switches off reproduce the previous scoring bit for bit: 32 deterministic games are identical before and after the change, and again after the merge with the endgame switches. The arena's GameRecord carries one compact row per robber placement (player, hex, victim, the leader among the mover's rivals, and that seat's highest-pip hex, cities double); analysis/robber_obvious.py computes the shares, analysis/robber_bias.py the bias-free effects, and analysis/robber_assets.py the plot from the retained runs.

Reproduction: python3 -m harness.engine run EXPERIMENT --threads 8 in the research checkout with SETTLERS_SERVER_DIR pointing at a server worktree containing the switches. Experiments 15173b9c, 6c2d07c6, and 0c77ef63 are the 0-63 cohorts; 247cadd4, af5f61b5, and e36e5562 the same-orientation confirmations; 1ba816f0, d918fac6, and 7e2a2610 the swapped pairs under containment/robber-targeting-bias. Arm seat: v2:{"depth":2,"robber":{"leader":true}} (and need, threat); control v2:{"depth":2}. Focused tests in crates/expectimax/tests/internal/v2_robber.rs.

All studies · Leader containment · Experiment log