I built a baseball simulation. Actually it's going to be a deckbuilder and an autobattler combined with a fantasy draft, all built on top of that simulation engine. With a prototype in hand, I need to decide if I want to be a game developer or not.
One thing I love about DraftKick is its seasonal nature. It remains my main side-project, but it provides two big windows of downtime when no one is drafting. These are times where I have a chance to explore other ideas.
The first free window is April to June, after baseball has started and before anyone is paying attention to football. During that window this year, I built out a major DraftKick rewrite: moving the backend from Firebase to Supabase, rewriting the CSS to work at narrow screen sizes (mobile, but primarily for the side-panel sync), and, of course, finishing out the sync functionality.
The second free window is mid-October to December, after basketball but before most people start thinking about baseball. That window last year was when I built out the proof of concept for syncing and explored a few ideas from my big list of ideas.
Now that basketball drafts are finished, I've taken a few days to build out a prototype from another from that list: a baseball simulation.
My initial idea is not just a baseball simulation. It's like fantasy baseball, mixed with a deckbuilder, with a game simulator that runs like an autobattler.
Oh, and it uses baseball cards styled like 1950s Topps cards.

Here's the rough idea:
If you can win all three series, you become the champion. My working name for it is Playoff Run.

A key component in this game was the simulation engine. Here's how I designed it for each plate appearance:
I took each player's 2025 stats and determined the probability of nine exclusive plate appearance outcomes: FO, GO, SO, BB, HBP, 1B, 2B, 3B, and HR. That's their "card."
Now, we of course need to beware of players with few plate appearances. A skewed distribution of outcomes based on a small sample size could make them unlikely MVPs in the sim: Brewer Hicklen's card would be pretty awesome based on his 4 PA: 50% singles, 25% walks, and 25% strikeouts. To prevent that, I added league average stats to each player until they matched the highest PA total (i.e., around 700 PA for hitters). A 600 PA player would get 100 PA of league average, while a 200 PA player would get 500 PA of league average.
Finally, the engine simply flips a coin to determine whether to use the batter or pitcher card for each plate appearance.
I ran a few million simulations with random teams, and everything looked good. Sorting batters by winning percentage would basically match up with wOBA.
I had thought about leaving v1 of the simulator as offense-only, but I whipped up a quick and dirty implementation of defense and baserunning.
I start with FanGraphs' Fielding and Baserunning RAR/WAR components and take z-scores to make the scale easier to grasp. So Corbin Carroll is a +4 runner and a +1 defense. Alejandro Kirk is a -2 runner and a +3 defense.
Then I add up the scores for all the batters on a team. For a team with a positive defense score, a small percentage of 1B, 2B, and 3B in the simulator are converted into FO and GO. A positive running score converts an occasional FO or GO into a hit. (Negative scores do the opposite.)
Sure, that's not exactly how stolen bases contribute to wins. Like I said, I just needed something quick and dirty.
After running a few million simulations, here's who ends up as the top hitters, and thus the most expensive cards:
That definitely passes the sniff test. It's a lot of the same names as on FanGraphs' Value leaderboards, even though the game rules I'm using are for simplified positions (1 C, 2 CI, 2 MI, 3 OF, 1 DH).
So it's pretty realistic, but is it fun?
Here's the problem I see: I've given players multiple paths to building a team: you can draft defense-first, or lots of speed, or go all-in on pitching. But at the end of the day, they are all the same. There's really no advantage to committing to any approach.
I think you'd get more fun (but less realism) by encouraging players to commit to a team-building strategy. One idea is to have team-based bonuses: When you start, you pick a team, and that team confers certain strengths:
Another option could be to make bonuses compound somehow. But whatever it is, I think it takes a lot of experimentation.
The other issue, besides hitting the elusive target of "fun," is deciding if this is an idea I want to push past a prototype.
The alternative would be to use this upcoming window to pursue a different idea from my big list, probably open source fantasy leagues.
That's an idea I've gotten started on multiple times in the past, but the scope and complexity of it has always derailed me before I've made it very far.
Before starting that idea again, I'd want to be very cognizant of those past stumbling blocks. I'd need to either refine the idea to cut out those aspects, or be confident that this time I could overcome them.
So here are my options, as I see them:
DraftKick lets you stop stressing over who to pick or scrambling to update your spreadsheet. Pick confidently with actionable data built from the best available projections, tailored to your league and situation.
Never switch tabs again. DraftKick data sits inside your draft room.
See projected availability and never miss your targets.
Keeper leagues, auction drafts, custom scoring - we've got you covered.
Objective rankings from the best available projections.
Edit projections, adjust settings, make it yours.
Faster and easier than dealing with clunky spreadsheets.
Join the team of fantasy managers who trust DraftKick!
Open DraftKick appHi, I'm Mays.
I've been playing and building fantasy tools for over two decades. I started sharing my insights at Last Player Picked way back in 2009 and have helped countless fantasy players along the way.
With DraftKick, I'm bringing all that experience directly to you. It combines my best-in-class valuation algorithms with a fast and easy-to-use interface that gives you a clear edge.
DraftKick takes the guesswork out of player values, providing the data-driven power you need to dominate your leagues.
You can find me on Twitter at @MaysCopeland or email me at [email protected].