SlimeBallBench is the most sophisticated AI benchmarking tool on the market. Instead of putting the models through rigorous math tests, SlimeBallBench is testing the important stuff, like 1v1 dominance in an old computer game.
Back in the middle school computer lab, my friends and I were putting in the work to get good at a browser game called Slime Soccer (there was also Slime Volleyball, which came before it). I can’t seem to find the original, but there are a few different attempts at recreating it. This is one of those attempts, but unfortunately you aren’t allowed to play it unless you are a model that one of the AI labs has released.
I wanted to create a fun benchmark for the AI models and this game came to mind because it seemed simple enough. Then I started testing it and seeing fun results, like a “worse” model beating a “better” one. That inspired me to keep going. I’ll continue to add new models to this as they are released.
So that’s it. Just some 90’s computer lab nostalgia with modern day sorcery.
Each model controls a slime, a semicircle that defends one goal and attacks the other. Matches run 60 seconds of simulated time, headless, with every frame logged, so replays are rebuilt exactly from those logs.
x runs 0 (left) to 1000 (right); y runs up from the ground, with gravity pulling everything down. A goal sits at each side wall, from the ground up to y = 120.
When the ball hits a slime’s dome it launches along the contact direction, so where you strike it decides where it goes. The slime’s speed is added to the ball, and the opponent is a solid wall.
Every turn a model picks one of six actions:
About three times a second each model gets a fixed system prompt plus the current game state as JSON, and replies with one action word. Both sides get the exact same prompt, which is the core fairness guarantee.
The state is written from the model’s own point of view, so you, opponent, and which goal to defend or attack flip with the side it plays:
{
"you_play_side": "left",
"your_goal_x": 0.0,
"opponent_goal_x": 1000.0,
"ball": {"x": 612.4, "y": 88.1, "vx": -3.2, "vy": 5.0},
"you": {"x": 240.0, "y": 0.0, "vx": 1.1, "vy": 0.0},
"opponent": {"x": 760.5, "y": 0.0, "vx": -2.0, "vy": 0.0},
"score": {"you": 2, "opponent": 3},
"time_remaining_seconds": 41.0
}
The parser is lenient: “move left”, “I’ll jump right”, or “stay put” all work, and an unparseable reply just leaves the slime idle for that turn, so a stray response never crashes a match. Reasoning models run at minimal effort to keep the ~180 decisions per match fast. Same rules for everyone, yet they play very differently: some dominate possession but score own goals; others barely move and win on the counter.
This exact text goes to every model, every turn:
You are an AI controlling a "slime" in a 2D slime-soccer match. THE FIELD (coordinate system): - x runs from 0 (left wall) to 1000 (right wall). - y runs from 0 (the ground) upward; larger y is higher. Gravity pulls everything down. - The ceiling is at y = 500. - There is a goal at each side wall. A goal is the opening from the ground up to y = 120. If the ball crosses a side wall below that height, a goal is scored. YOUR SLIME: - It is a semicircle (flat side on the ground) of radius 50. The ball is radius 15. - You can roam most of the field but not deep into the opponent's end. The opponent slime is a SOLID WALL — you cannot pass through it, you bump into it and stop. - When the ball touches your dome it is launched away along the contact direction, so WHERE you hit the ball decides which way it goes: hit it on its left side to send it right, hit its right side to send it left, get under it to pop it up and over the opponent. Your movement speed is added to the ball, so move INTO the ball to hit harder. THE STATE (sent each turn as JSON): - "you_play_side": which side you defend. - "your_goal_x": the x of the goal you must DEFEND. "opponent_goal_x": the goal you ATTACK. - "ball", "you", "opponent": each has x, y position and vx, vy velocity. - "score": your goals vs opponent goals. "time_remaining_seconds". YOUR ACTIONS (choose exactly one each turn): - move_left : move toward smaller x - move_right : move toward larger x - jump : jump straight up (only works when on the ground) - move_left_jump : move left while jumping - move_right_jump : move right while jumping - idle : stand still HOW TO WIN: score MORE goals than the opponent before time runs out. You score by knocking the ball into the opponent's goal opening (at opponent_goal_x); you concede if it enters yours (at your_goal_x). STRATEGY — be active, do not stand around: - ATTACK: chase the ball, get to it before the opponent, and hit it toward opponent_goal_x. To beat the wall in front of their goal, pop the ball UP and OVER by getting under it, ideally while jumping. - DEFEND: when the ball is heading toward your_goal_x, get between it and your goal and clear it away. - Almost every turn you should be moving toward where the ball is going, or jumping to strike it. Only choose `idle` if you are already in the exact spot you want — idling while the ball is in play usually wastes the turn and loses the match. Respond with ONLY the single action word, nothing else.
The logo by each team isn’t ours: every model designed its own logo from the same brief (its name and colour filled in) and returned a single SVG. Nothing was hand-edited, only sanitised for safety. Fittingly, the stronger models draw the more elaborate logos.
The brief, sent once to each model:
You are the {team name} team in SlimeBallBench — a league where AI models
compete head-to-head at soccer.
Design your team's crest and return it as a single self-contained SVG.
Requirements:
- Output ONLY the SVG markup — no markdown, no code fences, no commentary
before or after.
- Root element: <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100"> …
</svg>, exactly square.
- Your team color is {team color}. Make it the dominant color — the field, the
primary shape, or both. You may add up to two accent colors.
- Bold, simple, instantly readable both as a 24px icon and as a large crest —
think a real soccer-club badge or esports team logo.
- Vector shapes only: path, circle, rect, polygon, line, ellipse. NO text,
letters, numbers, or words anywhere. No <image>, no external references, no
embedded raster data, no scripts.
- Soccer-themed: draw on soccer iconography — the ball, a goal and net, a boot,
the pitch, a shield/crest, wings, stars, laurels. Do NOT depict a slime or blob.
- It should feel like YOU — your identity, or how you'd want your team seen.
Return the SVG now.
If you cite SlimeBallBench in academic work, model cards, or procurement decisions:
@misc{cashdollar2026slimeballbench,
title = {SlimeBallBench: An Adversarial Embodied-Agent Benchmark for Large Language Models},
author = {Cashdollar, Jason},
year = {2026},
note = {Season 1. 60-second regulation matches, single round-robin.},
url = {https://slimeballbench.com}
}