Making a game 10x faster changes how people play it

Basketball GM 4.0 was released a week ago. It made game simulation about 10x faster. After releasing it, I was very curious how players would respond. If they played the same amount of time, they could simulate 10 times more seasons. Or they could play 1/10 of the time, but simulate the same amount of seasons. Or something in between. Or maybe they'd even change how they play, like focusing more or less on the details of the game.

Let's look at some numbers.

Read more...


Basketball GM 4.0 technical details - caching, Shared Workers, IndexedDB/Promise interactions, Safari being a tease, McDonald's, and more

Google made me do it.

Basketball GM has always allowed you to open up the same league in multiple tabs, so you can easily view multiple different screens. This was originally implemented by running the entire game in each tab. Game data was always saved to disk via IndexedDB. And when an action resulted in a change to the data (such as playing a game, signing a contract, trading a player, etc), then a signal was sent to all other tabs telling them to update their data. This was kind of a crude approach, but it worked.

It worked, until Chrome started throttling JavaScript in background tabs. Their logic was, if you're not even looking at the page, do you really want it burning through your battery? It made perfect sense. Except for Basketball GM, it meant that game simulation would only run if you were looking at the tab you started it in. So if you clicked "Play until playoffs" and then switched tabs, it'd never reach the playoffs. Fuck!

When life hands you lemons, make lemonade. Since Google decided to totally invalidate the tradeoffs I had considered when designing Basketball GM, I decided to re-evaluate. I came up with two ideas:

Read more...


Basketball GM 4.0 is here!

This is not an April Fool's Day joke! Basketball GM 4.0 is really here, and it's awesome. For those who haven't been following along, here are the biggest changes:

I'll make another post with more technical details soon, for those who are interested in such things.

Thank you to everyone who tested the betas. Hopefully we found all the bugs, but if not, please report bugs on Discord or Reddit.


Basketball GM 4.0 Beta 2

Thanks you everyone for testing the first beta! All of the bugs people found have been fixed. The biggest change from the first beta is that multi-tab play is back. There are two caveats. First, you can only have one league open at a time. I figure this is not a huge problem, but let me know if you often do have multiple leagues open. Second, it is a little slower than the first beta, but still much faster than it used to be.

Also, multi-tab play does not work in Safari, so you can either play one tab per league in Safari or use another browser.

With that being said, here's the link to beta 2, please give it a try. To make sure you're on beta 2 and not the original beta, look at the bottom of the page. It should have a date of 2017.03.24.1059 or later.

Like last time... this is a beta, so bang on it, try to break it, try to get it to produce an error. Feedback is appreciated, on Discord or Reddit.


Basketball GM 4.0 Beta

Check it out!

I'll make another post with more details later, but right now, the beta brings some good and some bad:

Good: Performance, performance, performance. Depending on your computer and browser, you will find it about 10 times faster. That is a lot.

Good: It works in Safari now, although it's not that well tested.

Bad: You can only open a league in one tab at a time. I do have plans to restore multi-tab play, but I didn't want to hold up the beta for it. And single-tab mode will be needed as a fallback mode in some browsers, so it will be good to test it. Please do give me feedback on this. If single-tab mode is horrible, I will prioritize multi-tab mode.

This is a beta, so bang on it, try to break it, try to get it to produce an error. Feedback is appreciated, on Discord or Reddit.

(Also, accounts don't work on the beta. They aren't supposed to. That's not a bug.)


Three million seasons and one million leagues!

August 16, 2016-

On March 18, 2015, Basketball GM passed 1 million seasons played.

On December 28, 2015, Basketball GM passed 2 million seasons played.

And today, we have crossed the 3 million seasons threshold!

Here are some interesting statistics at this milestone:


Default salary cap is now $90M, max salary is now $30M

July 9, 2016-

This applies to new leagues only. If you want to change it in existing leagues, enable God Mode (in the Tools menu).

Additionally, all of the financial parts of the game (like TV revenue, merchandising, etc) have been scaled up too, and they will automatically adjust as you change the salary cap. Previously they didn't change at all, so it was very difficult to run a profitable team in a league with a high salary cap, and too easy with a low salary cap.

Let me know if you think this has introduced any balance issues. It is supposed to just be a cosmetic change, with every dollar amount 50% higher.


More customization options: conferences, divisions, and playoff length

Until today, Basketball GM was hardcoded to always have 2 conferences, 6 divisions, and 16 teams in the playoffs. If you wanted to set up a league with a different structure, you were out of luck.

But today that has changed! You can have any number of conferences and divisions, and the number of teams in the playoffs can be any power of 2 (2, 4, 8, 16, 32, etc). Unfortunately this is only customizable by making a league JSON file, but it's not that hard, I promise. Here is the documentation and here is an example file with 3 conferences, 6 divisions, 12 teams, and a 4 team playoff.

Please let me know if you notice bugs related to this!


More realistic player names, including international players!

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:

  1. No more leagues dominated entirely by people with mid 20th century white names.
  2. Increased realism, as you see a good number of players from expected countries like Spain, Lithuania, etc.
  3. Every now and then, you'll have a Brazilian player with no last name (like Nene and many soccer stars).
  4. 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.


Logos for default teams

June 4, 2016-

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:

Read more...