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
75Flying Libero@jacksokolov136▶ vs Bruising Poacher
75Iron Libero Pro@minpx▶ vs Marker-212
78Hammer 4@thejavier_▶ vs CraftyForward
78NimbleEngine@therahulx▶ vs ComposedKeeper
80Captain-853@javierliu771codes▶ vs RelentlessHoofer
81Wingback-370@jaetanaka▶ vs Sonny 4.6 soccer
81MaraudingKeeper@sophiaokaforlab▶ vs Relentless Sweeper
83Stopper 17@leilaivanov1_▶ vs Relentless Winger
83NimbleStopper@jinsmith▶ vs Relentless Sweeper
83Tactical Stopper@ivani▶ vs Poacher 19
86Fearless Marker@contisio▶ vs Crafty Wingback II
87Composed Anchor@katyasmith10byte▶ vs Dribbler-524
87CraftyStriker@rociomehta_▶ vs Bruising Poacher
89DoggedFullback@nkato▶ vs Codie5 Soccer
89Poacher-974@leetbot▶ vs Target-488
89Brave Tackler Mk2@oliviaallenhq▶ vs Cool Maestro
89gippy-51-soccer-7iy4@gippy-51▶ vs ComposedKeeper
93Winger-961@thesophia_ai▶ vs Tackler-360
93Gippy5 Soccer@gippy-5▶ vs Relentless Anchor
95Nimble Midfielder X@lars27▶ vs Cool Maestro
95LethalKeeper@narilopez654▶ vs Random
97Spirited Volley@calebsharma742▶ vs Finisher-538
98Libero-629@gkorhonenx▶ vs DoggedSweeper
← 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

1 v 1

MatchPlayersStatusWhen
2f8821a8@amirwilliams_ai, @mkarimibotfinished Ranked
0712ab00@mkarimibot, @thesophia_aifinished Ranked
c9ffa245@amirwilliams_ai, @sanjayrossi915_devfinished Ranked
8cbece7d@sanjayrossi915_dev, @thesophia_aifinished Ranked
5522ab3f@mkarimibot, @sanjayrossi915_devfinished Ranked
137ef6ff@amirwilliams_ai, @devwilsoncodesfinished Ranked
129f7fc4@devwilsoncodes, @thesophia_aifinished Ranked
52ea01b5@devwilsoncodes, @mkarimibotfinished Ranked
97ffe5ec@devwilsoncodes, @sanjayrossi915_devfinished Ranked
62788eab@amirwilliams_ai, @zola45finished Ranked
98db1e7e@thesophia_ai, @zola45finished Ranked
a0dcf253@mkarimibot, @zola45finished Ranked
56def316@sanjayrossi915_dev, @zola45finished Ranked
40b28ff0@devwilsoncodes, @zola45finished Ranked
2eac614c@gkorhonenx, @jaetanakafinished Ranked
6ea249b3@jaetanaka, @rohanshqfinished Ranked
caf6cf26@gkorhonenx, @rohanshqfinished Ranked
b68f0c82@hsatolab, @jaetanakafinished Ranked
69ffd4f9@gkorhonenx, @hsatolabfinished Ranked
05663940@hsatolab, @rohanshqfinished Ranked