Two LLMs make real API calls to
decide sword-fight moves.

You vote on who fought smarter.

This is a research tool, not a game — each match is live inference, not a scripted battle. How it works ↓

▸ What's actually happening here (30-sec read)

Two language models each control a stickman in a 2D physics simulation. Every 3 seconds of simulated combat, each model gets its current state (HP, position, opponent's last move, weapon, arena) and picks its next action. They fight until one dies or 24 turns pass.

You watch, vote blind on who fought smarter, then find out which model was which. Per-model Elo tracks it over time, segmented by weapon, sharp-zone, control mode, and arena.

Why physics? Text-only benchmarks (MMLU, GPQA, Arena-Hard) can't test whether a model plans under physical constraints. This does. Why does it take a minute? Each turn is a real LLM API call (~5-15s of inference per model) plus 3s of physics. It's slow because it's real, not pre-recorded.

Setup Duel
🗡 SWORD
🔪 DAGGER
⊥ SPEAR
⛓ FLAIL
🏹 BOW
🏟 NORMAL
❄ ICE
🌙 LOW G
🎯 MACRO
🧠 JOINT
🔍 Normal
🙈 Blindfolded
TIP
EDGE
BACK EDGE
POMMEL
Leaderboard · Elo by Vote
no votes yet · be the first

Frequently asked

Real questions from real users. If yours isn't here, open an issue on GitHub.

Wait, what am I actually looking at?
Two language models controlling stickmen in a 2D physics arena. Every 3 seconds of simulated combat, each model gets its state (HP, position, opponent's last move, weapon geometry) and picks an action via a real API call. They fight until one dies or 24 turns pass. You watch, vote blind on who fought smarter, and per-model Elo tracks it over time. It's an evaluation experiment for LLM behavior under physical constraints, not a game with pre-scripted characters.
Why does it take a full minute?
Each turn is a real LLM API call for each fighter — that's ~5–15 seconds of actual model inference per turn, plus 3 seconds of physics simulation. Reasoning-heavy models (gpt-oss-120b, deepseek-r1) take longer than chat-tuned ones. A typical match is 60–90 seconds; matches with reasoning models can go 2–3 minutes. If it were faster, the models wouldn't be thinking — they'd be reflex-responding, which defeats the point.
Is this a game?
No. There's no controllable character, no progression, no XP, no player skill involved. It's closer to Chatbot Arena (LMSys) — a human-in-the-loop benchmark for comparing language models. Chatbot Arena rates them on text output; this rates them on decision-making under adversarial physical constraints. The stickman visuals exist because you need to SEE the physics to judge the decision, not because it's meant to be entertainment.
Why don't I see which model is which until I vote?
Brand anchoring is a real bias in eval. If you knew "green is GPT-4o" before voting, you'd rate its moves more charitably. Blind voting means you rate the fighting behavior on its own merits. Reveal happens after your vote lands, along with the Elo change and (if you predicted) whether your prediction was right. This mirrors how Chatbot Arena, human-preference RLHF datasets, and most serious human-eval methodologies work.
How does the Elo rating work? What's a 'provisional' rating?
Standard Elo with K=32, starting rating 1000. Ratings segment per (model, sharp zone, weapon, control mode, arena) so a model that dominates macro-mode swordplay isn't credited for arenas it never fought in. Rows with fewer than 10 recorded matches are marked ? (provisional) because K=32 can swing a rating ±80 points from a couple of lucky matchups — pretending those small-N cells are stable would be misleading. The Win% column shows the 95% Wilson confidence interval on the underlying win-rate.
Can I add my own model? Bring my own API key?
Yes. In the setup panel above the "Fight" button, there's a BYOK (bring-your-own-key) toggle. Paste any valid OpenRouter key and specify any model ID they route to — the backend will use your key for that one match only, then discard it (never logged, never persisted). Costs come out of your account, not the free pool. This is also useful if the free tier is rate- limited during high traffic.