No more hard cutoff in three point shooting tendency

August 11, 2021-

You may have noticed a funny thing about the number of three pointers that certain players take. There was a hard cutoff at about 35 in the 3 point rating. Slightly above that cutoff and players would take a few three pointers per game. Slightly below and players would take none. This has never made any sense.

It was particularly annoying for players barely above the cutoff, since they are bad three point shooters, so you don't actually want them taking a bunch of threes. That puts you in a situation where you may be hoping a player's three point rating does not improve, so they can stay below the cutoff rather than chucking up a bunch of inefficient shots.

Now, finally, that hard cutoff is gone. The number of three point shots is now continuous. Players with ratings from 35-45 will shoot fewer three pointers (most noticeable towards the lower end of that range), and players with ratings below 35 will shoot more. Not a lot, but more than the 0 they shot previously.

Some people may think a better solution would be a more fundamental change in how shot selection works, and they might be right. The advantage of what I did here is that it's a quick little fix that mostly leaves the game alone, except to address this one annoying issue.


Improved identification of rookie contracts in real players leagues

The new player mood system introduced last year is working pretty well overall, but there are some small issues with it. One is related to a mood bonus given to players on rookie contracts, where it says "Eager to sign first non-rookie contract" and gives a big +8 bonus. This gives BBGM something like the NBA's restricted free agency, because it results in your drafted players being less likely to refuse to re-sign. (For FBGM and ZGMH, it only applies if you diasble the hard cap setting.)

Some people have noticed that the bonus was not correctly applied for some real players in historical leagues. Why? Because it was kind of hacky code. It identified "rookie contract" by comparing a player's draft year, the expiration year of their contract, and the length of a default rookie contract for their draft round.

This works fine for random players, since their rookie contracts all are generated by the game and all follow that same formula for length. But it's a bit tricky for real players leagues, or for custom league files, because they may have different length rookie contracts.

Today I have changed how rookie contracts are stored in the game. There is now an explicit rookie flag in the contract, so a player contract looks like this internally if it is a rookie contract:

Read more...


Randomize built-in teams when starting a new random players league

There are now 50 different built-in teams. But when starting a new random players league, you always get the same 30, unless you manually select some other teams.

Now in version 2021.07.11.0740, there is an easy way to randomize the teams in your league, and it's pretty cool how it works. Thank you nicidob for the idea!

Access it by clicking "Customize" next to the list of teams when creating a new random players league:

Read more...


Players can now play through minor injuries

May 31, 2021-

New feature in version 2021.05.31.0967 - players can now play through minor injuries.

You can control what your team does with these new sliders on the roster page:

Screenshot of the Play Through Injuries sliders

Read more...


Automatic ticket prices

Over at zengm.com it says:

Simulation games need depth, but they need the right amount of depth with a UI to help you make sense of it. We seek to avoid mandatory micromanagement as much as possible. Video games should be fun, not tedious.

One area where my games have failed in that regard is finances. Finances can be optimized through micromanagement, and that sucks. Today one area of finance micromanagement has been removed: ticket prices.

Read more...


Built-in teams update: new teams, secondary logos, and more

May 17, 2021-

There's a few new things related to the built-in teams:

Read more...


The AI now considers roster fit when making free agent signings and draft picks

May 8, 2021-

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?

Read more...


Trade finding algorithm improvements

May 3, 2021-

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.

Read more...


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.

Read more...


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 :)