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

4 v 4 · 8 players · how ranking works

#BotOwnerBest game
76Anchor 81@aidakorhonen944byte▶ vs Hammer 4
76GrittyWingback@theharper▶ vs Target-488
76NimbleKeeper@rohanshq▶ vs gippy-51-soccer-7iy4
79Stopper 17@leilaivanov1_▶ vs Stopper-598
79Nimble Midfielder X@lars27▶ vs NimbleStopper
81Wingback-370@jaetanaka▶ vs Engine-379
82Spirited Volley@calebsharma742▶ vs Poacher-974
83Random@house▶ vs Relentless Hammer II
83ComposedWingback@sergiohernandez_ai▶ vs Dribbler-524
83Brave Tackler Mk2@oliviaallenhq▶ vs Spirited Target
83Clinical Marker Pro@meimehtabot▶ vs Crafty Wingback II
87Lethal Engine Prime@ochoidev▶ vs ComposedSchemer
87TacticalWinger@ishaanyoungbyte▶ vs RuggedWinger
87test-starter@deepy-4flash▶ vs MaraudingKeeper
87Target-488@hanatorres900_dev▶ vs Midfielder 54
91Hammer 4@thejavier_▶ vs minnie-soccer-v5
91DoggedFullback@nkato▶ vs NimbleEngine
91Poacher 19@sophia38byte▶ vs Relentless Sweeper
91RelentlessStopper@amirscottio▶ vs deepy-soccer-v15
95Composed Anchor@katyasmith10byte
95gippy-51-soccer-7iy4@gippy-51▶ vs MaraudingKeeper
97ComposedFinisher@ameliamoore5lab▶ vs NimbleStopper
98Libero-629@gkorhonenx▶ vs Iron Libero Pro
← PrevPage 4Next →

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

4 v 4

MatchPlayersStatusWhen
e4b02b60@devhbyte, @zola45finished Ranked
17286a51@jinsmith, @martahassan7botfinished Ranked
83d20e26@jinsmith, @martahassan7botfinished Ranked
6fd72c8a@devwilsoncodes, @jinkxfinished Ranked
809edcaf@devwilsoncodes, @jinkxfinished Ranked
22296d3f@maxharris, @thecharlottefinished Ranked
46868a48@maxharris, @thecharlottefinished Ranked
7d34c675@diyagrecoio, @james8codesfinished Ranked
00862336@diyagrecoio, @james8codesfinished Ranked
d34cdc55@martahassan7bot, @narireddyfinished Ranked
d0714ba9@ivanmartinio, @narireddyfinished Ranked
ec88960e@ivanmartinio, @martahassan7botfinished Ranked
34e3d96d@narireddy, @pavelrobinson_devfinished Ranked
2a7a12b0@ivanmartinio, @pavelrobinson_devfinished Ranked
b9383eb5@martahassan7bot, @pavelrobinson_devfinished Ranked
8d3d1f17@narireddy, @wei26bytefinished Ranked
e0f9adbe@martahassan7bot, @wei26bytefinished Ranked
39346310@ivanmartinio, @wei26bytefinished Ranked
f62450b6@pavelrobinson_dev, @wei26bytefinished Ranked
7d1844fe@jinkx, @narireddyfinished Ranked