Basketball GM supports custom roster files that define the players to be used in a new league.
Getting a Custom Roster File
There are two sources of roster files:
- Download: If someone has made a custom roster file and put it up online, you can download it and use it. You might find some on Reddit.
- Export: From within any league, you can export the rosters from any season (current or past) by clicking "Export Rosters" at the bottom of the league menu on the left.
It is also easy to edit these roster files however you want, as is described below.
Using a custom roster file
When you are creating a new league, change the rosters from "Random Players" to "Upload Custom Rosters". Then, select your desired roster file.
Editing a Custom Roster File
A custom roster file is simply a JSON file containing a list of players. You can add/remove/edit any part of it.
One way to do this is to look at the structure of an exported roster file and base your new file off that. This will allow you to see all of the required and optional data you can store in roster files.
Another way to make roster files is to use this cool spreadsheet template created by MFazio23.
Many fields in the roster files are optional. The only required ones are shown below. Any other fields you see in an exported or custom roster file are purely optional.
{
"startingSeason": 2013,
"players": [
{
"name": "Andrew Phillips",
"tid": 0,
"ratings": [
{
"hgt": 20,
"stre": 0,
"spd": 85,
"jmp": 50,
"endu": 55,
"ins": 68,
"dnk": 45,
"ft": 57,
"fg": 64,
"tp": 16,
"blk": 49,
"stl": 37,
"drb": 75,
"pss": 76,
"reb": 39,
"pot": 49
}
]
},
{
"name": "Heriberto Braman",
"tid": 0,
"ratings": [
{
"hgt": 27,
"stre": 34,
"spd": 85,
"jmp": 55,
"endu": 25,
"ins": 46,
"dnk": 42,
"ft": 42,
"fg": 54,
"tp": 72,
"blk": 48,
"stl": 40,
"drb": 72,
"pss": 75,
"reb": 44,
"pot": 52
}
]
}
]
}
A list of things you should know when making a roster file:
- tid is the team ID number, ranging from 0 to N in alphabetical order. -1 is for free agents.
- In the example above, there are only two players defined. If your file doesn't include at least 10 players on each team, then bad things will happen when you try to use it.
- You can also create draft prospects for draft classes up to three years in the future. For the first draft class, use a team ID of -2. For the next year's use -4. For the third year's, use -5. If a draft class is not included or has less than 70 players in it, then random players will be automatically generated to fill up the rest of the draft class.
- Ratings should be on a scale from 0 to 100 with a mean of about 50 and about half of the players between 35 and 65. Descriptions of rating categories:
- "hgt": height, which factors into pretty much everything - this is meant to also reflect things like standing reach and wingspan, and it is used in game simulations rather than the player's "true" height in feet/inches
- "stre": strength, which influences defense, rebounding, and low post scoring
- "spd": speed, which influences ball handling, fast breaking, and defense
- "jmp": jumping, which influences finishing at the rim, rebounding, blocking shots, and defense
- "endu": endurance, which governs how fast a player's skills degrade as he gets tired
- "ins": low post scoring
- "dnk": dunking/layups
- "ft": free throw shooting
- "fg": 2 point jump shot ability
- "tp": 3 point shooting
- "blk": shot blocking (also influences overall defense by making the offensive players more wary of attacking)
- "stl": stealing (also influences overall defense by making the offensive players more wary of attacking)
- "drb": dribbling (also influences passing, since you can pass easier if you're not worried about losing the ball)
- "pss": passing
- "reb": rebounding
- "pot": estimate of the player's potential future overall rating
- You can optionally include a URL for an image to be used instead of a randomly-generated face by putting "imgURL": "http://www.example.com/img.jpg" in the root of a player object.
You can also specify custom teams by doing something like this:
{
"startingSeason": 2013,
"players": [
...
],
"teams": [
{
"tid": 0,
"cid": 0,
"did", 0,
"region": "Atlanta",
"name": "Herons",
"abbrev": "ATL",
"pop": 5.4
},
...
]
}
The contents of each team object is as follows. Note that imgURL is optional.
- "tid": team ID number (from 0 to N-1 so there are N teams in total, usually N is 30)
- "cid": conference ID number, either 0 (Eastern) or 1 (Western)
- "did": division ID number, from 0 to 5 for the Atlantic, Central, Southeast, Southwest, Northwest, and Pacific divisions, respectively
- "region": team region/city
- "name": team name
- "abbrev": team abbreviation, typically 3 upper case letters like ATL for Atlanta
- "pop": population of the region, in millions of people
- "imgURL": URL for a 120x120 image to be displayed on the roster page for a team (optional)
The game works best with 30 teams, 15 in each conference, and 5 in each division. If you add more teams, it will still work, but generated schedules (and maybe some other aspects of the game) will be less balanced.