Rookie
|
Porzingod's In-Depth Sim Engine Analysis: Part I
This guide will explain in great detail how NBA 2k15's comes up with stats in simulated games in the MyGM and MyLeague modes. All information herein was gleaned from empirical research over many simulated seasons, using the PC version of 2k15 with the latest updates and official 2k roster. It will explain how the engine uses player ratings and tendencies to come up with their stats, and where possible, how you can modify these values so that the stats produced are realistic/accurate to actual NBA stats.
Whenever I get a new 2k game the first thing I do is sim through a season a few times to see how close players' stats are to real-life stats. They are usually off pretty significantly in most areas, and 2k15 is unfortunately no exception. While the rosters seem to be greatly improved this year in terms of completeness, the player ratings in the areas that produce stats (i.e. rebounds, assists) either do not follow a consistent scale, or do not follow the same scale that the simulation engine uses.
If you sim a season with the official 2k roster the following issues should jump out immediately:
-Rebound stats are simply way off. Steph Curry averages around 7-8 RPG (was under 5 in real life) while the NBA's leading rebounder DeAndre Jordan averages under 12 (averaged 15 in real life). In general there is far too little separation between truly elite rebounders like Jordan and bigs like Brook Lopez or Marc Gasol who are just decent rebounders. Guards also generally get too many rebounds. This is mostly fixable with more accurate ratings.
-Offensive rebounds too low for the best rebounders, too high for the worst. Almost no player will get less than 1 offensive rebound per 36 minutes, while in the NBA this is extremely common for guards. By the same token, the top offensive rebounders don't get close to what they should. Andre Drummond pulled down 6 offensive rebounds per 36 minutes last season. It's rare for any player in 2k to be above 4, even with maxed ratings. Likewise, defensive rebounds are slightly too abundant, but both of these flaws kind of compensate for each other so decently accurate total rebounding stats are achievable.
-Assists are fairly accurate for guards, and increasingly inaccurate for the bigger positions. PF's and C's assist numbers will be too low, usually by 50% or so. This is fixable with ratings.
-Three point percentage is too low across the entire league. This is mainly due to the global -8 point adjustment in shooting ratings that took place in one of the official roster updates. The simulation engine was not changed to reflect this, so pretty much every team shoots around 2-4% worse than they ought to. Also fixable with ratings.
-Blocked shots are way too low for the best shot blockers. It seems completely impossible, generally, for anyone to average over 2.5 bpg or so in reasonable minutes. Often times a guy with maxed out block ratings will come out with like 1.8 bpg. In real life the league leader usually has 3 bpg or more. Unfortunately this cannot be fixed in any way. This issue has been present since at least NBA 2k12, so I wouldn't bet on it being fixed in next year's game.
For part I of this guide I will cover assists, rebounds, blocks, and steals- the easier stuff. I also have comprehensive data for the way the engine handles shooting stats/tendencies, but that stuff gets much more complicated, so i'll post those later if enough people are interested. Now, on to the individual stats!
ASSISTS:
Assists use only two ratings: Passing Accuracy and Passing Vision. The player development menu says that Passing IQ affects assists, and you would think it does, but extensive testing shows it to have no effect. For convenience's sake you can average the two and call that a player's PASS rating. For point guards, ratings are fairly accurate- 99 PASS corresponds to around the top-level assist numbers they'll usually get in real life- around 10 assists per 36 minutes. The best stat to use to derive passing ratings is AST% from basketball-reference.com, as it is adjusted for pace. In general, for point guards:
PASS = 1.6 * AST% + 25
Steph Curry last season had 38.6 AST%, so to get accurate assist numbers (around 8.5 per 36 minutes) his Passing Accuracy and Passing Vision should average out to around 87.
Most PG's ratings go roughly by this scale in the official roster (Curry himself is a bit overrated here, probably so they could pump his overall up), and so they are reasonably accurate.
Problems arise with the other positions. 2k's official ratings rate all other players by the same scale as point guards. Blake Griffin for example has 63 PASS in the official roster, which by the PG scale would give him about 5 assists per 36 minutes, an accurate number for him. However, you'll notice that with the official roster he'll usually be under 2.5 APG. This is because the stat simulation engine uses different assist scales for different positions. While 99 PASS corresponds to about 10 assists per 36 minutes for PG's, it produces roughly the following numbers for different positions:
SG: 7 assists per 36 minutes, or 37.5 AST%
SF: 6 assists per 36 minutes, or 30 AST%
PF: 5 assists per 36 minutes, or 25 AST%
C: 4 assists per 35 minutes, or 20 AST%
Now, these scales actually do make a bit of sense. The best passing PF's and C's in history historically have put up around those assist numbers, though the best passing SF's have been a bit higher. The problem is that the roster maker doesn't seem to have been aware of this at all, and so everyone is rated by the PG scale. The effect of this is that great passing bigs get nowhere near the assist numbers they ought to. If you want to get accurate assist numbers for non PG's, the formulas to use are as follows:
Shooting Guards:
PASS = 2 * AST% + 25
Small Forwards:
PASS = 2.5 * AST% + 25
Power Forwards:
PASS = 3 * AST% + 25
Centers:
PASS = 3.75 * AST% + 25
It may seem a bit weird to have, say, Blake Griffin with 99 PASS, but it makes sense when you consider he is one of the best passing PF's of all time.
REBOUNDS:
Here, the issue is simply that the ratings don't follow a consistent scale. Some players are rated accurately, but most starting bigs are rated too high, which makes truly great rebounders like Jordan, Drummond, or Cousins fail to stand out. Guards will tend to get significantly more rebounds than they ought to as well. The only ratings that matter here are OREB and DREB, Box Out has no effect on simulated stats.
It seems the core issue here is that the minimum ratings do not correspond to 0 rebounds in the simulation engine, but 2k seems to rate players as if it does. The best stats to use for rebounds are ORB% and DRB% from basketball-reference.com, as they are adjusted for both pace and minutes. As far as I can tell, a rating of 25 will produce an ORB% of about 1.0 and a DRB% of about 6.0. After extensive testing I've determined the following scales will produce quite accurate rebounding numbers:
OREB = (ORB% - 1) * 4.75 + 25
DREB = (DRB% - 6) * 2.75 + 25
Please note that you will only get accurate rebound stats for individuals players if you adjust their whole team, as there are only so many rebounds to go around.
STEALS:
These aren't all that bad in the official roster, just inconsistent in a lot of cases. One interesting thing to note is that the bottom 25 points of the ratings scale aren't really used here. That is, a 25 rating will produce the same amount of steals as 50. The only thing that matters here is the STEAL rating, Pass Perception does nothing. Best stat to use is STL% from basketball-reference.com.
STEAL = 16.25 * (STL% - 0.5) + 50
BLOCKS
These are fine up until you reach the top level shot blockers, who will have way too few blocks. The league leader in blocks in the NBA is usually around 7-7.5 in BLK% - last season it was Gobert with 7%. The problem is that maxed BLOCK rating produces only about 5.0 BLK%, so the best shot blockers will all underperform. The only rating that matters here is BLOCK, Shot Contest and the various tendencies that sound relevant all do nothing.
BLOCK = BLK% * 15 + 25
So the top 8 shot blockers in the league last year should all be rated 99, and unfortunately the best ones are just going to significantly underperform. Here's hoping 2k16 doesn't have this same issue for the 5th year in a row.
SOME EXAMPLES OF MY SCALES IN ACTION:
To give you an idea of how much these ideas can improve the verisimilitude of stats, here's a comparison of the stats covered in this guide in the official 2k roster vs. a roster using my scales. All stats are on a per-36 minute basis.
ASSISTS
PLAYER REAL NBA Official 2k Porzingod's
S.Curry 8.5 8.9 8.6
B.Griffin 5.4 2.2 5.7
M.Gasol 4.1 2.2 4.6
D.Jordan 0.8 0.3 0.7
D.Cousins 3.8 2.3 3.7
REBOUNDS
PLAYER REAL NBA Official 2k Porzingod's
S.Curry 4.7 6.5 4.5
B.Griffin 7.8 9.1 8.1
M.Gasol 8.4 10.7 9.8
D.Jordan 15.7 12.7 14.4
D.Cousins 13.4 10.5 12.1
Not perfect by any means, but I'd say it's a substantial improvement!
Now this will all probably be just a fart in the wind, but there are any other stat nerds out there who care about these issues, I urge you to make the community's voice heard. Please like this or upvote it or whatever you can do here, and maybe tweet this at some of the folks who could make a difference if you want to see simulated stats be a priority in future versions!
|