OpenGameEval: Benchmarking Agentic Programming and Exploration in a Stateful Game Engine
Organizations: Roblox
Abstract
We present OpenGameEval, a benchmark and evaluation framework for agentic game development inside Roblox Studio. It runs language models as agents in reproducible, stateful game-engine sessions and scores each run with executable checks, both on the edited scene and in a simulated play session. Most agentic coding benchmarks require exploration but score only final task success. OpenGameEval separates observation tools from editing tools in its eight-tool action space, so exploration can be measured directly. We measure the pass rates and exploration behavior of 13 frontier models on 84 human-curated core tasks, with 16 attempts per task. The tasks are hard for current models. The best model solves 51.7% of tasks on a single attempt and 39.4% five times out of five, and no tested model solves six of the tasks. Models at the frontier reach similar pass rates by solving different tasks: splitting tasks by the kind of work they require spreads the top five by 5.0pp on script-authoring tasks and 12.5pp on scene-change tasks. Exploration behavior predicts whether a run succeeds. Holding task and model fixed, a run that inspects every object a reference solution touches before acting on it passes 13.4pp more often than a run that inspects none of them on scene-only tasks, and 9.8pp more often on script-only tasks. We release the task suite, its place files, the per-task annotations, a plugin that runs the tasks inside Roblox Studio, and an updated leaderboard under the MIT license at https://github.com/Roblox/open-game-eval.
Figures & tables
| Model | Pass@1 | Pass@5 | Cons@5 | All@5 | Tools | Obs | Obs% | Err (%) | Tmo (%) |
|---|---|---|---|---|---|---|---|---|---|
| Claude Fable 5 | 6.4 | 3.9 | 62 | 1.17 | 2.31 | ||||
| Gemini 3 Flash | 10.8 | 7.0 | 65 | 1.94 | 0.15 | ||||
| Claude Opus 4.8 | 7.0 | 4.8 | 68 | 1.31 | 2.16 | ||||
| Gemini 3.1 Pro | 7.8 | 4.1 | 52 | 2.95 | 0.00 | ||||
| Gemini 3.5 Flash | 12.9 | 8.3 | 64 | 2.12 | 1.64 | ||||
| GPT-5.6-sol | 10.4 | 8.5 | 82 | 0.89 | 2.31 |
| Trajectory feature | Scene-only | Script-only | Difference |
|---|---|---|---|
| Observe reference instances (/SD) | |||
| none full | |||
| Read reference scripts (/SD) | – | – | |
| none full | – | – | |
| Expected-tool match (/SD) | |||
| Search, then read it (/SD) |
Appendix figures & tables7 assets
Supplementary material from the paper’s appendix.
Appendix
| Family | Temperature | top- | top- | min- | Output cap |
|---|---|---|---|---|---|
| Claude (3 models) | — | — | — | — | |
| Gemini (3 models) | — | — | |||
| GPT (5 models) | — | — | — | — | — |
| GLM (2 models) | — |
| Model | Pass@1 | Pass@5 | Cons@5 | All@5 | Tools | Obs | Obs% | Err (%) | Tmo (%) |
|---|---|---|---|---|---|---|---|---|---|
| Claude Fable 5 | 5.8 | 4.1 | 71 | 2.53 | 2.37 | ||||
| GPT-5.6-luna | 9.5 | 7.8 | 82 | 2.63 | 1.72 | ||||
| Gemini 3.1 Pro | 7.7 | 4.8 | 63 | 4.65 | 0.00 | ||||
| Claude Opus 4.8 | 7.1 | 4.8 | 68 | 7.42 | 1.94 | ||||
| Claude Opus 4.7 | 5.6 | 4.0 | 72 | 1.95 | 2.16 | ||||
| GLM-5 | 6.5 | 5.0 | 76 | 1.89 | 1.72 |
| Task | Kind | interval | pass@1 | ||
|---|---|---|---|---|---|
| 103_city_lights_on_off | script | ||||
| 092_fps_shoot_ground_bounce | script | ||||
| 020_gravity_well | script | ||||
| 105_lasertag_friendly_fire | script | ||||
| 049_surburban_fridge_door_open | script | ||||
| 108_racing_fix_getdriversinpart | script |
| Task | Place | Scene | Play | Prompt |
|---|---|---|---|---|
| 001_make_cars_faster | racing | – | Make the cars of this game 2x faster | |
| 002_emit_white_smoke | surburban | – | Make white smoke come out of every chimney. | |
| 003_make_leaves_fall_colored | village | – | Make the leaves of trees in this game fall colored | |
| 004_reduce_car_friction_enable_sliding | racing | – | Reduce the friction of the cars that spawn in this game with the ground so I can slide around | |
| 007_change_logo_cube_green | platformer | – | Change the Roblox logo like cube to be green | |
| 008_spawn_as_r6 | baseplate | make every player spawn as a R6 test dummy as their character for now. |
| Task | Place | Scene | Play | Prompt |
|---|---|---|---|---|
| 001_make_cars_faster_bug_2 | racing | – | I was trying to make the cars faster, but now they don’t spawn in the game at all and I’m getting errors. I think I might have moved the car prefab somewhere by accident. | |
| 002_emit_white_smoke_bug_1 | surburban | – | The chimneys are emitting black smoke instead of white smoke. It looks really weird and pollutes the neighborhood vibe. | |
| 003_make_leaves_fall_colored_bug_1 | village | – | I tried to make the leaves on the trees change to autumn colors, but they all turned bright blue and green instead. That doesn’t look like fall at all. | |
| 004_reduce_car_friction_enable_sliding_bug_1 | racing | – | I’m trying to run a script to make the cars drift more, but it’s not working. The friction feels exactly the same. I think the script might not be finding the car parts correctly. | |
| 004_reduce_car_friction_enable_sliding_bug_2 | racing | – | I tried to make the cars more slippery so they could drift, but now they feel even more stuck to the road and difficult to turn. It feels like the friction went up instead of down. What’s wrong? | |
| 007_change_logo_cube_green_bug_1 | platformer | – | I tried to make the floating Roblox logo cube green, but it turned red instead. Can you fix it? |
AI Agent Benchmarks
AI agent benchmarks measure how reliably autonomous systems plan, use tools, interact, and complete tasks across controlled and real-world settings.
See all 1,503 papers