LUDOBENCH: Evaluating LLM Behavioural Decision-Making Through Spot-Based Board Game Scenarios in Ludo
Organizations: Department of Computer Science and Information Systems, BITS Pilani
Abstract
We introduce LudoBench, a benchmark for evaluating LLM strategic reasoning in Ludo, a stochastic multi-agent board game whose dice mechanics, piece capture, safe-square navigation, and home-path progression introduce meaningful planning complexity. LudoBench comprises 480 handcrafted spot scenarios across 12 behaviorally distinct decision categories, each isolating a specific strategic choice. We additionally contribute a fully functional 4-player Ludo simulator supporting Random, Heuristic, Game-Theory, and LLM agents. The game-theory agent uses Expectiminimax search with depth-limited lookahead to provide a principled strategic ceiling beyond greedy heuristics. Evaluating six models spanning four model families, we find that all models agree with the game-theory baseline only 40-46% of the time. Models split into distinct behavioral archetypes: finishers that complete pieces but neglect development, and builders that develop but never finish. Each archetype captures only half of the game theory strategy. Models also display measurable behavioral shifts under history-conditioned grudge framing on identical board states, revealing prompt-sensitivity as a key vulnerability. LudoBench provides a lightweight and interpretable framework for benchmarking LLM strategic reasoning under uncertainty. All code, the spot dataset (480 entries) and model outputs are available at https://anonymous.4open.science/r/LudoBench-5CBF/
Figures & tables
| Chess | Go | Poker | Dipl. | Ludo | |
|---|---|---|---|---|---|
| Property | ( Campbell et al., 2002 ) | ( Silver et al., 2016 ) | ( Zhuang et al., 2025 ) | ( FAIR, 2022 ) | (ours) |
| Stochastic | ✗ | ✗ | ✓ | ✗ | ✓ |
| Complete information | ✓ | ✓ | ✗ | ✓ | ✓ |
| Multi-agent (3+) | ✗ | ✗ | ✓ | ✓ | ✓ |
| Multi-piece coord. | ✓ | ✓ | ✗ | ✗ | ✓ |
| Identical pieces | ✗ | ✓ | ✗ | ✗ | ✓ |
| Category | QP | Q7B | DS | Haiku | Scout | Gemma |
|---|---|---|---|---|---|---|
| blocked | 0.03 | 0.28 | 0.03 | 0.03 | 0.13 | 0.20 |
| capture_vs_home_finish | 0.00 | 0.60 | 0.00 | 0.00 | 0.08 | 0.13 |
| capture_vs_home | 0.00 | 0.68 | 0.00 | 0.00 | 0.10 | 0.13 |
| capture_vs_openexisting | 0.00 | 0.00 | 0.00 | 0.00 | 0.08 | 0.03 |
| capture_vs_safe | 0.00 | 0.55 | 0.00 | 0.05 | 0.15 | 0.20 |
| capture | 0.00 | 0.50 | 0.00 | 0.00 | 0.10 | 0.15 |
Appendix figures & tables11 assets
Supplementary material from the paper’s appendix.
Appendix
| Zone | Indices | Notes |
|---|---|---|
| Main Board | 0…51 (52 squares) | Circular, shared by all players |
| Base (off-board) | Pieces start here; leave only on dice | |
| Home Path P0 | 52…57 (home_end ) | Private; entered after one full lap |
| Home Path P1 | 58…63 (home_end ) | Private |
| Home Path P2 | 64…69 (home_end ) | Private |
| Home Path P3 | 70…75 (home_end ) | Private |
| Rule | Behavior |
|---|---|
| Dice range | 1 to 6 |
| Leave base | Only on dice ; lands on player start square |
| Extra turn | Only on dice (NOT for capture, NOT for reaching home) |
| Home entry | Exact landing required; overshoot is illegal |
| Capture | Only on non-safe main-board squares; captured piece base ( ) |
| Same-player stacking | Blocked on all squares (exception: home_end ) |
| Group | Metric | Definition |
| Reliability | llm_invalid_rate | Fraction of all spots where the LLM’s raw output was not a legal move. Computed before heuristic fallback. |
| Behavioral | capture_rate | Fraction choosing the capture move. |
| safe_rate | Fraction choosing the safe-square move. | |
| home_entry_rate | Fraction choosing home path entry or progress. | |
| home_finish_rate | Fraction choosing to finish a piece at home_end. | |
| open_rate | Fraction choosing to bring a base piece into play (dice 6). |
| Metric | QP | Q7B | DS | Haiku | Scout | Gemma | GT | Heur. | Rand. |
| Pure Preference (none persona) | |||||||||
| capture_rate | 0.50 | 0.55 | 0.15 | 0.53 | 0.22 | 0.29 | 0.88 | 1.00 | 0.45 |
| safe_rate | 0.28 | 0.47 | 0.12 | 0.75 | 0.05 | 0.15 | 0.88 | 0.75 | 0.53 |
| home_entry_rate | 0.42 | 0.79 | 0.17 | 0.82 | 0.14 | 0.16 | 0.13 | 1.00 | 0.50 |
| bring_out_rate | 0.30 | 0.60 | 0.88 | 0.05 | 0.70 | 0.82 | 1.00 | 1.00 | 0.78 |
| move_existing_rate | 0.70 | 0.40 | 0.12 | 0.95 | 0.30 | 0.18 | 0.00 | 0.00 | 0.22 |
| Category | Metric | QP | Q7B | DS | Haiku | Scout | Gemma | GT | Heur. | Rand. |
|---|---|---|---|---|---|---|---|---|---|---|
| cvs_safe | capture | 0.42 | 0.61 | 0.10 | 0.66 | 0.29 | 0.34 | 0.98 | 1.00 | 0.63 |
| safe | 0.57 | 0.39 | 0.90 | 0.34 | 0.71 | 0.66 | 0.03 | 0.00 | 0.38 | |
| cvs_home | capture | 0.57 | 0.15 | 0.72 | 0.20 | 0.78 | 0.83 | 0.98 | 1.00 | 0.35 |
| home_entry | 0.42 | 0.85 | 0.28 | 0.80 | 0.22 | 0.17 | 0.03 | 0.00 | 0.65 | |
| cvs_finish | capture | 0.20 | 0.00 | 1.00 | 0.12 | 0.95 | 1.00 | 0.00 | 1.00 | 0.48 |
| home_finish | 0.80 | 1.00 | 0.00 | 0.88 | 0.05 | 0.00 | 1.00 | 0.00 | 0.53 |
| Metric | QP | Q7B | DS | Haiku | Scout | Gemma |
|---|---|---|---|---|---|---|
| change_rate | 0.33 | 0.00 | 0.20 | 0.05 | 0.06 | 0.03 |
| ret. grudge | 0.80 | 0.57 | 0.78 | 0.31 | 0.86 | 0.88 |
| ret. noconflict | 0.68 | 0.57 | 0.73 | 0.33 | 0.83 | 0.85 |
| grudge effect ( ) | +0.12 | 0.00 | +0.05 | 0.03 | +0.03 | +0.03 |
| QP | Q7B | DS | Haiku | Scout | Gemma | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Cat. | Met. | n | a | g | s | u | n | a | g | s | u | n | a | g | s | u | n | a | g | s | u | n | a | g | s | u | n | a | g | s | u |
| cvf | cap | .20 | .93 | .12 | .62 | .57 | .00 | .14 | .06 | .00 | .16 | 1.0 | 1.0 | 1.0 | 1.0 | 1.0 | .12 | .05 | .15 | .03 | .25 | .95 | .97 | 1.0 | .92 | 1.0 | 1.0 | 1.0 | 1.0 | .94 | .95 |
| cvf | fin | .80 | .07 | .88 | .38 | .42 | 1.0 | .86 | .94 | 1.0 | .84 | .00 | .00 | .00 | .00 | .00 | .88 | .95 | .85 | .97 | .75 | .05 | .03 | .00 | .08 | .00 | .00 | .00 | .00 | .06 | .05 |
| cvs | cap | .42 | .15 | .53 | .40 | .15 | .61 | .71 | .80 | .63 | .39 | .10 | .20 | .23 | .15 | .25 | .66 | .84 | .75 | .88 | .72 | .29 | .19 | .21 | .09 | .19 | .34 | .14 | .17 | .11 | .17 |
| cvs | safe | .57 | .85 | .47 | .60 | .85 | .39 | .29 | .20 | .37 | .61 | .90 | .80 | .77 | .85 | .75 | .34 | .16 | .25 | .12 | .28 | .71 | .81 | .79 | .91 | .81 | .66 | .86 | .83 | .89 | .83 |
| cap | cap | .50 | .28 | .57 | .38 | .33 | .55 | .67 | .50 | .68 | .65 | .15 | .17 | .30 | .07 | .17 | .53 | .90 | .78 | .85 | .74 | .22 | .16 | .29 | .17 | .19 | .29 | .16 | .24 | .21 | .16 |
| piece State | Score Formula | Range |
|---|---|---|
| Base ( ) | Fixed value | 50 |
| Main board, stays on main | 0–51 | |
| Main board, enters home | 53+ | |
| Already in home path | Increasing | |
| Capture available | bonus (non-safe square, opponent present) | Additive |
| Safe square destination | bonus (dest. is safe) | Additive |
| Category | Entries | Unique Boards | History |
|---|---|---|---|
| blocked | 40 | 40 | No |
| capture | 40 | 40 | No |
| capture_vs_home | 40 | 40 | No |
| capture_vs_home_finish | 40 | 40 | No |
| capture_vs_openexist. | 40 | 40 | No |
| capture_vs_safe | 40 | 40 | No |
| Player Count | |||
|---|---|---|---|
| Category | 2P | 3P | 4P |
| blocked | 14 | 13 | 13 |
| capture | 14 | 13 | 13 |
| capture_vs_home | 14 | 13 | 13 |
| capture_vs_home_finish | 14 | 13 | 13 |
| capture_vs_openexist. | 14 | 13 | 13 |
| Field | Type | Description |
|---|---|---|
| id | string | Unique identifier (e.g., cvs_2p_001 , grudge_pair1001_a ) |
| scenario | string | Category label matching one of the 12 evaluation types |
| players | list[int] | Active player IDs in this game (e.g., [0, 1] for 2-player) |
| llm_player_id | int | Which player index the LLM controls |
| current_player | int | Whose turn it is (always equals llm_player_id ) |
| dice | int | Dice roll value for this decision (1–6) |
LLM Agent Evaluation
Large language model agent evaluation measures whether tool-using systems complete tasks reliably, safely, and efficiently.
See all 1,194 papers