Game Engine
The simulation is built around a DartsCricketGame class that enforces all
standard Cricket rules:
- 7 targets: 15, 16, 17, 18, 19, 20, Bullseye
- 3 marks to close each target (single = 1 mark, double = 2, triple = 3)
- 3 darts per turn
- Alternating turns, with first-player advantage mitigated by alternating who goes first each game
- Points scored at face value (15–20, Bull = 25) after closing, only while the opponent hasn’t closed the same target
- Win condition: all 7 targets closed and score ≥ opponent’s score
- Maximum 200 turns per game to prevent infinite loops
Skill Profiles
Frongello’s original study used a simplified accuracy model. We extend this with probabilistic skill profiles based on real darts performance data.
How throws resolve: When a strategy aims for a target with a specific hit type (e.g., triple 20), the actual outcome is determined by the player’s skill profile. One random draw determines what actually happens — there’s no separate “hit or miss” step.
Three base profiles:
Pro Profile (MPR ~5.6)
| Aimed Type | Triple | Double | Single | Miss |
|---|---|---|---|---|
| Triple | 41% | 20% | 25% | 14% |
| Double | — | 40% | 35% | 25% |
| Single | — | — | 96% | 4% |
Good Profile (MPR ~4.9)
| Aimed Type | Triple | Double | Single | Miss |
|---|---|---|---|---|
| Triple | 30% | 22% | 30% | 18% |
| Double | — | 30% | 40% | 30% |
| Single | — | — | 90% | 10% |
Amateur Profile (MPR ~3.6)
| Aimed Type | Triple | Double | Single | Miss |
|---|---|---|---|---|
| Triple | 15% | 20% | 35% | 30% |
| Double | — | 20% | 40% | 40% |
| Single | — | — | 80% | 20% |
MPR (Marks Per Round) Analysis
MPR is the standard metric for dart player skill. It measures how many marks a player earns per round (3 darts) when aiming at triples.
Formula:
MPR = 3 × (T×3 + D×2 + S×1 + M×0)
Where T, D, S, M are the probability of hitting triple, double, single, or missing when aiming for a triple.
Expected MPR by profile
| Profile | Triple% | Formula | MPR |
|---|---|---|---|
| Pro | 41% T, 20% D, 25% S | 3 × (0.41×3 + 0.20×2 + 0.25×1) | 5.64 |
| Good | 30% T, 22% D, 30% S | 3 × (0.30×3 + 0.22×2 + 0.30×1) | 4.92 |
| Amateur | 15% T, 20% D, 35% S | 3 × (0.15×3 + 0.20×2 + 0.35×1) | 3.60 |
Synthetic Profiles for the Full MPR Spectrum
To test strategies across a wide range of skill levels, we generate synthetic profiles by uniformly scaling all hit probabilities from the nearest base profile.
Scaling method: For a target MPR, find the closest base profile, compute the scale factor = target_MPR / base_MPR, then multiply ALL non-miss probabilities by this factor. The freed probability mass goes to “miss.”
11 MPR levels tested: 0.8, 1.0, 1.2, 1.5, 2.0, 2.5, 3.0, 3.6, 4.0, 4.9, 5.6
This gives a smooth progression from near-random play (MPR 0.8, ~73% miss rate) to professional level (MPR 5.6, ~14% miss rate).
Tournament Design
- Format: Full round-robin — every strategy plays every other strategy
- 22 strategies: S1–S17 (Frongello), E1–E4 (experimental), PS (Phase Switch)
- Matchups per level: 231 (upper triangle of 22×22, mirrored for symmetry)
- Games per matchup: 20,000 (with alternating first player)
- Total games: ~50 million across all 11 MPR levels
- Symmetry: A vs B and B vs A from the same 20,000 games. If A wins 55%, B wins 45%.
- Diagonal: Always 50% (a strategy playing itself)
Statistical Considerations
Sample size: 20,000 games per matchup gives a standard error of ~0.35% for a 50% win rate (√(0.5×0.5/20000) ≈ 0.0035). A 2% difference is statistically significant at p < 0.001.
First-player advantage: Mitigated by alternating who throws first. In even-numbered games, player B goes first. This ensures neither strategy has a systematic advantage from turn order.
Maximum turns: Games are capped at 200 turns to prevent infinite loops with degenerate strategy pairs. In practice, pro-level games average ~17 turns and amateur-level (MPR 3.6) games ~22 turns. Even at MPR 0.8, games average ~82 turns — well below the limit.
Deterministic strategies: All strategy bots are deterministic given the game state. The only randomness comes from the skill profile’s throw resolution. This means results are fully reproducible given the same random seed.
Comparison with Frongello
| Aspect | Frongello (2018) | This Study |
|---|---|---|
| Strategies | 17 (S1–S17) | 22 (S1–S17, E1–E4, PS) |
| Skill model | Simplified accuracy model | Probabilistic (11 levels) |
| Games per matchup | Not specified | 20,000 |
| Skill levels | 1 (perfect) | 11 (MPR 0.8–5.6) |
| Key finding | S2 optimal | PS beats S2 |
| Chase conclusion | Never chase | Confirmed |
| Extra darts | No effect | Small effect at high skill |
Limitations
- Strategy space: We tested 22 strategies but the space of possible strategies is infinite. There may be better strategies we haven’t explored.
- No learning: All strategies are fixed rules. A reinforcement learning agent might discover different principles.
- Simplified skill model: Real darts have target adjacency effects (missing 20 might hit 1 or 5). Our model treats misses as complete misses.
- No psychological factors: Real games involve pressure, fatigue, and opponent observation. Our simulation is purely mathematical.
References
- Frongello, M. (2018). “Optimal Strategy in Darts Cricket.” UNLV Theses, Dissertations, Professional Papers, and Capstones. 3464.
- Tibshirani, R. J., Price, A., & Taylor, J. (2011). “A statistician plays darts.” Journal of the Royal Statistical Society: Series A, 174(1), 213–226.
- Haugh, M. B., & Wang, C. (2022). “Play Like the Pros? Solving the Game of Darts as a Dynamic Zero-Sum Game.” INFORMS Journal on Computing.