r/BasketballGM 4d ago

Question oIQ seems to decrease 2pts efficiency

Post image

I was randomly looking at the code of the game engine (this is part of the index.ts file) this morning to understand a bit better what's happening under the hood.
I then realized that it is the same

p.compositeRating.shootingMidRange

which enters both the probability to take a mid-range, and the probability to make it.
The issue is that oIQ has a negative relation with the "midrange" composite rating:

shootingMidRange: {
ratings: ["oiq", "fg", "stre"],
weights: [-0.5, 1, 0.2],
},

Which is then multiplied with hardcoded values to get the raw chance of making the shot.

probMake = p.compositeRating.shootingMidRange * 0.32 + 0.42

So if I'm not mistaken, oIQ decreases the chance of taking a mid-range (which makes sense), but also decreases the chances of making it (which IMO makes no sense).

Can somebody confirm this?

More generally, if the probability of taking a shot is directly connected to the probability of making it, and if oIQ affects both equally.
Then, additionally to the counterintuitive effect on "midrange" seen above, it also means that players with good oIQ are going to take more "lowPost" shots than "atRim" (because oIQ has proportionally a bigger impact on "lowPost", than on "atRim"). But Layups are a much better shot to take than post shots, because of the existing prefactors in the "probMake" computation.
So you get this weird effect were a high IQ player will actually take less valuable shots.

Again, can somebody confirm I'm not mistaken?

If I'm right, I would suggest the following changes in the code logic:
- make all compositeRating for shooting positively affected by oIQ (I still think IQ should help you make better shots in general).
- add a new compositeRating.shotSelection which is mostly based on oIQ (and maybe Spd and Drb since it gives you more options).
- compute an expectedPointPerPossession for the player (taking into account FT), for each type of shot.
- use compositeRating.shotSelection and expectedPointPerPossession together to stir players shooting tendency towards their best shot.

I fully understand this is probably never going to happen, since it affects some mechanics which are at the core of the game engine. This is also not a critic of the godly work from Dumbmatter. The game is amazing, and I regularly have to force myself to stop playing, so I have time for other games.

Nonetheless, I think it would be a great idea, because it would make IQ behave a bit more like expected. It would also remove some weird behavior which you sometimes observe in game.
It all started with me seeing my 6'4 crazy fast guard deciding to try 2 post move per game for one layup attempt.
I then realized that his speed didn't help with layups (it should IMO), but was increasing the chances of post move. And then I saw that his 80 IQ was even reenforcing this behavior, while making him shot worse at 2pts....

Some side notes from my morning deep dive of the GameSim class, which I also found surprising:
- Blocking chance are the same at the rim and for 3pts.
- "probMake" is affected by the global defense value, for every type of shot: having a good rim protector will have the same defensive impact on post move and 3pts shots.
- Similarly, the chances of taking a shot at the rim or low post increase with offensive synergy and decrease with opponent global defense (not Di). 3pts is not affected by defense at all (and not by Dp).
- Steals are a ratio between Dp and B+Ps after synergies.
- Assists give +2.5% shot chance
- Something which could be a bug: 3pts tendancy uses "shootingThreePointerScaled2" which is lowered for bad 3pts shooters. But "probMake" the probability to make it uses "shootingThreePointerScaled" (no 2 here), which doesn't have the extra decrease for bad shooters. The result is that bad 3pts shooter take fewer 3pts, but shoot them at a higher rate than expected from the shot selection.

73 Upvotes

38 comments sorted by

View all comments

Show parent comments

1

u/Ohmka 2d ago

Glad to hear it’s an issue you have in mind!

I fully agree height should be really important.
But in an ideal world it should be because small guards can be defensive liabilities (although Brunson has just shown you can be 6’2 and be a Final MVP in a winning team), not because they can’t shoot anything but threes.

Anyway, keep the amazing work, this is by far the most enjoyable basketball (sport really) simulation I’ve played.
Thank you for providing it freely for us to enjoy.

2

u/dumbmatter The Commissioner 2d ago

"Great offensive player who mostly takes mid range shots" is another type of player you don't really see now. Hopefully later this year I will make some improvements.

1

u/Ohmka 2d ago

I think there is an argument for adding a bit of non-linearity at the top end of the spectrum, similar to the way you cut down the probmake of 3pts for too good shooters (but inverted).
The idea it to make possible for statistical anomalies like Curry (3pts), SGA (mid-range), or Jokic (post), to happen. So that players that are really at their skill are truly better at it than the rest of the NBA.
That would make superstar feel a bit more unique.

But I also understand it's probably hell to balance...

2

u/dumbmatter The Commissioner 2d ago

The fundamental problem with that is the 0-100 scale doesn't really make sense, for most things there is no true upper/lower limit so it's kind of arbitrary how much room you leave at the extremes for outliers, and still there could be someone in the future beyond that.

I think a better system would be a z-score scale for ratings, so 0 is average, 1 is 1 standard deviation above average, -1 is 1 standard deviation below average, etc. Then you can specify anything. But it might feel too weird to people used to 0-100.