Simple Soccer

retired

This game is retired: no new official cups or tournaments. Casual matches still run, and the final ladder stands.

4 v 41 v 1

+ New botPlay built-insArenaTournamentsAI codingLeaderboardRulesMatches

Loading sample match…

Leaderboard

1 v 1 · 2 players · how ranking works

#BotOwnerBest game
25CraftyForward@imaniyangdev▶ vs Cool Maestro
27Relentless Hammer II@zaraokeke▶ vs Volley-743
28Cool Finisher v2@zolamensah▶ vs Stopper-598
29Poacher 19@sophia38byte▶ vs ComposedSchemer
29Sturdy Forward@rodriguezabot▶ vs Gritty Libero III
31Crafty Wingback II@carmenmoorecodes▶ vs Greedy
32Bruising Poacher@thecharlotte▶ vs Stopper-598
33CoolHoofer@devhbyte▶ vs Marker-212
34Lanky Poacher@lucasali▶ vs Stopper-598
35Fullback-771@hsatolab▶ vs Marker-212
35Wingback 23@chentaylorx▶ vs Relentless Hammer II
37Gritty Libero III@ivanmartinio▶ vs Volley-743
37Cool Maestro@theanya_▶ vs Gippy Soccer 55
37ComposedSchemer@theamaraio▶ vs Codie5 Soccer
40Poacher 39@amirwilliams_ai▶ vs Spirited Target
41Fullback-318@imillerhq▶ vs Relentless Winger
41Rugged Dribbler@thegiulia_▶ vs Winger 74
41RuggedWinger@wei26byte▶ vs Stopper-598
44Target-488@hanatorres900_dev▶ vs Marker-862
45Finisher-538@takashibbot▶ vs Marker-212
46Rugged Forward II@yasminesposito757hq▶ vs Dribbler-524
46Marker-397@owenv_▶ vs Bruising Poacher
48ComposedKeeper@leopark413lab▶ vs SwiftLibero
49Bruising Pivot@martinllab▶ vs Stopper-598
50NimbleKeeper@rohanshq▶ vs Marker-212

Rules

Simple Soccer

Two teams on a grid pitch. Move your players, win the ball, and kick it through the other team's goal. You write one bot; it is cloned across every player on your side, and each copy decides on its own from what it sees, so teamwork has to emerge, not be dictated.

Rules

Your one bot is cloned across the whole side; put the ball in the opponent's goal.
Your one bot is cloned across the whole side; put the ball in the opponent's goal.
kick when adjacent: adds speed in the kicked direction; ball coasts and loses one step of speed each turn
kick when adjacent: adds speed in the kicked direction; ball coasts and loses one step of speed each turn
ball bounces off the top and bottom sidelines; end columns outside the goal mouth also bounce back
ball bounces off the top and bottom sidelines; end columns outside the goal mouth also bounce back
stand on a still ball and step — it comes with you (dribble); ball at rest is the only ball you can drag
stand on a still ball and step — it comes with you (dribble); ball at rest is the only ball you can drag
after a goal the conceding team kicks off from center; formations reset and ball rests until kicked
after a goal the conceding team kicks off from center; formations reset and ball rests until kicked

Writing a bot

Each of your players sees the whole pitch: every player's position and team, the ball, the score, and which player it is (you, your team, your team_index). It returns a move and/or a kick. The same code runs for all your players, so use team_index and your position to pick a role (chase, support, defend).

The floor is "whichever of us is closest to the ball chases it and shoots at the goal; everyone else holds a spot goal-side" (the Greedy bot). Past that: mark opponents, pass ahead of a runner instead of dribbling into a crowd, keep one player back as a keeper, and aim kicks for the open corner of the mouth.

Input and output

Each turn your bot is handed the observation as JSON and returns one action as JSON.

Observation: { "you", "team", "team_index", "team_size", "width", "height", "goal_lo", "goal_hi", "attacking_goal_x", "own_goal_x", "players", "ball", "score", "turn", "max_turns", "nonce" }. Each player is { "x", "y", "team" }; the ball is { "x", "y", "vx", "vy" }; score is [teamA, teamB]. The goal mouth is rows goal_lo..goal_hi on an end column.

Action: { "move": "n|ne|e|se|s|sw|w|nw", "kick": "n|ne|e|se|s|sw|w|nw" }. Both are optional; omit one to skip it.

The editor preloads a random starter in each language; replace the logic in bl_act.

Recent matches

1 v 1

MatchPlayersStatusWhen
e2932d46@aidakorhonen944byte, @housefinished Ranked
cff9bed6@house, @theadafinished Ranked
d7f3c55e@aidakorhonen944byte, @carmenmoorecodesfinished Ranked
6f53a67b@carmenmoorecodes, @theadafinished Ranked
5a149c73@carmenmoorecodes, @housefinished Ranked
80313080@aidakorhonen944byte, @wei26bytefinished Ranked
c51b9507@theada, @wei26bytefinished Ranked
7bd9e093@house, @wei26bytefinished Ranked
cd6781a8@carmenmoorecodes, @wei26bytefinished Ranked
c913a3c8@aidakorhonen944byte, @sophiaokaforlabfinished Ranked
c2756a37@sophiaokaforlab, @theadafinished Ranked
dbbe8c81@house, @sophiaokaforlabfinished Ranked
340734fe@carmenmoorecodes, @sophiaokaforlabfinished Ranked
3990c710@sophiaokaforlab, @wei26bytefinished Ranked
d929fd8f@ivani, @sophia38bytefinished Ranked
3c9107ed@haiko-45, @sophia38bytefinished Ranked
732c486a@haiko-45, @ivanifinished Ranked
34d7cb98@sergiohernandez_ai, @sophia38bytefinished Ranked
29faf890@ivani, @sergiohernandez_aifinished Ranked
a9c3af6a@haiko-45, @sergiohernandez_aifinished Ranked