The primary purpose of positions in game is to automate lineups/rotations. From a programing perspective, they are definitely required.
A third position largely wouldn't affect the rotations AI.
For example, if we take the Bucks position data from Basketball-Reference.
Brook Lopez: 1,817 minutes (100% Center)
Robin Lopez: 958 minutes (100% Center)
Giannis Antetokounmpo: 1,917 minutes (76% PF, 24% Center)
The MPG modifiers for the Lopez bros are essentially tied to their ability level (OVR). If Robin were a better player, there wouldn't have been as many center minutes available for Giannis.
Now, what would happen if one of these players got hurt? Presuming an extended injury, suddenly Giannis goes from being 75/25 to 50/50. With all the moving parts during a season, it's impractical to go to this method. What if one gets traded? Throw everything out the window at that point. How does the CPU automate this task w/o royally screwing the pooch?
When the AI makes subs in game, I think the perception is it's scanning the roster and picking the best available players at the position. Yet all it's doing is making in-game subs based on a pre-loaded gameplan. The only time it makes an audible is with foul trouble.
I would argue the game's rotation system is what needs the biggest overhaul - it's one area of the game that feels like it's actively getting worse. Like many of 2K's systems, it's built on 1990s era principles. Positions were much stricter, and starters played a ton of minutes (i.e. subs were nowhere near as frequent). It was a far cry from today where Giannis played only 30 MPG and was named MVP.
Comment