Group regular season schedule into MLB-like 3/4 game series

April 19, 2023-

When developing ZenGM Baseball last year, there were a bunch of things I wanted to do but decided to leave for later. Can't let the perfect be the enemy of the good! One of those was the regular season schedule. In baseball, due to the large number of games with few days off resulting in the need to minimize travel, teams usually play 3-4 games against the same opponent, which is called a "series".

In the initial release of ZenGM Baseball, there were no series, games were randomly ordered just like the other sports. Now that is changed - there is a new setting called "Group Games Into Series" that is enabled by default in ZenGM Baseball, so it will apply for future seasons in all leagues unless you disable it. (For other sports it's disabled by default, but you can enable it if you want a baseball-like schedule.)

The end result is the schedule looks more like a baseball schedule:

That's the general idea. Read on for all the details, if you're curious.


Goalie fatigue in the playoffs

In the initial release of ZenGM Hockey, starting goalies played literally every game, which was unrealistic. So shortly after that I added goalie fatigue to ZenGM Hockey. But I never actually explaind how it works.

Goalie fatigue works by tracking the number of consecutive games played by goalies, and then decreasing their goalie rating by some amount. That amount is the number of consecutive games played prior to this game, multiplied by a random number between 0 and 9% (the randomness is just so the outcome doens't look too uniform). So after playing 3 games, a goalie will be somewhere between 0% and 27% less effective than normal. If that happens to make them worse than their backup, the backup plays. This is nice because it lets star goalies play more, and it also gives you a good reason to have a quality backup - not just because the backup sometimes plays, but because the more your backup earns playing time, the better your starter will play with a little more rest.


Better handling of players with gaps in their career in historical real players leagues

March 13, 2023-

Just to be clear, this is about real players rosters in Basketball GM, for players who had some gap in the middle of their career where they didn't play. This is not about players who are drafted and have some gap between ther draft and their rookie season that is still handled kind of strangely.

So this is about players who were injured, suspended, unsigned, playing in another league, retired, or whatever - for an entire season or more. Previously BBGM kind of ignored those players. Like if a player played from 2005-2008 and then 2010-2013, if you started a real players league in 2009, that player would not be present in the league at all. But now those players are handled better!


Bold league leading stats on player profile pages

March 5, 2023-

Inspired by, on player profile pages I added bold/highlighted text for each stat a player leads the league in. Most players don't lead the league in anything, in which case there is no change for them. But for the top players in your league, it gives you a quick glance at just how dominant they've been.

It works on all the stat tables on the player page - regular stats, advanced stats, playoff stats, etc. It also works on player ratings, and even ages to show you the oldest player in the league.

I know this seems like a simple little feature, but there's actually a lot of details involved in implementing this, so I figured I would blog about it!


Women's leagues are now in every ZenGM game

February 25, 2023-
Click to regenerate

Every ZenGM game now supports women's leagues! You can set the gender of a league by changing the new Gender setting in the Players section of the league settings, or by clicking one of these handy links that presets the gender to female:


JavaScript bundling for ZenGM, from 2012 to today

January 11, 2023-

Every now and then I write a blog post about purely technical issues I've dealt with that have nothing to do with sports or video games. This is another one of those blog posts! For some reason I want to talk about JavaScript bundling - how it was in the old days when I first started working on Basketball GM; how it's changed over time; and what I'm doing now.


Improvements to AI valuation of their own draft picks in trades

January 9, 2023-

There have been a lot of blog posts about the trade AI in the past - just click that Trades tag above if you don't believe me! And yet, the trade AI remains flawed.

The most ambitious (and so far failed) attempt at improving the trade AI came from nicidob, where he tried to come up with a model to predict how the various "assets" a team owns (not just players and picks, but also cap space) contribute to the likelihood of winning a championship over the next several years.


2022 annual recap and traffic stats

January 1, 2023-

Every year I post some traffic stats here. It's a fun tradition because the numbers keep going up. I'm sure that won't last forever, but it did for 2022!

Some nice milestones that were achieved last year:

In addition to record traffic at all the games, 2022 also saw the release of the new ZenGM Baseball game and many updates to all of the ZenGM games. What will next year bring? Updates to the existing games, of course. But I've also been working on a new game that is pretty different from my existing games. Sadly it's still a bit too early to say more!

And as I always say, I am eternally grateful for the love and support you guys constantly show me. Thank you for helping ZenGM have yet another successful year!

2022 traffic stats:


Better plus/minus stats

November 21, 2022-

For a long time, Basketball GM has had raw plus/minus (or +/-) as a stat, which is how many points per game his team scores with him on the floor minus how many points it gives up. In basketball, this is not the most useful stat in the world for multiple reasons.

One is that it's not adjusted for playing time, but obviously it's very different to have a +/- of -1 per 10 minutes or -1 per 30 minutes. To address that, the +/- stat has been replaced by a "per 100 possessions" version, which makes comparisons of this value more fair.

But even per 100 possessions, it's a pretty shitty stat because if you play with good teammates you'll have a good +/- even if you're not very good. This is the problem that various adjusted plus/minus stats try to solve with fancy statistics. Those are probably too complicated to include in BBGM, although BBGM does include the box plus/minus (BPM) stat which is a simpler approximation of adjusted plus/minus.


Game simulation settings for all games

There have been settings in Basketball GM to let you make leaguewide changes to game simulation - like changing the pace of games, the number of three pointers, etc. Now that same feature is here for the other sports too!

Want to simulate 1930s football, before they really figured out this newfangled "forward pass" thing? Turn up interceptions, and turn down the passing rate, yards, and completion factors.

Or 1980s hockey with crazy scoring? Turn up pace and turn down saves.

Or baseball in the dead-ball era? Turn down power and fly balls.

Or whatever you want. It's your league!

Here's what the settings look like in Football GM: