Previously, player names in Basketball GM were generated based on a list of name frequencies in the US in 1990 published by the US Census Bureau. In some ways this was awesome - it was a huge list of names, so there was a lot of variety. However the US population in 1990 does not exactly correspond to global basketball talent. There should be more African American names and there should be international names from basketball-loving countries.
I never fixed this problem because there wasn't any data I could find that was nearly as good as the census data I used previously. But now I think I have a better solution: DraftExpress. DraftExpress is a website about the NBA draft. It has player profiles for basically every NBA prospect in recent history, even fringe guys like minor college players and roleplayers in overseas leagues. That's a pretty good sample of the distribution of basketball talent, right? Maybe not perfect, but probably good enough to be better than the previous names list.
So I used my trusty wget to scrape draftexpress.com, and then I wrote a script to parse names and countries for all players in their database. After a little work to clean up the data (splitting names into first and last names while handling extra spaces like Nando De Colo; fixing typos in country names), I filtered the list of countries to get rid of those with less than 5 names because they would just become too repetitive. So sorry Suriname, you and your 2 names are gone. That left me with 28,377 names from 85 countries. To generate a player, the game randomly picks a country and then randomly picks first and last names from that country.
Particularly cool things about the new names:
- No more leagues dominated entirely by people with mid 20th century white names.
- Increased realism, as you see a good number of players from expected countries like Spain, Lithuania, etc.
- Every now and then, you'll have a Brazilian player with no last name (like Nene and many soccer stars).
- Rarely, there will be players from tiny countries. Like if you play 5000 seasons you might see an Icelandic dude named Elvar Vilhjalmsson dominating shit, how cool will that be?
This is live now, even in existing leagues new draft prospects will be generated with this new naming method. And you can see the countries of all the players in your league by going to the Player Ratings page.
The default teams now have logos! Thank you Elliott Strauss for all your hard work!
Currently you'll only see the logos on the roster page, which doesn't really do them justice. Eventually I will do a redesign to better utilize them. In the mean time, check them out here in their full glory:
Basketball GM has long supported a "Shuffle Rosters" option when you start a new league from a file. However it kind of sucked, because it would randomly shuffle players on all teams along with free agents, often leaving tons of really good players as free agents.
Now, it will only shuffle players actually signed to teams, leaving free agents alone. This is possibly still not ideal -- maybe it would be better to shuffle in comparably rated free agents while not changing the overall talent distribution -- but it's a hell of a lot better than it used to be.
I tested it using this user-made NBA roster file, and the Warriors got what they deserved to balance off the universe. Their best player was Jameer Nelson and they wound up with the worst record in the league.
Performance in leagues with many seasons has long been an embarrassment to me. It should be faster. And as of today, it's at least a little better. Game simulation is now a little slower in new leagues but significantly faster in leagues with many seasons. Although it might be about 5% slower in a new league, the performance improvements are pretty big in old leagues. For example, leagues with 50 seasons are about 25% faster. And that number keeps getting bigger with more seasons.
Now I'm not claiming all performance problems are solved. It still gets slower the longer you play, and that still sucks. But the rate at which it gets slower has just been decreased a bit.
At the God Mode screen (accessible from the Tools menu), there are now 10 new options you can use to customize your league:
- Enable/disable injuries
- Numer of games per season
- Quarter length
- Minimum roster size
- Salary cap
- Minimum payroll
- Luxury tax threshold
- Luxury tax
- Minimum contract
- Maximum contract
Previously these things were all impossible (or very difficult) to change.
The caveat is, the AI might not respond well if you change some of these values drastically, particularly the financial ones. But hopefully it's still better than nothing. Let me know how you like it!
Previously, injuries in Basketball GM had no lasting effects. Once a player healed, he was good as new. In the real world, we know that's not true.
So now, in Basketball GM, serious injuries (over 25 games) can result in decreased athleticism, depending on the severity of the injury and some luck. As an example, someone who gets a 100 game injury (probably a torn ACL) will have a 50% chance of making a complete recovery, but also a 67% chance of losing between 0 and 10 points of his speed, jumping, and endurance ratings, and also a very small chance of a much larger catastrophic decrease. Each of those losses is independent, so someone might lose 1 speed, 9 jumping, and 3 endurance. Let me know if you think these numbers are too big or too small.
Just 9 months ago, Basketball GM crossed the one million seasons played threshold. Today the two millionth season of Basketball GM was played!
Here are some interesting statistics at this milestone:
- Total time played: 66,427,704 minutes, which equals 1,107,128 hours or 46,130 days or 126 years!!
- Highest season played to: 3690 - yes, that is 1675 seasons in the same league
- Average number of seasons per league: 2.83 - this number is so low because a lot of leagues are abandoned before a whole season is played
So it took 2 years for the first million, 9 months for the second million... how long for the next million?
As Jalen Rose likes to say, positions were just created so a novice can follow the game. For that reason, positions don't actually mean anything in Basketball GM. They give you an idea about what a player can do (PGs can handle the ball and pass, Cs are big guys who play inside, ...). But there is no rigid position system. You don't need to start exactly one PG, SG, SF, PF, and C. You just need to start guys with all the skills needed to play winning basketball.
However, the positions setting algorithm has long been an embarrassment. That is now fixed. You should see more reasonable position labels for your players, and positions change over time as players age and their skillsets change. You can see the past positions for a player by looking in the ratings table on the overall Player Ratings page or on individual player pages.
(One exception: if you're using a custom roster you downloaded from somewhere, player positions won't change over time, because that seems to create too much confusion if the custom roster has weird player ratings in it.)
Similarly, the displayed heights and weights of players also don't really matter (the hgt rating does, though) and they were kind of weird as well. They should be a little less weird now.
All of this should have very little impact on gameplay, but should make it look slightly more realistic, which is important.
We're all NBA fans here, right? You might have noticed that the playoffs are starting soon. Brackets are super fun for college basketball, so why not the NBA too?
If you want to give it a shot, join my group at NBA Bracketology. To make it interesting, I'll give $20 to the winner. No entry fee. It's free money! Come on, fill out a bracket.
By default, Basketball GM uses random American names taken from the US Census. However if you’re making a custom league file designed to represent a basketball league in another country, it is annoying when the new players generated in your league all have names like "John Smith".
Now, when creating a League File, you have the ability to define the list of names used for randomly generated players. For more info, check out the documentation.