Fake Basketball
[Originally posted April 30th at fakeronjan.com/fakebasketball]
I made a game! Well, I vibe-coded a game.
It’s a text-based basketball simulation game called Fake Basketball Commissioner and I made it because, honestly, it’s the game I always wanted to play.
In sports video games throughout my life, I’ve been fascinated with simulating the actual sports part to see what happens in the long-term meta-narrative of the league. I want to see Hall of Fame career arcs, dynasties that rise and fall, rule changes that impact strategy, the coaching carousel, even owners that start up competitive leagues.
Every other sports game - including the one I spent 2 years of my career working on, leading the data & analytics team - focuses on the actual sports gameplay, which makes sense. That’s where the market is.
But it’s not where I am. It’s not the game I always wanted to play. So I went ahead and did it myself (but also with a lot of help). It’s no masterpiece, but it’s what I want.
Click the logo below to play Fake Basketball Commissioner. And keep scrolling to read the story of how it came to be!
It all started as an experiment a few weeks ago to get more familiar with Claude. (Given that I work in data & analytics, this is a must at this stage for my career.)
Back in high school, I created a fake basketball game and league simulator in Visual Basic. I told the whole story here.
On April 12th, I decided I was going to use Claude to re-create that simulator. I carved out the whole weekend to get going. It was done in 15 minutes.
You hit “go!” on a python script and, boom, you get a simulation of multiple seasons of a fake basketball league. Champions are crowned, dynasties rise and fall, a whole league’s history is created on a dime.
Well, that was fun, let’s keep going! Soon, the simulator included league expansion and team relocation mechanics, rule changes that push the league into offense-heavy or defense-first eras, and more.
By the end of the weekend, the simulator is generating a webpage, nicely formatted, with sections on league history, championship droughts, playoff rivalries, and more.
On Monday the 14th I decide to make this interactive. Instead of a simulation that you just hit “play” and watch, what if you had choice and agency? What if you could make decisions that shape the league without having direct control of teams, owners, coaches, players, or fans?
And thus Fake Basketball Commissioner was born. This is not a game about chasing a “win state”. There will always be a champion, MVP, coach of the year, excited fan base every season. Your role is to make decisions when they come to you and see how it impacts everything else.
Building the game was a lot of fun. I would work out design ideas with both Claude and ChatGPT, then have Claude write the codebase, then upload the codebase into ChatGPT so they could run parallel simulations. It was incredibly iterative, particularly with me running out of Claude tokens several times a day. But we kept going.
We started adding interlocking systems:
A player model that follows realistic career arcs and has player archetypes with core motivation and preferred offensive and defensive zones
A team model that has three named players and an unnamed bench
A coach model with several archetypes that boost player performance based on the coach’s strengths (star whisperer, offensive mastermind, etc.)
An owner model that incorporates budgets, competency, loyalty to the league, and core motivation
A sim engine that ran every single possession of the season considering player, team, coach, and owner strengths alongside individual form and fatigue
We introduced more interesting narrative decisions:
Owners can break off and form their own league if you make too many decisions that they don’t agree with
Generational LeBron / Wemby type players show up every few years and can lead to a tank-off by weaker teams to try to get them
The commissioner can rig playoff series and draft lotteries to try to favor teams that are good for the league
Finally, we ended up making it a browser game that can save your progress.
I’m at a point today, April 30th, where I am at a comfortable stopping point. Consider this the v1.0 release date, the day that Fake Basketball Commissioner was officially real.
I know this game isn’t for everyone. It may not be for anyone besides me. And I’m okay with that. If nothing else, this was one of the most fun projects of my life.
Thank you for reading.