Frequently Asked Questions
Basketball GM stores all game data on your computer, in your browser profile. This means that you can't play one league on multiple devices unless you export it (from the Tools menu) and then create a new league with that file. So first, make sure you're using the same browser on the same computer. This is true even if you're logged into an account - league data is currently stored only locally, not in your account.
If you are using the same browser on the same computer and your leagues are missing, the game data has probably been deleted. This can happen in places like schools and libraries that set browsers to automatically delete everything when they are closed. It also happens if you manually delete your browser data. For example, in Chrome, if you go to More tools > Clear browsing data... > Cookies and other site data, that will delete all your Basketball GM data. This is true even if you tell it to only delete data from today - if you played Basketball GM at all today, it will completely delete all your leagues.
Browsers may also delete data if disk space is running low. I've never seen this happen on a desktop/laptop, but it does sometimes happen on mobile browsers, especially on iPhones. To minimize the chance of this happening, you can:
- Go to the global settings page and enable Persistent Storage.
- If you're on Android, install the BBGM app. If you're on iOS, add it to your home screen.
- Make a backup of a league at Tools > Export League
In cases where the data has been deleted from your browser profile, the only way to get it back is if you have a backup. Sorry :(
Followup: Why is this a problem for Basketball GM but not for most other games?
Most other games don't have this problem of browsers deleting data because most games don't store their data inside the browser itself. So why does Basketball GM different? There are tradeoffs.
The current method has some big advantages. Since the data is stored on your computer rather than on my server, my server costs are extremely low, which is what allows me to make this game free and unlimited. But still, you may think of other purely local apps that don't have this data loss problem. Basketball GM is different because it runs in a web browser. A normal game you install from Steam or a mobile app store stores controls how it stores data on your hard drive, but BBGM does not really control its own data, the web browser does. So why not make BBGM a "normal game"? Two reasons. First, it's really nice to just be able to type a URL into your browser and start playing immediately, without installing anything. That even lets you play on devices where you are not allowed to install apps. And second, it's really nice that a web game runs on any device. As a solo developer, it'd be a lot of work to make separate UIs of the game for iOS, Android, Windows, Mac, Linux, etc.
So basically - it's all tradeoffs. I hope in the future web browsers have ways to more robustly store local data, to better support apps like Basketball GM. The "Persistent Storage" option mentioned above is supposed to be that, but it doesn't always work.
Currently there's no easy way to do this, but it is possible.
You can export a league (Tools > Export League), copy the file to your other computer, and then create a new league using that file.
Sometimes your browser can get stuck on an old version of Basketball GM. Here are a few things you can try to force an upgrade.
Method 1: Open Basketball GM in a single tab in your web browser. Do a hard refresh (ctrl+shift+r, or ctrl+cmd+r on a Mac). If that didn't work, try again with your browser dev tools open (ctrl+shift+i, or ctrl+cmd+i on a Mac).
Method 2: Close all tabs with Basketball GM open and then open Basketball GM again. Or restart your browser. If this doesn't work the first time, try again.
Method 3: Try manually emptying your cache. In Chrome, from the main menu go to "More tools" > "Clear browsing data". Make sure you select "Cached images and files" and do not select "Cookies and other site data" because "other site data" is where Basketball GM stores all your leagues. Then try closing all open tabs with Basketball GM and opening it again, like above.
Method 4: Open Basketball GM in a single tab in your web browser. Open your browser dev tools (ctrl+shift+i, or ctrl+cmd+i on a Mac). At the top of dev tools panel, click "Application" (if it's too narrow to see, you might have to click the >> to see it) and then click "Service Workers" on the left:
Then click "Unregister" to the right of https://play.basketball-gm.com/:
Finally, reload Basketball GM and hopefully you will see the latest version.
Basketball GM is now available for Android in the Google Play Store. But it's no different than playing the game in your mobile browser, which works fine on iOS too.
Followup 1: Can you release an app for iOS (iPhone or iPad) similar to the Android app?
Maybe some day, but Apple makes it a lot harder to do than Google, so I'm not exactly eager to do it. Also, like I said above, it wouldn't actually make the game any better than just using your mobile browser.
But what if you just want it to look and feel a little more app-like? You can do that on iOS today, by following these steps:
Open https://play.basketball-gm.com/ in Safari.
Tap the icon featuring a right-pointing arrow coming out of a box along the top of the Safari window to open a drop-down menu.
Tap "Add to Home Screen." The Add to Home dialog box will appear, with the icon that will be used for this website on the left side of the dialog box.
Enter the name for the shortcut using the on-screen keyboard and tap "Add". Safari will close automatically and you will be taken to where the icon is located on your desktop.
(You can also do a similar thing on Android, by going to your browser's menu and tapping "Add to homescreen"... or you could just install the Android app!)
Followup 2: Can you make a better mobile app? Like a native app designed specifically for small screens?
Basketball GM already runs on your phone, in your mobile web browser. I know the UI is not perfect, but I am working on it and it has improved over the years. This is going to continue.
Making a separate native app with a very different UI than the current web app - that is not going to happen any time soon. I'm just one guy working on this project, and it'd be too much work to maintain multiple different UIs for the game at the same time. That's the beauty of the web version, it runs on any device.
If you notice something specific about the mobile UI that you think should be improved, please let me know!
No. I'm not convinced that playing time really matters for player development.
It's a chicken and egg problem. Do good young players get more playing time because they're already good? Or do young players become good if they get more playing time? It's obvious that the first scenario happens. But is it obvious that the second scenario happens? I haven't seen any convincing evidence that it does, and there is some evidence that it doesn't.
I know that's not really a fair argument, because it could be that it's a real effect that is just hard to see in the stats we have available. But if it's hard to see in the stats we have available, does it matter for a game like Basketball GM? Because if it's so difficult to notice in reality, it'd be equally difficult to notice in Basketball GM.
I can make a counterargument, though. Basketball GM is a video game. Its primary purpose is to be fun, not to be realistic. So maybe it'd be fun to give unrealistically large bonuses to young players who get a lot of playing time. I don't know. It could be fun. But I also very much like to keep things simple, so I err on the side of simplicity. And doing nothing is very simple.
I also am aware that I could be wrong. Maybe there is a convincing, data-driven argument that playing time leads to quantifiable improvement. If so, please let me know!
I am very bad at planning, so I'm not going to commit to any timeline. But I would like to do other games.
Now that I've done the 4 major American sports, there's no more low hanging fruit, since other pro sports tend to have different types of leagues. For example, consider soccer. There's multiple competing leagues, cross-league tournaments, buying/selling players, relegation... a soccer management game would be a little unsatisfying without all those features.
College sports would also be fun to do, and could be my next "big" project, although I'm not exactly sure when. There's also a lot I could do to improve the existing games.
Many games, including mine, use a 0-100 rating system. However that doesn't mean they are the same scale. Basketball GM generally has lower ovr ratings than other games, so 90+ ovr players will be quite rare. You can see the breakdown of how good players at different ovr ratings are in the manual.
Is this a good thing? My thought process was that if the scale is 0-100, I might as well try to use all of it. If 100 rated players are common, what happens when there is someone even better? On the other hand, maybe I should have made my ratings more similar to other games just for familiarity? I don't know. Actually I think a better system would be unbounded, so average rating would be 0 and players could go above/below that any amount. But that might be too big a change for me to make in my games at this point.
Contracts in Basketball GM are indeed quite simple. They pay the same amount every season, they are all fully guaranteed with no player/team options, there are no restricted free agents, special salary cap exceptions are mostly not present, etc.
That's certainly unrealistic. I completely understand people who wish that every little contract rule from the real world was included. But I am wary of making the contract system too complicated. Sometimes there is a tradeoff between complexity and fun, and for me personally when I'm playing a game like this, I don't want to have to worry about the ever-changing ridiculously complex contract rules that pro leagues have.
Maybe some day I will include some of that stuff as options. But that's easier said than done, for something as central to the game as contracts. The AI would need to be smart enough to handle all possible combinations of settings, and the AI struggles enough already!
Historical real players rosters only include players who actually have stats, because stats are what's used to determine ratings. Some players without stats may be in the game, but those are manually added. Feel free to request more, if you want!
Another problem with real players rosters is that sometimes players appear in the wrong draft class. This happens because Basketball GM does not support the concept of "a player's rights are owned by a team, but he's not actually on the team this season". So things like a player being drafted in 2004 but playing in another pro league for a few years before his rookie season in 2007... Basketball GM has no good way to represent that. Until I fix that, there are only bad options, such as:
Put those players on the roster of the team that owns their rights. That's bad for a number of reasons: it's hard to figure out who owns the rights to all prospects at all times; he would either play too early, or have to be marked as injured for a long time; and if he was injured and not playing, the team would still have to pay his salary.
Make those players free agents that anyone can sign, and maybe mark them as injured for a long time too.
Move those players to the draft class right before their rookie season.
I think that last option is the least bad, so that's what I did.
This should only apply to players who were not on the team at all. For players who did join a team after the draft but spent the whole year injured or on the bench, those players should be included in the correct draft class. However sometimes it's hard to distinguish between these scenarios, so if you notice someone like that being moved to a later draft class, please let me know.
Two main reasons:
Basketball GM doesn't have various things like player/team options and contracts with different $ each season, so some compromise must be made when representing real contracts in Basketball GM. For more details about this, see Why are contracts in Basketball GM so simple?
The contract data I have just has what players are paid each season, not start/end dates of contracts. So I wrote some code to try to guess the start/end dates based on contract length and when there are big jumps in contract value, but it cannot accurately detect when players re-sign to similar contracts. Which happens a lot, especially for max contract players.
At some point I'd like to create a better historical contract database, maybe by crowdsourcing and letting you guys help me do it :)
In real player leagues, why is Player X rated higher than Player Y, when I know that Player Y is much better in real life?
Sometimes the answer is that the ratings just suck and need to be adjusted. But usually, that's not the answer, or at least not the main answer.
The main answer is that, sadly, the basketball simulation algorithm in BBGM is not identical to real basketball. Certain types of players may be overvalued or undervalued in BBGM. Or certain stats might be easier or harder to accumulate in BBGM. Ultimately I do want to fix these issues and make BBGM more realistic, but it'll never be perfect.
When this situation happens and it's hard to set good ratings for a player, there are two options. You can set the ratings such that player performance (stats) matches reality as best possible. Or you can set the ratings such that the ratings seem to make sense if you look at them without stats, for example making the list of top players sorted by "ovr" be similar to how people rank players in real life.
In an unfortunate situation like that, where you are forced to make a player either have unrealistic stats or have unrealistic ratings, I think it's better to have unrealistic ratings. I understand some people disagree with that, and if you do, you are free to make your own ratings! Just don't be surprised if players start putting up weird stats :)