Elemental Armory benchmark
Bounce Duels, the main mode of Elemental Armory, played against the game's own rival. A model builds a deck of four elemental balls and their ability cards, then picks a ball and aims its launch each round, and the fight runs itself. The bench runs the game's own simulation, so these are matches you can play. Elemental Armory is made with Chach16. Compare matches won, rounds won, the counters a model picks, the cards it builds with, the game's own players on the same matches, and the cost and time of a match.
Elemental Armory leaderboard
Select a column to sort. Scroll sideways for all metrics →
| # | Model | Score | 95% interval | Won per levelL1L5L8 | Rounds | Counters | Stars | Illegal | Requests / match | Matches | API cost / match | Sec / decision |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Qwen3.8 Flash-Nextlocal, thinking low · open weights | 673 of 150 | 1000100 | 56%5 of 9 | 67%countered 0% | 3.00100% of slots filled | 0.0%0.0% defaulted | 4.0 | 3 | n/a | 193.9 | |
| 2 | Qwen3.5 9Blocal, no thinking · open weights | 502 of 150 | 0100· | 60%3 of 5 | 40%countered 20% | 2.69100% of slots filled | 8.3%57.1% defaulted | 6.0 | 2 | n/a | 182.5 | |
| 3 | Qwen3.8 27Blocal, no thinking · open weights | 502 of 150 | 1000· | 50%3 of 6 | 50%countered 33% | 1.50100% of slots filled | 0.0%0.0% defaulted | 4.0 | 2 | n/a | 411.0 | |
| 4 | Ministral 3 8Blocal, no thinking · open weights | 502 of 150 | 1000· | 40%2 of 5 | 20%countered 0% | 2.75100% of slots filled | 0.0%0.0% defaulted | 3.5 | 2 | n/a | 72.2 | |
| 5 | GPT-6 Lunareasoning medium | 333 of 150 | 10000 | 38%3 of 8 | 25%countered 12% | 2.17100% of slots filled | 0.0%0.0% defaulted | 3.7 | 3 | $0.0030 | 3.8 | |
| 6 | GPT-6.1 Terrareasoning medium | 333 of 150 | 01000 | 33%2 of 6 | 33%countered 50% | 2.06100% of slots filled | 0.0%0.0% defaulted | 3.0 | 3 | $0.019 | 4.6 | |
| 7 | GPT-6 Astrareasoning medium | 333 of 150 | 00100 | 29%2 of 7 | 29%countered 0% | 2.67100% of slots filled | 0.0%0.0% defaulted | 3.3 | 3 | $0.273 | 11.0 | |
| 8 | GPT-6 Solreasoning medium | 03 of 150 | 000 | 25%2 of 8 | 50%countered 38% | 2.08100% of slots filled | 0.0%0.0% defaulted | 3.7 | 3 | $0.066 | 19.5 | |
| 9 | GPT-6.1 Solreasoning medium | 03 of 150 | 000 | 25%2 of 8 | 50%countered 0% | 2.81100% of slots filled | 0.0%0.0% defaulted | 3.7 | 3 | $0.059 | 10.5 | |
| 10 | Gemma 3 4Blocal, no thinking · open weights | 01 of 150 | 0·· | 0%0 of 2 | 0%countered 50% | 1.00100% of slots filled | 0.0%0.0% defaulted | 3.0 | 1 | n/a | 13.2 | |
| 11 | gpt-oss 20Blocal, thinking low · open weights | 01 of 150 | 0·· | 0%0 of 2 | 50%countered 0% | 1.50100% of slots filled | 0.0%0.0% defaulted | 3.0 | 1 | n/a | 175.2 |
No models match your search.
Score is the match win rate per level, each level weighted the same, from 0 to 100. Rounds is the share of decided rounds won. Counters is the share of decided rounds its ball countered the rival's. Stars is the average rating of the cards it equipped. A model ranks once it has played the first 50 matches of every tier; until then it shows how many of those it has played and ranks after the models that have. Past that the bench keeps playing further matches in the same order for every model, and every finished one counts, so n grows and the intervals narrow.
The Pareto frontier shows where no other model scores at least as well for less cost or time, with one strict improvement. Partial sets are included and may cover different items. Use completed sets for direct comparisons.
By tier
Matches won at that level, then the win rate, the share of rounds won and the average card rating. The count after each result is n, the matches finished in that tier.
| Model | Level 1 | Level 5 | Level 8 |
|---|---|---|---|
| Qwen3.8 Flash-Nextlocal, thinking low | 1 of 1100% · rounds 67% · 3.0 stars | 0 of 10% · rounds 33% · 3.0 stars | 1 of 1100% · rounds 67% · 3.0 stars |
| Qwen3.5 9Blocal, no thinking | 0 of 10% · rounds 33% · 2.5 stars | 1 of 1100% · rounds 100% · 2.9 stars | not played |
| Qwen3.8 27Blocal, no thinking | 1 of 1100% · rounds 67% · 1.0 stars | 0 of 10% · rounds 33% · 2.0 stars | not played |
| Ministral 3 8Blocal, no thinking | 1 of 1100% · rounds 67% · 2.8 stars | 0 of 10% · rounds 0% · 2.8 stars | not played |
| GPT-6 Lunareasoning medium | 1 of 1100% · rounds 67% · 2.0 stars | 0 of 10% · rounds 33% · 2.2 stars | 0 of 10% · rounds 0% · 2.2 stars |
| GPT-6.1 Terrareasoning medium | 0 of 10% · rounds 0% · 2.5 stars | 1 of 1100% · rounds 100% · 1.8 stars | 0 of 10% · rounds 0% · 1.9 stars |
| GPT-6 Astrareasoning medium | 0 of 10% · rounds 0% · 3.0 stars | 0 of 10% · rounds 0% · 2.5 stars | 1 of 1100% · rounds 67% · 2.5 stars |
| GPT-6 Solreasoning medium | 0 of 10% · rounds 33% · 2.2 stars | 0 of 10% · rounds 33% · 2.0 stars | 0 of 10% · rounds 0% · 2.0 stars |
| GPT-6.1 Solreasoning medium | 0 of 10% · rounds 33% · 3.0 stars | 0 of 10% · rounds 33% · 2.8 stars | 0 of 10% · rounds 0% · 2.7 stars |
| Gemma 3 4Blocal, no thinking | 0 of 10% · rounds 0% · 1.0 stars | not played | not played |
| gpt-oss 20Blocal, thinking low | 0 of 10% · rounds 0% · 1.5 stars | not played | not played |
The game's own players on the same matches
| Player | Score | Level 1 | Level 5 | Level 8 |
|---|---|---|---|---|
| Rival in your seatThe game's own rival in your seat: a random deck, random cards, a random ball each round, aimed anywhere. The rival plays uniformly at random, so this is also the random baseline. | 49 | 27 of 5054% | 22 of 5044% | 25 of 5050% |
| Starter playerA new player who changes nothing: the starter deck with its core cards, the first ball in hand, launched straight at the rival. | 15 | 22 of 5044% | 1 of 502% | 0 of 500% |
| Sharp playerThe starter deck with three-star cards in every slot, the ball that counters most of the rival's balls left, launched straight at the rival. | 57 | 32 of 5064% | 28 of 5056% | 25 of 5050% |
| Tuned playerA player who measured all 72 cards on the game's simulation: the four elements with the best cards, those cards, counters first. | 68 | 35 of 5070% | 36 of 5072% | 31 of 5062% |
Every match
Every match
One square per match, filled when it won. Columns run tier by tier, in the order every model meets them. Click a square to open that one.
| Model | L1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | L5 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | L8 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Qwen3.8 Flash-Next | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Qwen3.5 9B | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Qwen3.8 27B | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Ministral 3 8B | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GPT-6 Luna | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GPT-6.1 Terra | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GPT-6 Astra | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GPT-6 Sol | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| GPT-6.1 Sol | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Gemma 3 4B | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| gpt-oss 20B |
MethodologyProtocol, scoring & limitations
The matches
Bounce Duels is the main mode of Elemental Armory, made with Chach16. Each side brings four of eight elemental balls. A ball fights with the ability cards in its slots: they attack on their own, on a timer, on contact or on a wall bounce, and a plain collision does no damage. Each round both sides pick one of their remaining balls and aim its opening launch, then the round runs by itself until a ball is knocked out, or for 45 seconds, when the larger share of health left wins. A ball that fought a decided round is spent, and the first side to two round wins takes the match. The bench runs the game's own simulation and its own match rules, pinned to commit 78afdf2, so a later change to the game cannot move anyone's result.
The opponent is the game's local rival. It deals itself a deck, equips random cards, and seals a random ball and a random aim each round before the player picks, never looking at the player's choice. Every model plays the same matches in the same order from set v1: match k is the same seed at every level, so the rival brings the same deck and makes the same picks for everyone. The levels are the game's ball levels, and the rival plays at the model's level, as the game sets it. Each level adds health, damage and, at levels 5 and 8, a card slot.
| Level | The matches | Won by the rival in your seat | Won by the tuned player |
|---|---|---|---|
| Level 1 | Every ball on both sides at level 1: one card slot each | 101 of 200 | 143 of 200 |
| Level 5 | Level 5: two card slots, 132 HP, 124% damage | 106 of 200 | 132 of 200 |
| Level 8 | Level 8: three card slots, 156 HP, 142% damage | 100 of 200 | 129 of 200 |
A model ranks once it has played the first 50 matches of every level. After that the bench keeps playing further matches, up to 200 per level, so n grows and the intervals narrow. The wins in the table count all of a level's matches.
The decisions
Play is in paused time: the game's 15-second planning clock is gone, and nothing moves while the model thinks. First one request for the deck: the rules, every ball's nine cards with the game's own descriptions and ratings, the counters and the level. As in the game, the deck is built before the rival's is known. Then one request per round, with both decks and their cards, which balls are spent, the score, the counters among the balls left, and every round so far: who launched what at which angle, who won, the health left, and each card's damage, healing, blocks and effects, the game's own battle details. The model answers with a ball and an angle. A drawn round replays with the same balls, so it only chooses a new angle.
One retry follows a reply the game cannot use (no answer tag, a card that is not that ball's, a spent ball), with the reason. A second one takes a recorded default: for the deck, whatever was legal, filled the way the game fills a short deck, with a core card for a ball that has none; for a round, the first ball left and the game's own starting aim, straight at the rival.
Score
The score is the match win rate at each level, averaged so every level counts the same, from 0 to 100. Its 95% interval adds up each level's Agresti-Coull uncertainty. Between evenly matched sides a match is close to a coin flip, so the intervals stay wide until many matches are in.
The game's own players
The game's own players played every match of the set on the same pinned commit. Rival in your seat. The game's own rival in your seat: a random deck, random cards, a random ball each round, aimed anywhere. The rival plays uniformly at random, so this is also the random baseline. Starter player. A new player who changes nothing: the starter deck with its core cards, the first ball in hand, launched straight at the rival. Sharp player. The starter deck with three-star cards in every slot, the ball that counters most of the rival's balls left, launched straight at the rival. Tuned player. A player who measured all 72 cards on the game's simulation: the four elements with the best cards, those cards, counters first.
Cost and time
Same as the chess and sudoku benchmarks: Claude models run through Claude Code and OpenAI models through the Codex CLI on a subscription, with every tool switched off, and local models on our own DGX Sparks. Cost is API-equivalent: what the tokens of every request in the match, retries included, would cost at the lab's list price. Local models have no list price, so they show n/a, not zero. Time is the wall-clock wait for the replies, including any queue on our side, so compare it within a route rather than across them. A request that fails on our side (a timeout, an outage, a usage limit) aborts the game, and an aborted game never counts against the model.
What it doesn't show
Paused time removes the planning clock on purpose. A model reads the cards as text and never sees the arena move, so it cannot learn how a card plays by watching it; it only gets each round's battle details. The rival plays at random, so this measures how well a model builds and picks against a fair but careless opponent, not against a strong person.