More settings for real draft prospect ratings

October 27, 2026-

In BBGM Real Players leagues, player ratings are based on player stats. It's not perfect, but it works somewhat well.

Setting ratings for draft prospects is trickier, because what should draft prospects represent? Previously there were two options. You could set the "Real Draft Prospect Ratings" to "Based on draft position" and then draft results look similar to real life. Or you could set it to "Based on rookie season stats" and rookies will tend to perform similar to real life.

I made "rookie season stats" the default, but there's certainly an argument that "draft position" makes more sense. Ultimately it comes down to personal preference and what you're trying to achieve.

But those two options are not the only options you might want. Some people want the best historical players to have the best draft ratings, which also makes some sense. "Rookie season stats" kind of achieves that, because good rookies usually have good careers and bad rookies usually have bad careers. But some players have abnormally good or bad rookie seasons.

The latest version of BBGM adds some more options here that I think will let everyone customize things pretty well to their liking.

Read more...


Scheduled events editor

Scheduled events have existed in ZenGM for a long time, mostly to support the historical real players mode in BBGM. Beyond that built-in mode, they've mostly been reserved for custom roster file creators, because while it was possible to edit the JSON directly to add scheduled events, there was no UI to create/edit them.

But now there is!

Read more...


Draft pick trade value accounts for lottery and playoff settings

October 7, 2026-

Trade value is a tricky topic, and draft picks are a big part of that.

For a long time, the way that it's worked in ZenGM is that it looks at the actual draft class to see who will be available at a pick, and then the pick is worth the same as that player on a rookie contract would be. That works really well right before or during the draft, when the order is known.

What about earlier in the season when the draft order is not known? Or for picks in future seasons? Then it used some formula to project where the pick would fall, and then same as above, the value of the Nth pick in the draft was the value of the Nth best player.

Read more...


The simulation engine is now about twice as fast

September 21, 2026-

The big news is that, building on top of some initial performance improvements released last week, now all of the ZenGM games run about twice as fast.

Specifically, on my computer, I tested the amount of time it takes to auto play 10 seasons in a new league, and here is how it changed:

Go check it out and see for yourself! Or read on for some technical details.

Read more...


Extremely customizable awards

September 3, 2026-

Previously, all the awards in ZenGM were hardcoded. Want to add a new award? Change the number of All-League teams? Edit how the MVP is determined? Couldn't be done, but now all of that and more is possible!

The main new stuff is at Tools > Award Settings where you can add/edit/delete awards. There is documentation there if you click the "Show documentation" button at the top, but I'll explain some of the coolest features here.

Read more...


Updated default injuries

July 13, 2026-

The latest update to Basketball GM contains a new set of default injuries. This is based on work by Xinwei Huang who analyzed injury data, largely the official NBA injury reports supplemented by some other data. Previously I was using the results from this paper which is great, but it's based on data from 1988-2005 which is a little bit dated at this point.

That's probably the main thing you'll notice, that the injury names and durations feel more modern. Especially duration, injuries now last longer than they did previously, because that's what the data says these days. Hopefully this makes BBGM feel a little more realistic.

Read more...


Improved draft lottery probability calculation

In my previous blog post about the 3-2-1 lottery, I wrote about how the probabilities for each pick change depending on how many teams trigger the top-1/top-5 constraints:

[The probabilities] depend on how many teams in the lottery have constraints on winning the #1 or a top 5 pick, and whether those teams have 1, 2, or 3 chances. In theory I could find every possible scenario and precompute them all, but that's a lot of scenarios! (Homework assignment for you: how many possible scenarios is it, exactly?)

See that little combinatorics puzzle at the end? Well only one person messaged me with an answer, wiigeneral from Discord. And after correcting a small mistake, he got it right: there are 491 scenarios.

Then we talked a little more about the challenge of generating these full tables of lottery probability odds:

Read more...


How it feels to be an old school web-based sports sim dev when tons of vibecoded web-based sports sims are being released

June 12, 2026-

Back when I started working on the web-based version of Basketball GM in 2012, web development was very different. npm was brand new and hardly anyone used it. Bundling/deploying JS was very primitive, a lot of people still were just concatenating files together. And things like TypeScript, React, async/await... these did not even exist yet!

It was really difficult! The tools and documentation were horrible compared to today. But I thought it'd be really cool if I could make BBGM run in a web browser, so I persevered. And over time the web dev ecosystem blossomed into what it is today: certainly far from perfect, but worlds better than it was in 2012.

In 2021 BBGM was big enough to become my full time job. That has gone really well! Today it is both more popular and more profitable than it was in 2021.

At times over the past several years I've wondered how long will that really last.

Read more...


New "NBA 2027 (3-2-1)" draft type

Since the NBA has released the final details of their new lottery system (AKA the "3-2-1 lottery"), I have added it to BBGM. You can select it in any league by changing the "Draft Type" setting to "NBA 2027 (3-2-1)". It is also the default in new random players leagues, and in new real players leagues once you sim to 2027.

The headline feature of the 3-2-1 lottery is that all of the lottery picks are randomly selected, not just the top 4. So there are a lot more possible outcomes of the draft. Nearly any team can win any pick:

Read more...


2029 expansion teams in real players leagues

If you create a new real players league in BBGM, you will now see expansion teams in Seattle and Las Vegas before the 2029 season, since that is what is now planned to happen in real life. However not all the real life details are finalized, so I had to make some guesses about how things will work.

Read more...