Built-in teams update: new teams, secondary logos, and more
There's a few new things related to the built-in teams:
8 new teams. Some are now in default leagues, others are available as expansion teams or when customizing a league.
3 old teams moved to new cities, to better fit their team names and make way for some of the new teams.
3 old teams got new logos.
Most teams now have a more compact secondary/small logo that is used in places where there is not much space. For some teams, their old logo is now their small logo.
The AI now considers roster fit when making free agent signings and draft picks
This update is only for Football GM and ZenGM Hockey. I didn't do it yet for Basketball GM because position matters much less in basketball, so whatever minimal gain might be achieved from this new feature would not be worth the risk of changing the AI.
But for football and hockey, it's very important for the AI to know that you can only play one quarterback/goalie at a time, so it doesn't make much sense to sign 2 (or more!) to big contracts.
Previously this was somewhat of a problem, because AI roster moves were made by looking at how good a player was, regardless of the current roster. (Okay, that's not quite true, there was some ad hoc code to make it not do completely crazy things, but it didn't work that well.)
As an example, I simmed 100 seasons in Football GM to see how often a top 10 QB in the league spent a season as a backup. That happened for 77 seasons before this update. But after this update, it happened for only 18 seasons. That's a pretty decent improvement, I think.
But how does it work?
Trade finding algorithm improvements
This is about the trade finding algorithm, not the trade AI itself. There are no changes to which trades will be accepted or rejected. But there are some changes to the algorithm powering the trading block, AI-AI trades, and the "What would make this deal work?" button.
The end result of these changes is that the AI is more upfront and consistent. It gives you its best proposal right away, rather than trying to be cute and maybe sometimes not tell you right away. And when you spam that "What would make this deal work?" button, it will keep giving you the same answer unless something has changed.
I think it feels a lot more reasonable this way, and I hope you agree. Read on for all the details.
Several Football GM updates, including improved player and team ovr formulas
Football GM has long deserved some updates to the core of the game. Here are some.
First, and most importantly, there are new player ovr formulas for all positions. In my opinion, this was the biggest problem with FBGM. Too many players would consistently overperform or underperform their ovr rating, which made the game feel random and unpredicatable. That's especially bad in a football game, where the small number of games per season and single elimination playoffs already makes it pretty unpredictable.
Real players leagues now include contract history and retired jersey numbers
In last week's blog post about historical stats, I mentioned a few things that were missing. Today a couple of those are fixed.
Contract history for all players is now included in real players leagues. There are a couple caveats. It only goes back to 1985, because that's all the data I have. And the contracts are "BBGM-ified" - adjacent years are merged together to all be exactly the same amount, because BBGM does not support contracts that change over time. I'm not sure if this is actually a good idea... it is needed for the current contract, due to the aforementioned limitation in BBGM, but in theory I could instead import contract history that changes overtime.
Retired jersey numbers are also now included, at least for franchises with retired jersey numbers. The caveat here is that it's only retired jerseys for actual players. Some teams have retired jersey numbers for other people like coaches and announcers, and I could add those too. It's just that I don't have data on when those retirements happened. So for instance, if you start a league in 2000, I need to include only retired jerseys from up to 2000. For players I can do that by looking at when they retired. But I don't have that data for non-players, and I didn't want to go through and try to manually figure it out.
Despite the caveats, I hope these new features make real players mode even more immersive than it already is :)
Historical stats in real players leagues
It's almost a year since real players were added to Basketball GM. Today there is another big improvement to this feature: historical stats.
When starting a new realy players league, there is a new Historical Stats setting:

The default on PCs is All seasons, active and Hall of Fame players only. That means you'll see the full career stats up to the current season for all active players, and the Hall of Fame will be fully populated as well.
The default on mobile is None which is the same as it used to be. This is just because loading the stats uses a fair amount of bandwidth and disk space, so I'm wary of making it the default on mobile.
But the really cool option is All seasons, teams, and players. That gives you the full league history back to 1947, including:
All league settings can be edited before creating a new league
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:
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".
Some settings are now available to change outside of God Mode only prior to creating a league.
New position formula for Basketball GM
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.
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?
Draft order now matches the NFL/NHL in Football GM and ZenGM Hockey
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: