All league settings can be edited before creating a new league

April 12, 2021-

Editing settings in a league has always been a little disjointed. There were some options available on the league creation screen, but others were only available within a league on the League Settings page.

Now that has changed in version 2021.04.12.0826. The entire League Settings UI is available before creating a league by clicking the "Customize Settings" button.

This isn't just good for consistency. There are also a couple concrete benefits of the new UI:

  1. Some settings really only make sense to change before creating a league because they affect player generation, such as "# Players On Court" or "Age of Draft Prospects".

  2. Some settings are now available to change outside of God Mode only prior to creating a league.

Read more...


New position formula for Basketball GM

March 31, 2021-

Positions in Basketball GM are determined by player ratings. There's some complicated formula that takes player ratings as input and spits out a position. However it sometimes behaves a little strangely, and this is something people have complained about in the past, that sometimes you see drastic jumps in player positions like a PG becoming a C.

Hopefully today's change will improve things a bit. @nicidob came up with a clever new position formula. Read on for details, but ultimately you probably won't notice a big change, most players will still have the same positions, and positions don't really matter much in BBGM.

This will take effect in all leagues as soon as you sim to a new season.

Read more...


Two new league settings: "Age of Draft Prospects" and "Force Retire at Age"

If you've been keeping a close eye on the changelog you may have noticed some work done by @domini7. The new features described in this post are his magnum opus. Thanks @domini7, I love you! If anyone else wants to get involved, head over to GitHub.

Today there are two new league settings available in all leagues.

Age of Draft Prospects: Allows you to change the age of generated draft prospects.

Force Retire at Age: Allows you to set a maximum age limit for your league.

Both of these options are available to be edited at Tools > Settings in God Mode, but you might be better off editing the draftAges and forceRetireAge settings in a league file so that they apply for randomly generated players in new leageus. (At some point I will make it possible to edit these before league creation from the UI!)

You may think something like, "hey, this will let me simulate a college or high school league!" Well, ages are part of that, and this does help. But there's still a lot of other differences between pro and college sports, so that's not really what this is about. It's really about letting you do whatever weird shit you want to do. Seniors league? Sure. Dystopian future where babies are raised to play basketball? Why not. Have fun.

How does it work?

Read more...


Draft order now matches the NFL/NHL in Football GM and ZenGM Hockey

March 18, 2021-

As the maker of basketball, football, and hockey simulation video games, sometimes I get amused by all the silly little differences between the major American pro sports leagues. Maybe they need some kind of meta-commissioner to iron out all those differences. If duty calls, I would gladly do my part to help!

I'm writing this today because I just rewrote my draft order code.

For a long time, there have been options about how to handle the draft lottery. Those still exist. But what I'm talking about here are all the other draft order rules. Previously they were all implemented like the NBA, but now Football GM behaves like the NFL and ZenGM Hockey behaves like the NHL. (Basketball GM should be unaffected, barring bugs.)

What exactly is this new behavior? Behold, my hopefully comprehensive list of silly little draft order differences across American pro sports leagues:

Read more...


Rescaled real player development determinism

The "real player development determinism" (RPDD) setting has existed for a little while now, but it behaves somewhat unintuitively. You may have noticed that if you set it to anything above about 30%, the results feel about the same. That's weird. 30% should not be almost exactly the same as 100%.

Why does it work that way? Because of the stupid way I implemented it. The initial implementation worked like this, to find the new ratings for every player in a new season:

  1. Run the normal player development algorithm
  2. Combine that with the player's real ratings for the new season - RPDD% comes from the real ratings, and (1-RPDD)% comes from normal player development.

That may sound okay at first glance, but the problem is that every single year you're averaging a player's real ratings into the random ratings, and their real ratings tend to be correlated pretty well across years, so the real ratings will come to dominate the random ratings.

That's no fun.

Read more...


Customizable tiebreakers

February 15, 2021-

New feature: customizable tiebreakers for where teams rank in the standings!

Previously tiebreakers were random. It's always a little frustrating to find yourself on the losing end of something and have the answer be "oh well it's just random". Makes you feel powerless. Especially in FBGM, where the last playoff team has a legitimate shot of winning a title.

In version 2021.02.15.1049 all leagues will be upgraded to the new default tiebreakers, which are:

BBGM tiebreakers
  1. Head-to-head record
  2. Division winner
  3. Division record (same div)
  4. Conference record (same conf)
  5. Margin of victory
  6. Coin flip
FBGM tiebreakers
  1. Head-to-head record
  2. Division record (same div)
  3. Common opponents record
  4. Conference record (same conf)
  5. Strength of victory
  6. Strength of schedule
  7. Margin of victory
  8. Coin flip

Additionally, when you view the standings, there is now a "Tiebreaker" column showing how ties were resolved. (Continue reading for more detail on this.)

And at Tools > League Settings, you can edit the "Tiebreakers" setting to apply any ordered combination of those tiebreakers in your league.

Read more...


Head-to-head team results

February 9, 2021-

It's common to want to know the history between two teams. What's their all time record? What about playoff matchups, or when they met in the finals? Previously in Basketball GM there was no way to know this without looking through old box scores and playoff brackets.

But now that has changed! Head-to-head results between teams are now tracked (albeit only for games from now on), and the data is viewable on two new pages.

Read more...


Basketball GM is now my full time job

January 29, 2021-

I started working on Basketball GM back when I was in college, in 2008. It was an on-again off-again hobby until 2012, when I got this crazy idea to make the whole game run in a web browser. In 2013 it got its first bit of publicity. That felt incredible at the time. I went from basically no users for years, to thousands of people trying my game in a single day! Sure, within a few days almost all of that traffic disappeared, but still! Thousands!

Social media buzz is a crazy thing. Even crazier is that in 2021, every single day BBGM gets more traffic than it did on its first "big" day in 2013.

Read more...


New option controlling how draft prospect ratings are generated in Real Players leagues

January 9, 2021-

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

Setting ratings for draft prospects is a more controversial topic, because there's no perfect way to do it. With hindsight, we know some top picks were busts and some late picks were stars. How should those players be rated as draft prospects? Should the future star be rated high like we know he eventually became, or low like he was percieved at the draft?

Previously, BBGM did real draft prospect ratings based on rookie season stats, which in practice usually turns out to be a compromise between those two extremes. Overall I'm pretty happy with that as the default, but I recognize that there is no one true way to set draft prospect ratings, it really comes down to personal preference.

That's why today I added an option for this when creating a new Real Players league. From the league creation screen you can find it under "More options".

Read more...


2020 was horrible, but not for Basketball GM

January 1, 2021-

Happy New Year!

I know, everybody's talking about how 2020 sucked and how they hope 2021 will be better. But it's also true that 2020 had at least one redeeming quality - it was a great year for Basketball GM! COVID lockdowns left me with more time to work on development, and it left many of you with more time to play. The end result has been a ton of new features that I won't even try to summarize here, and new records in all usage stats:

YearSessionsPageviewsTotal Play Time (years)
2013135,66413,661,06318.14
2014471,55339,662,53242.06
2015982,92676,650,99966.73
20161,101,25686,009,82970.09
20171,657,749144,489,27386.79
20181,868,091184,571,462100.70
20192,403,039222,568,917136.32
20203,440,761299,207,611206.10

That's a lot of Basketball GM in 2020! And that's not even including Football GM which of course did a lot better in 2020 than in 2019 because it didn't even exist at the beginning of 2019.

I hope Basketball GM and Football GM brought you all some fun and distraction, I know they did for me. And I promise you, I have even bigger things planned for 2021 :)

Read more...