The Feature Creep

Game Design

I built a bot that plays as badly as I do

· Bandwidth Barons

Every number in Bandwidth Barons is a guess: what a modem costs, when the NOC shows up, how angry your customers can get before they leave. The last post said the pacing was retuned and checked against a bot. Here’s how that works, and how my own game showed me what the bot was missing.

One thing at a time

New tools come as projects, the way they do in Universal Paperclips. Each appears at a milestone: subscribers for the tools that grow the company, and the revenue on a Monthly Report for the tools that squeeze it. Three rules keep them apart:

  • A project costs two to four months of profit, so you save up and choose what to buy first.
  • At most one New Project notice a month, so the two tracks take turns.
  • Each milestone is 1.2 to 1.6 times the last. Growth slows as the city fills up, so the later ones take longer.

The careful bot

Checking those rules by hand would mean playing a whole session after every change. So a bot plays it for me. It plays the way the pacing assumes you will: it runs the best ads it has, keeps two starter packages, pays to fix every outage the day it breaks, keeps $10,000 back when it buys a project, and expands into the district with the most homes per dollar.

It plays a whole session in about a second and prints the day each project appears. In New York the first one comes on day 91 and the Golden Parachute on day 1,643, about 27 minutes at 2×, after 21 New Project notices, none closer than 19 days to the last.

There’s a second bot that does nothing at all. It ends with 175 subscribers and never earns a project, which is how I know the game doesn’t play itself.

Why each city has one seed

The seed decides the game’s events, like which day the squirrels get into the lines. The bot plays 50 seeds in each city, and each city keeps one: the seed nearest its average profit, with an early first project, notices at least 10 days apart, and a Golden Parachute within a session. New York plays on 17, London on 37 and Istanbul on 1. Every game in a city gets the same events, so two playtests can be compared.

The bot was too careful

Then I played the new numbers myself, and I got stuck. For the last 18 game months my company sat between 1,750 and 2,000 subscribers. I had the cash for Accelerated Depreciation and Collocation, but not the subscribers: they came at 2,300 and 2,800. Meanwhile 14,000 homes in the city were online and still not mine.

The careful bot never got stuck there, because it never makes anyone angry. I did. I set the NOC to one modem for every 12 subscribers, then 15, so the lines were busy. I had one support person for over a thousand customers. I ran eight fee packages. And for about 900 days I charged $20.95 for dial-up while the cheap rival charged $14.95. Angry customers sign up less and cancel more, until the two meet. That’s the ceiling.

The game is deterministic, so I could replay my own game command by command and change one thing. With the NOC at one modem for every 10 subscribers, the same game passes 2,300 on day 1,151 and ends at 2,670 instead of 2,100.

A bot that plays like me

So there’s a third bot now, the playtester, with my habits: the NOC at 12:1, dial-up at $20.95 whatever the rivals charge, support hired late and eight packages on. It has to get Collocation, the way past the dial-up ceiling, within one session, and every other growth project within two. It’s allowed to be slower. It isn’t allowed to get stuck. To pass, Collocation came down to 2,000 subscribers.

Then I broke it

Six minutes after the playtester passed, I shrank the modem rack from 48 modems to 24, and I didn’t run the playtester. It’s stuck again. In New York and London it never reaches Collocation’s 2,000 subscribers, not even in two sessions. Istanbul still gets there.

Fixing that is next. From now on every balance change runs both bots: the careful bot says when things arrive, and the playtester says whether they arrive at all. Its customers hate it. That’s how I know it’s working.

If you hit a ceiling, tell me in the comments what you were doing. Your habits might end up in a bot.

Back to save files