Game Attributes Customization

If you haven’t already, first read the customization overview.

“Game Attributes” refers to some high-level variables that define the state of your game. When making a League File, don’t have to specify them. Any you leave out will just get their default values. Some attributes that might be worth playing with are described here:

{
    "version": 24,
    "gameAttributes": {
        {
            "key": "userTid",
            "value": 15
        },
        {
            "key": "phase",
            "value": 0
        },
        {
            "key": "daysLeft",
            "value": 0
        },
        {
            "key": "ownerMood",
            "value": {
                wins: 0,
                playoffs: 0,
                money: 0
            }
        },
        {
            "key": "season",
            "value": 2013
        },
        {
            "key": "startingSeason",
            "value": 2013
        },
        {
            "key": "gracePeriodEnd",
            "value": 2015
        },
        {
            "key": "numPlayoffRounds",
            "value": 4
        },
        {
            "key": "confs",
            "value": [
                {"cid": 0, "name": "Eastern Conference"},
                {"cid": 1, "name": "Western Conference"}
            ]
        },
        {
            "key": "divs",
            "value": [
                {"did": 0, "cid": 0, "name": "Atlantic"},
                {"did": 1, "cid": 0, "name": "Central"},
                {"did": 2, "cid": 0, "name": "Southeast"},
                {"did": 3, "cid": 1, "name": "Southwest"},
                {"did": 4, "cid": 1, "name": "Northwest"},
                {"did": 5, "cid": 1, "name": "Pacific"}
            ]
        }
    }
}

userTid is the ID number of the team you are managing, from 0 to 30. Setting it here will make it the default for new leagues created with this League File, but users can still change it if they want.

phase is the “phase” of the game, set by one of the following numbers:

So by setting the phase, you can pick when your game starts. So if you want to create a League File that starts with the draft, you can do it!

daysLeft only has an effect if you set your phase to 8 (free agency). It defines the number of days left before the preseason starts.

The values in ownerMood define how the owner feels about you. Positive numbers are good (max for each is 1), negative numbers are bad. If the sum ever drops below -1, you are fired.

numPlayoffRounds sets the number of playoff rounds, which also determines the number of playoff teams (2numPlayoffRounds). The default is 4 rounds and 16 teams. If you set this so high that you have more playoff spots than teams, it won’t work.

Conferences and Divisions

The confs and divs properties let you change the conferences and divisions in the league. The default ones are shown above. You can have any number of conferences and divisions except 0. Things to remember:

  1. If you change the number of conferences or divisions, you must specify the teams as well, otherwise the game won’t know what teams to put in what division.
  2. The id properties cid and did must start at 0 and increase without gaps, same as tid for teams.
  3. If the number of conferences is something besides 2, then playoff seeding will be based on the top records in the entire league, because otherwise it’s not clear how it would work (imagine a 16 team playoff picked from 3 conferences).

As an example, try this league file with 3 conferences and 12 teams.

Confusing Season Stuff

The last three attributes listed above are related to the season. season is the current season. startingSeason is the first season played in this league. gracePeriodEnd is the first season you can get fired after. If you set one of these, you should set all of them. You should also specify seasons for any stats, ratings, and attributes for your players and teams.

However, there is a shortcut to make things easier. Move startingSeason up to the root of the League File (at the same level as gameAttributes) and it will be used to automatically set all of the season variables everywhere. Or just leave startingSeason and all the other seasons out completely and the default value will be used.

Player Names

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”. For this reason, you can specify the first and last names you want randomly generated players to have in your league.

Here is an example. Try using it as the League File when you start a new league. Every player will have a first and last name from a US president. First and last names are handled independently, so you can get “Barack Bush”. The format of the names data is like this:

{
    "gameAttributes": [
        {
            "key": "names",
            "value": {
                "first": {
                    "USA": [
                        ["George", 1],
                        ["John", 2],
                        ["Thomas", 3]
                    ],
                    "Canada": [
                        ["Bob", 1],
                        ["Aaron", 2],
                        ["Chad", 3]
                    ]
                },
                "last": {
                    "USA": [
                        ["Washington", 1],
                        ["Adams", 2],
                        ["Jefferson", 3]
                    ],
                    "Canada": [
                        ["Smith", 1],
                        ["Jones", 2],
                        ["Anderson", 3]
                    ]
                }
            }
        }
    ]
}

You can see how first and last names are defined separately. Each name also has a number associated with it. The number is the relative cumulative frequency. That sounds much more confusing than it is. Basically the purpose is to define the frequency of names, like you might want “John” to be more common than “Ebenezer”. The gap between numbers represents the relative frequency of a name. In this case, all the gaps are 1, so all the names appear with equal frequency.

Another thing to keep in mind – the relative cumulative frequencies must always be increasing or bad things will happen. Besides that, make them whatever you want. Scale doesn’t matter. It would work just the same if the numbers above were 0.1, 0.2, and 0.3.