llms-robot-arena
SPEC 0.2.2
SPEC 0.2.2

Same hardware. Different minds.

Both robots have the same chassis, the same motors and the same energy. Only the controller changes. These are the rules the engine enforces, identical in the browser and in the tournament CLI.

01 / ARENA

The edge is unforgiving.

A 16 × 16 meter platform with no walls. A robot is out when its center crosses the edge. From 60 seconds onward, the half-side shrinks by 0.07 m/s.

16 7.6 meters at 120 s
02 / WEDGE

Where you hit matters.

The wedge covers ±35° in front of the robot. A strong side or rear impact can flip an opponent; wedge-to-wedge contact never causes a flip. Taking two flips ends the match.

±35° front sector
03 / ENERGY

Every command has a cost.

Motor cost is quadratic. There is no passive regeneration. Enter a ready blue cell to collect up to 60 energy. Each cell needs 8 seconds to reset; leave and return to collect again. At zero, the motors stop.

300 starting energy
04 / VICTORY

A clear order.

  1. Fall off the edge or into a hole
  2. Two flips
  3. Disqualification at 20 violations
  4. At 120 s: fewer flips taken, then more energy, then closer to the center

Only exact ties and simultaneous defeats remain draws.

05 / PHYSICS

The simulation is authoritative.

Fixed 60 Hz steps, semi-implicit Euler integration, oriented rectangles and SAT collisions. The viewer reads a completed replay: pausing, moving the camera and changing playback speed do not affect the result.

06 / BENCHMARK

Conformance before competition.

One JavaScript file, one tick export, no imports or external APIs. QuickJS runs in a Worker sandbox. Public tests check execution, purity, memory and timing.

07 / TERRAIN

Know the floor.

Every seed places four blue recharge cells, two or three open holes and four flame grates. Cells stay in fixed world positions as the boundary shrinks. Their states are visible in the bot sensors. During the match, four ordinary floor cells can also collapse. Each flashes red for three seconds before becoming a permanent hole. Robot weight also wears down every solid cell, including chargers and grates: 12 cumulative seconds under one bot exhausts it, then a three-second warning precedes collapse. Wear persists after leaving; two bots double the load.

08 / FIRE

Read the warning.

Grates wait 4-8 seconds, warn in amber for one second, then burn for 1.5 seconds. Standing over a flame costs 30 energy per second, including while flipped or recovering.

Simulation and runtime rules.

The recovering state accepts commands and protects against flips. The 3 m limit is not reached within 120 seconds. Wall-clock timing depends on machine load, so exhibitions use a reproducible instruction limit; the CLI also supports the 2 ms budget. Results for these budgets are kept separate.

Match

FieldValue
Tick rate60 Hz
Match duration120 s
Spec version0.2.2
Engine version0.2.2-r2

Arena

FieldValue
Half extent8 m
Minimum half extent3 m
Shrink starts at60 s
Shrink rate0.07 m/s
Cell size1 m

Robot

FieldValue
Length × width0.8 × 0.6 m
Mass100 kg
Wedge half angle±35°
Max speed7 m/s
Max angular speed4 rad/s
Max thrust force800 N
Max torque45 N·m

Energy

FieldValue
Starting energy300
Recharge cells4
Recharge amount60
Recharge cooldown8 s
Flame damage30 / s
Righting cost25

Hazards

FieldValue
Open holes2-3
Flame grates4
Collapsing cells4
Collapse warning3 s
Floor load capacity1200 kg·s

Contract

FieldValue
Flips to lose2
Flip recovery4 s
Memory limit64 KB
Tick budget2 ms
Init budget50 ms
Violations allowed20

The complete specification, the bot contract and the conformity checks are in AGENTS.md. Open the arena to watch the rules apply.