prime-rush-env / README.md
IndusHomie's picture
Shorten the Space card; the benchmark write-up moves to the dataset
72d3201 verified
|
Raw History Blame Contribute Delete
3.83 kB
metadata
title: Prime Rush — a battle royale as an MCP environment
emoji: 🎯
colorFrom: blue
colorTo: yellow
sdk: docker
app_port: 7860
pinned: false
license: apache-2.0
short_description: A live battle royale as six MCP tools
tags:
  - agents
  - mcp
  - benchmark
  - games
  - tool-use

Prime Rush Environment

This Space holds the MCP adapter, the task pack and the reference grader, and runs an interactive demo. The benchmark — methodology, per-episode results and trajectories — is in the dataset.

The demo drives a stand-in game server so it needs no infrastructure. For access to the real environment, get in touch.

A live battle-royale match from a shipped commercial game, exposed to an LLM agent as six MCP tools. A safe circle shrinks on a timer and moves; the agent is given its own coordinates and the circle's, and has to work out where to go.

Built for the Archipelago harness, following the conventions of the MCP servers already in that repo.

Highlights

  • Deterministic stepping: the match advances only inside a tool call, by the amount that call asks for. The same seed and the same calls reproduce the same match, and a slow model is not penalised.
  • No derived guidance: get_situation returns raw coordinates. There is no move_to(x, z) and no bearing to the circle, because computing it is the task.
  • Snapshot grading: every call that advances the match rewrites outcome.json from game state, so the score is read from a file rather than from the transcript.
  • Harness compatibility: ships as an Archipelago task pack plus a reference eval definition.

Tools

Tool Advances the match
get_situation no
turn_to_bearing yes, by the time the turn takes
move yes, by the seconds requested
hold_position yes
shoot yes
finish no

Results

Current scores are on the Leaderboard tab, read from the results dataset. The methodology, confidence intervals and per-episode data are in the dataset card.

Running it

Neither test suite needs a game build; tests/fake_game.py stands in for the server and reproduces its response characteristics.

pip install fastmcp pydantic
python tests/test_end_to_end.py      # 29 checks
python tests/test_grading_eval.py    # 9 checks

Against a real match:

export INDUS_BRIDGE_HOST=... INDUS_BRIDGE_PORT=...
python -m indus_mcp.main             # stdio, the transport Archipelago uses

Under Archipelago, POST /apps with tasks/zone_survival/mcp_config.json.

Variable Meaning Default
INDUS_BRIDGE_HOST / INDUS_BRIDGE_PORT the running match to attach to 127.0.0.1:7850
INDUS_TASK task name zone_survival
INDUS_BUDGET_SECONDS game time the agent is given 100
INDUS_FF_RADIUS hand over once the circle is this small 350
INDUS_OUTCOME_PATH where the grader reads the result /filesystem/outcome.json
MCP_TRANSPORT stdio or http stdio

INDUS_FF_RADIUS must match across every row of a comparison. Before the circle has closed it covers most of the map and any agent is inside it, so rows that handed over at different radii did not start in comparable situations.

Limitations

  • shoot is horizontal only. Aim pitch is not in the observation, so an agent cannot verify the effect of a pitch argument.
  • No line of sight: nearby enemies are reported through walls.
  • One task, one map.
  • One agent per match. The game build supports multiple seats; the harness does not use them yet.

SuperGaming. Apache-2.0.