Several small Football GM stat/simulation improvements
Simulated sports can never be exactly the same as real sports, but the closer it gets, the better. So when you notice something weird in the stats or in the play-by-play log, please let me know. That's how I found out about all these little issues in Football GM that I just fixed in version 2023.06.21.1277:
The permanent pulled goalie bug
There are plenty of bugs in my game. Usually it's something like "when I click on X it shows an error message" or "when I change two settings at the same time, it breaks" or "the simulation is doing really stupid stuff". Usually bugs are not very fun, they're just annoying. Maybe the funniest bug previously was when the effect of OL was reversed in Football GM, so playing a bunch of kickers at OL made your team dominate. The problem was that, in addition to being funny, it was also a game-breaking bug. Too serious to truly be funny.
Now I think I have seen (and fixed!) a funnier bug. This is a bug in ZenGM Hockey that only rarely happens. It's so rare that in the 2+ years ZenGM Hockey has existed, nobody ever noticed it. But recently it was noticed for the first time... when it happened with 8 seconds left in game 7 of the conference finals in a multiplayer league!
Finances revamp
The finances system in Basketball GM (and the other games) has been basically unchanged for a long time. I think there are various parts of it that don't really make much sense, or aren't very fun, or are exploitable, or are confusing due to poor UI. So I set out to fix all of those problems at once. The end result is not actually that different in terms of gameplay, but I think it does make things better in all of the aforementioned areas.
First, let me go over how the current finance system works and what I think its main problems are.
Group regular season schedule into MLB-like 3/4 game series
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
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
Inspired by basketball-reference.com, 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
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
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
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.