World 11: I Built A World Cup Draft Roguelike In Godot, Free In Your Browser
World 11 is a World Cup draft roguelike built solo in Godot 4. Spin a nation and year, draft real legends, and sim a fourteen match gauntlet.
A while back a football drafter called 38-0 went viral. Spin players, build a team, see how far an unbeaten run gets you. It was simple and addictive. I wanted to know what it would feel like rebuilt as a proper roguelike, World Cup themed, with a longer road and real engineering underneath. So I built it.
World 11 is a World Cup draft roguelike. You spin a random nation and year, draft one real player per position from that era's squad, then send your cross era frankenteam through a fourteen match gauntlet and try to win the cup unbeaten. You draft, and the matches are simulated. It is free, and you can play it in your browser right now.
Here is the build log, because the interesting parts are the ones you do not see while playing.
How A Run Works
You pick a formation from eleven options, from an all out 3-4-3 to a defensive 5-4-1. That sets your eleven slots.
Then for each slot you spin, which draws a real World Cup squad from somewhere between 1966 and 2022, and you pick one player into an open role. Picking a player off his natural position costs a rating penalty. Lining up players from the same nation or the same decade builds chemistry. You get three rerolls per run, so the team ends up part dream team and part happy accident.
When the eleven is set you choose a mentality, name a captain, and run the gauntlet. Six qualifiers, a group stage, then single elimination knockouts up to the final. Watch it blitz by in Fast Sim, or take it Match by Match with a live minute by minute ticker. Lose a knockout and the run is over.
The Trick That Makes It Work, A Pure Deterministic Simulation
The spine of this game is one architectural decision. The match engine is a pure, seeded simulation with no dependency on the rest of the game. You hand it a draft and a seed, it hands back a full tournament. No nodes, no signals, no clock, no global state. Same inputs and same seed always produce the same result, on any machine, forever.
That single property pays for a long list of features. It makes the game testable, because I can run a draft through the engine headless and assert on the result with no window and no rendering. It makes the daily challenge free, because the seed can just be today's date and every player derives the same run. It makes shareable links work with no backend, because the link only carries the seed and the receiving machine replays the exact same tournament locally.
A balance bot leans on the same property to run hundreds of optimal teams through the full gauntlet, which is how I tuned the difficulty so a strong, well drafted side lifts the cup roughly a third of the time. Going unbeaten is the dream, not the default. I wrote up how the determinism is built, and why it is the load-bearing decision, in the deterministic simulation post.
Real Players Without Licensing A Database
A game about real football legends sounds like a licensing nightmare, and it is not, because names, positions, and years are facts, and facts are not copyrightable. The faces are freely licensed images pulled from Wikimedia, with a kit badge fallback for players who have no clean license, and an attribution file that ships with the game.
I walked through the whole legal line, the four license buckets I allowed, and the fallback that keeps the board from looking broken, in the post on building with real player data.
Tune With Data, Not Code
You tune World 11 by editing data, not code. The formations, the gauntlet stages, the rating weights, the chemistry rules, the reroll count, and the expected goals model all live in JSON, so adjusting balance means changing a number in a data file and rerunning, never touching the simulation.
That wall between engine and content is what made the difficulty curve safe to dial in, and it is the whole subject of the post on tuning balance with data not code.
Why It Lives In The Browser
Same reason as everything I ship for fun now. Godot exports to HTML5 and WebAssembly, so the call to action is a link instead of a download. You read this, you click, you are drafting a team in seconds. For a free game made by one person, deleting the install step is the highest leverage decision available.
Play It, Then Tell Me Where It Breaks
World 11 is a playable demo with the full core loop: formation, draft, gauntlet, result, and share. The deep roguelike layer is what I am building next.
There is a feedback button on the game page. If a match result feels wrong, a player is missing, or you have an idea for the meta layer, send it. The difficulty curve and the bestiary of edge cases get better fastest when the people drafting teams tell me what felt off. That is the loop I build in public for.
Like this? You'll like what I'm building too.
Two ways to support and get more of this work.
HEARTH
A privacy-first Life OS for your desktop. Journal, tasks, and notes that stay on your machine. Coming soon, direct download from this site.
Read moreMY TOOLKITS
Receipts-first toolkits for shipping after hours, building Claude agents, publishing on Amazon, and more. The exact methods I used, not theory.
Browse on WhopRelated Articles
How I Built A Game About Real Players Without A Licensing Nightmare
Facts are not copyrightable. Here is the practical line a solo developer can walk to ship a game using real names, positions, and years, with freely licensed faces.
I Treat Claude Code Like a Small Dev Team
Agentic AI coding gives real leverage only when you decompose work, isolate it, anchor it with durable context, and verify the output. Here is how I direct it.
Published In The Database Is Not Live On The Internet
I built a small content registry that scans every blog and verifies each post is actually reachable and in the sitemap, not just marked published in a row somewhere.