A member of our Discord flagged something that felt off: post players at smaller schools, especially in 3A, were running way too big. That one report kicked off a much bigger investigation than expected, and the game will be better for it.
The bug
My first instinct was that it was just randomness working against a few conferences. It wasn't. A while back I'd added a rule so no player under 6'3" could be listed as a post player, since anything shorter didn't make sense for that role. The problem is that 6'3" sat almost exactly at the peak of the height curve itself. Instead of trimming off a few outliers, that rule was quietly throwing out roughly the bottom half of every post player generated, leaving only the taller half behind. 3A was supposed to average around 6'4" at post, but was actually landing closer to 6'5" or 6'6", with nearly 15 percent of posts standing 6'8" or taller. 4A was worse, over 22 percent.
Fixing it properly
Rather than patch around the symptom, the whole system is being rebuilt. Wings needed the same treatment, since the same skew was quietly inflating their heights too. Both positions now use true bell curves centered on their intended median instead of skewed distributions that piled players toward the top end.
Position
Old rate of 6'6"+
New rate of 6'6"+
Wing
32%
1.3%
Post
78.2%
42.6%
Varsity roster average
4.1 players (29%)
1.35 players (9.6%)
That's roughly a two thirds reduction in oversized players league wide, while still leaving posts as the position where real height legitimately clusters. A pool of true centers and power forwards should run tall. It shouldn't be nearly every player at the position.
Division aware heights
The rebuild above treated every division the same, but that's not how real high school basketball works. A 5A program draws from a much deeper talent pool than a 2A school, and taller kids show up more often at that level. Height generation now factors in division:
Division
Guard avg
Wing avg
Post avg
2A
5'11"
6'1"
6'3"
3A
5'11"
6'2"
6'4"
4A
5'11"
6'2"
6'5"
5A
5'11"
6'3"
6'6"
Guard heights stay flat across every division, since that's true to real life. Wings and posts now shift slightly by classification, giving a realistic spread from top to bottom while still leaving room for a 2A team to occasionally roll a legit tall kid, just less often than a 5A program would.
Post is now earned, not assigned
One more gap came out of testing this: a player could still get labeled a post player even at a height that made no basketball sense, since nothing was actually stopping it. That's fixed now with a hard rule. No player under 6'3" can be a post, period. If a player rolls short for that role, they're reassigned to wing or guard with a fresh height that fits, instead of getting forced into a post label that never made sense.
This also means rosters are no longer locked into a fixed post count. A team can now legitimately run out with only one true post on varsity, or even none, exactly like a real small school team might, while JV can turn up posts that varsity didn't, or vice versa. It's a small change, but it makes team building feel less templated and more like real high school programs, where size isn't guaranteed just because a slot exists.
This is what Early Access is for. One person paying close attention to their own conference caught a flaw that touched every single roster in the game. That's the whole point of building this alongside a community instead of in isolation.
If something in your league feels off, even if you can't explain exactly why, that instinct is worth sharing. Come talk basketball, report bugs, or just tell me what's bugging you about your team: https://discord.gg/T2KhFgENN
Height changes will not affect your current roster.
We tested this thoroughly: every player already on your team keeps their exact height — nothing gets rerolled when you load an existing save. The new height distribution only applies to players generated going forward (new saves, and future incoming freshman classes in saves you're already playing).