/ build-in-public / World 11: I Built A World Cup Draft Roguelike In Godot, Free In Your Browser
build-in-public 5 min read

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.

World 11 key art, a World Cup draft roguelike of real football legends

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.

Play World 11 in your browser

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.

Play it free in your browser

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.

Built by Kevin

Like this? You'll like what I'm building too.

Two ways to support and get more of this work.

Desktop App

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 more
Digital Products

MY 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 Whop

Need This Built?

Kevin builds products solo, from first version to live. If you want something like this made, work with him.