Posts tagged "Game Simulation"
There are many ways in which my video games differ from reality. One is fouling in Basketball GM. In real life, everybody knows about foul trouble. If a player gets too many fouls too early, his coach might sub him out. If he stays in the game, he's probably going to try to avoid fouling by being less aggressive on defense. Common sense stuff.
Until today, none of that was in BBGM. Players would play with the same level of aggression regardless of the foul situation, and substitution patterns had nothing to do with fouls. The end result was that foul outs were more common in BBGM than in real life. Especially really early foul outs. It's really frustrating when it's game 7 of the finals and your star decides to foul out in the 2nd quarter while your coach does nothing about it!
Well, that's not going to happen any more, because now BBGM knows about foul trouble.
One frustrating thing about Football GM, both for me and for users of the game, is all the game simluation bugs. There are fewer than there used to be. I try to track them down and fix them when people report them to me. But sometimes, that doesn't work very well.
Like I got a bug report that sometimes the ball carrier would cross the first down line, fumble, the offense recovers the fumble behind the first down line, and yet it still counted as a first down.
I investigated it, found the part of the code that was doing the wrong thing, and... I couldn't fix it. The bug was ultimately caused not by a little typo or mistake, but a fundamental problem in how game simulation worked. Specifically, the problem was that there was no sense of history. All of the "state" of the game (possession, down, distance, score, etc.) was stored just once. As the game progressed, state was updated. But what if you need to go backwards? Like the aforementioned first down line example. Or, even more troubling, penalties. With penalties, there is always the possibility that anything that happens in the game could be reversed. I had some hacky code to handle some of that, but it was limited, mostly by the fundamental problem mentioned above.
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.
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.
I just added a fun new feature to leagues with God Mode enabled. Now you can determine who wins a game before you sim it.
On the Live Sim page you can set the winner of any of today's games:
If you watched the 2020 NBA All-Star Game or The Basketball Tournament, you're familiar with the Elam Ending, an exciting and creative new idea in the basketball world. If not, check out this great introduction by Zach Lowe, which was how I first heard of it a few years ago.
The basic idea is pretty simple. Instead of a game ending when time runs out, have it end when a team hits a target score. But how do you pick the target score, so it doesn't come really early or late? You start a game like normal, play up until you hit some time limit, and then set the target to be "the leading team's score, plus some extra amount". For example, say with 4 minutes left in the 4th quarter in a 93-90 game, suddenly the clock disappears and it becomes "first to 101 wins".
There's a lot of advantages to this system. No parade of free throws as the losing team fouls to catch up - with the Elam Ending, fouls never help you. No endless timeouts to save precious seconds on the clock - with the Elam Ending, there is no clock. No boring ending with the winning team just trying to run out the clock - with the Elam Ending, you can't win by doing nothing, you need to hit that target score.
It's such a clear and obvious improvement that it went from some random guy's crazy idea to the NBA All-Star Game in a matter of years. And now it's reached yet another milestone: the Elam Ending is in Basketball GM!
One of the fun things about Basketball GM is that you can view the entire source code to the game, which opens up a level of modding and customization that is matched by few other games. Furthermore, you can even get your improvements included in the game itself. As you can see, that has resulted in a nice trickle of improvements from the community, including a recent PR from icedjuro which added the annual ratings change to player pages:
Update 2019-11-13 - Everything in this blog post is now officially released! The original blog post follows:
I just updated the beta site yet again. Most of the game simulation and stat changes were already released there, I just hadn't written a blog post about it. But now that I'm also making some minor changes to the ovr formula, I figured I should blog too.
So here are all the changes in the beta: