Introduction

This post was originally written on October 8th, 2019—two weeks after Bot Land launched. I’m updating it now on February 16th, 2020, which is one week after making the decision to retire Bot Land. Thus, it wasn’t actually a post-mortem back in October because Bot Land wasn’t “dead” yet, but I wrote it as though it were, so I’m just making minor updates on this pass through.

We’ll talk about what went right, what went wrong, and all of the things I learned along the way. There will be plenty of duplication between other blog posts and my FAQ so that this can be a one-stop shop for those interested in hearing the journey of Bot Land.

History

Iterating, forming a business

In September, 2010, I had an idea to make a game involving scripting. I worked on various iterations of it in my free time for 5 years, never really producing a full game, but always tinkering with Bot Land to some extent.

Here’s the scripting view of the 2010 version that I wrote in Python:

Here’s the game as a multiplayer RPG from 2011 in Java:

Here’s the “lite” version of the game in 2012 (also Java) since the original plan was too vast:

There’s another iteration of Bot Land as an RTS that I don’t have screenshots of, but it’s similarly unimpressive.

After all of that solo work, a co-worker of mine approached me in 2015 about designing a game involving… you guessed it—scripting! I was excited; I told him about my original ideas, and we came up with a new design.

Within a month or so, code was executing in our prototype-of-a-prototype:

We talked to another co-worker who spent a whole weekend making art, and in another month, the game looked like this:

Another month in and we had different weapons, more sprites, and extra features:

The game design was very different from the current version. In this prototype, there was a single, persistent, deathmatch-style arena wherein players would deploy bots. As soon as they died, they’d get redeployed, so players didn’t need to be online for the game to have activity in it. Gameplay was mostly about picking a leaderboard (e.g. “damage dealt with lasers”, “resources collected”) and aiming to top it for the given hour/day/week.

This original version of the game was fun for about a week or two, then gameplay became stagnant. People had unlocked all of the items. They’d tried all of the strategies that they were interested in. There was no real sense of progression after that because the arena lasted infinitely, so players likely didn’t feel that they had much of an impact beyond the transient leaderboards.

But this was just a fun side project for everyone involved. It wasn’t until roughly July of 2015 when that started to change. I felt like I wasn’t learning much at my job anymore, so I talked to my wife about what I should do. She suggested that I try to productize Bot Land.

I conferred with the co-worker who’d originally approached me about designing a scripting-based game, and he was on-board. He wouldn’t be able to work full-time on it, but it was good to know that I had help going into this.

I quit my job as soon as possible and set out with a plan: I would start a business, dump a significant portion of my savings into the development costs, hire a UX designer and some artists, and we would produce a version of the game that was ready for the world. We guessed it would take about 18 months to complete.

Redesigning the game

We knew that we eventually needed to make money from the game, and we didn’t think a single arena worldwide could accommodate the number of players that we’d need for that. We redesigned the game to be a 1v1, timed battle that would require both players to be present and active for the duration of the match. We hoped that this would alleviate some of the other problems with stagnation and progression.

In the first twelve months, things were starting to fall apart on many fronts. The co-founder wasn’t able to devote as many hours to Bot Land as he’d hoped. This became increasingly challenging when we realized that the game still wasn’t fun.

This led to the most stressful month of my entire life: August of 2016. On August 21st, discussions with the co-founder about parting ways finally came to a conclusion. This was amidst frantic redesigns to try to salvage what we could of the game. What I settled on, game-design-wise, was asymmetrical multiplayer. I discuss the background behind pivoting the design here:

Post-mortem

Looking back, there are several things that I would have changed if I could.

For one, optimism has no place in the business world. We should have confirmed or denied whether the redesign would be fun sooner than we did. However, even as I type that, I will add that it’s difficult to know exactly what makes something fun. It’s what led to August being such a crushingly stressful month. You can’t just tell a player to ignore all of the glaring flaws and only try to focus on the game mechanics. Instead, it’s a package deal—the summation of graphics, music, sounds, gameplay, and user experience is what influences a player toward having fun.

The second set of learnings is around co-founders. I do not begrudge the original co-founder for prioritizing life over work. A combination of hopeful expectations and repeated, fruitless conversations about improvement is what left me bitter.

Before Bot Land, we had made a single game together that was much smaller in scope, and we both considered it to be a great success. I think that success gave us false confidence; Bot Land’s scope was gigantic compared to the first game, so we perhaps overestimated how well we worked together simply because there was less work to do.

I learned that having a co-founder was incredibly important to me even if there were no official business dealings; I need someone with as much context and stake in a project as I have so that I can discuss things with them. Over the years, I’d approach friends about various decisions (e.g. “does this feature sound good?”, “is this a good way to monetize the game?”), and while they would give input, they weren’t on the hook afterward for the fallout of whatever decisions were made. What’s more is that you eventually reach a point where you burden your non-co-founder friends with your troubles.

In practical terms, I think that a co-founder should either provide some set of knowledge or skills that you absolutely do not have, or they should be as invested as you are (either monetarily, timewise, or both) so that responsibility can be reasonably split.

I also learned that having an endeavor which you treat as a side project is very different from trying to form a business. Bot Land was my full-time gig, but the underlying goal for me was always to make a successful game rather than a successful business. However, there’s a certain sense of urgency around having to make money that changes the decision-making process entirely. It’s why common start-up advice nowadays is to fail fast, meaning you don’t waste time pursuing something that won’t be viable for business.

Finally, people are probably looking for an answer to “what about Bot Land led to its own discontinuation?” I think there are many reasons:

The core of the game is complex, but day-to-day gameplay can be quite casual. I.e. setting up all of your bots and scripts can take several hours at first, but after that, you can play for 30 seconds at a time or just watch replays. This meant that casual players would be turned off almost immediately (although the hardcore players generally seemed satisfied).

The onboarding experience felt like a tutorial. It had modal dialogs, it taught largely via text, and it eschewed freedom in some spots by forcing you to click certain things. Players who didn’t expect this kind of experience would skip as much as possible and then end up being confused (and yes, I realize this is the game’s fault; I’m not trying to pin that on players).

Bot Land is a niche game. If you take out the scripting element, you essentially get Clash of Clans, a widely popular game that was also a commercial success. That scripting element made people think that the game was for programmers, even despite the fact that you could completely ignore scripting if you wanted to.

The “hook” for the game is presented via text, and it’s not really embellished until the campaign starts. Plus, since the onboarding experience wasn’t the best, players quickly became trained to outright ignore all text boxes, meaning they likely wouldn’t have read more of the flavor text even if it was a thrilling and compelling story.

For a while, I tried masking that scripting was even in the game, which I think was a mistake because the trailer would have enticed you into trying that aspect out. The current iteration of the game gets to the scripting almost immediately now, but those changes were too recent for them to be mature.

The graphics turned more people away than they drew in. For the record, I like them and I appreciate what the artists did for the game, but there was a relatively tight budget, so compromises had to be made with the sprite work (e.g. all bot parts are drawn as just a single sprite—no animations, no different directions like up/down/left/right).

The game isn’t exactly stream-friendly, so nearly every streamer who showed the game to their audience would only do so once.

We didn’t use a proper game engine, so the mobile versions were wrappers around the web site. Without going into tons of details, WebGL is picky, and some phones (and even some computers) weren’t able to run Bot Land.

Bot Land may have had great success in the education sector, but the path to monetization there would likely have been slow and uncertain. I had shown Bot Land to a classroom of two teachers and about ten students, and they all loved it, but it was too little too late.

As a result of all of the above, user retention was very low, even despite many weeks of focusing solely on improving those numbers. By the time the decision was made to discontinue the game in February 2020, only about 200 players were returning from all previous weeks, and there were ~62K accounts created. Even at its peak, Bot Land only had about 500 players returning from weeks prior.

Many people have suggested whether Feature X or Idea Y could pull Bot Land out of retirement, and my response is “sure, it’s possible, but that’s all I was attempting to do for the last couple of months, and at some point, I need to accept that it’s unlikely.”

At the time of writing this, the game is still online and playable, so you can verify that you too will likely be frustrated by playing it!

Twitch

The History section covered up until August, 2016, but we have to jump back a year for this section.

In August, 2015, I decided I would stream the development of Bot Land on Twitch. People have asked what my motivation was, and it boils down to three things:

Accountability – I wanted to stay on-task throughout the day

Marketing – I needed people to know about Bot Land in order to make it successful

Ego – I saw someone else streaming development once and I thought I could do a better job

I had no real plan and no idea what to expect, so I posted to reddit that morning hoping that I would get helpful suggestions on how to grow such a stream (side-note: it’s funny to read that thread now that I’ve streamed for so long).

That first day, there was way more traffic than I thought I’d get (~50 average viewers). I ended up narrating what I was doing, interacting with chat, and just generally dipping my feet into the very foreign waters of broadcasting my work to the world. I was quite accustomed to gaming streams having watched Twitch for a few years at that point, but now I was on the other side, and it was exhilarating!

I started out with a schedule of 32 hours a week of streaming—8 hours each for four days. I was as consistent as I could be; I started at the same time almost every day, I never once let my ETA timer hit 0 whenever I took a break, and I tried to announce any absences ahead of time. This schedule held until 2019 when I decided to cut back to 16 hours per week, that way I could tackle sensitive work off-stream.

When not streaming, I tried not to work much, but I was still overwhelmed by stress many more times than I’d like to admit. I felt like there was always a weight on my shoulders, that the world was looking at me, and that I owed it to myself not to mess up this amazing opportunity.

I learned a lot from my time streaming:

8-hour streams would completely drain me of any energy I had. I’m an introvert, so trying to code, be entertaining, and interact with chat all at once spread me thin.

Exceeding 32 hours a week of streaming was practically a guarantee that I would burn out.

When a burn-out would happen, the only real remedy was to take planned time off. Unplanned time off, like when I would stop after being too frustrated for a particular day, led to guilt.

Being in front of a camera for so long means that people will see you in practically every mood that you have. Once people know what an average day is like for you, you start to get comments whenever you deviate from that average. This was true whether it was something small (like not styling my hair) or something big (like appearing more tired than normal).

It was surreal to have a community form around the stream and Bot Land. They provided much-needed human company, levity, and help of all kinds throughout the years. Twitch is how I met HiDeoo, who has helped greatly with the development of Bot Land.

Communities like to have celebrations even if they’re for seemingly arbitrary milestones (like 1000 followers or 500 days of streaming). I think I could have done more over the years on that front.

I got to learn what people appreciated about my workflow and what they thought could be improved.

Many companies start out trying to make Product X, but along the way, they discover that they have a real opportunity with Product Y. My Product X is Bot Land, but I think my Product Y is some kind of semi-educational streaming.

You make pennies on Twitch compared to what you make as a traditional programmer (note that I never streamed on Twitch to make a living even though I do have subscriptions and cheering enabled on my channel).

I don’t like playing games on Twitch. I play games to relax, and the only interaction I tend to like during a game is with the other players of that game.

Your productivity will take a hit if you’re streaming on Twitch. It’s just not possible for a programmer to keep flitting between chat and their code without one of the two failing. I tried to overcome most of the context-switching problems by taking excessive notes. It worked reasonably well.

5000+ hours of the streams are archived here, so if you want to see how things evolved over that time, take a look!

Many people asked about what the future of the stream looks like now that Bot Land is retired. I decided to pursue my “Product Y” in the form of an edutainment show called Adam Learns. As mentioned at the beginning of this post, I’m updating this blog post on February 16, 2020, which means the first episode of the show airs tomorrow! I’m thoroughly excited. 😄

Part of why I originally wrote this entire post was for personal reasons; I wanted a snapshot in time of what my life looked like at this moment in October, 2019. To that end, I’ll include some stats here about how the stream has grown:

Here are the October-2019 viewer/follower numbers:

And here’s how the average viewership has changed over the years:

(that large spike in September is due to front-page coverage on Twitch for the launch of the game)

Finally, I wanted to link to this somewhere: here’s my advice to prospective development streamers.

Launch

Picking a date and launching

Despite earning money on Twitch, I wasn’t making anywhere near the amount that I’d make at a traditional job. If you recall the History section, my wife and I only expected Bot Land to take about 18 months (which would have put us in about March, 2017). In late 2018, we both agreed that the end of 2019 would be a good stopping point unless the game proved to be profitable, which meant I couldn’t keep working indefinitely.

The concept of failing fast tends to be paired with launching a minimum viable product (MVP), then incorporating user feedback and quickly navigating that product to whatever success may look like.

The problem is that I had no confidence that people could enjoy the MVP, which I probably had done sometime in 2016. My thought process progressed something like this:

If I publicize the game now, the servers won’t be able to handle the influx of traffic.

The UI isn’t good enough.

There should be a tutorial.

The tutorial could be better.

People keep asking for mobile versions, but they’re not ready yet.

People keep asking about a Steam launch.

I haven’t done enough marketing.

[A maddening number of other bullet points could go here]

At almost any point, I kept thinking that it couldn’t possibly be launched. But the deadline of 2020 forced my hand, and I picked September 24th for the launch date (which ended up sticking).

The game had already been playable for four years at that point, so “launching” only really meant two things:

Real-money payments would be enabled

Players would have their in-game progress reset (e.g. they’d lose their unlocked items, any Botcoin they’d accrued, etc.)

I planned Launch Day to go like this:

Start streaming at about 9 AM (and Twitch agreed to give me front-page coverage for two hours to help promote the game).

Start the deploy process on-stream, which typically took about 30 minutes. I planned for something to go wrong, so I figured that I would have the game online by 10 or 11 AM.

Make marketing posts on various social media sites.

Celebrate with everyone.

If I had to sum up how those plans went with a single emoji, I’d pick 💣. The deploy process failed for some unknown reason that I’d never encountered despite the number of attempts (and even practice attempts specifically for launch) I’d put in. My front-page coverage ended before I even got the game online, meaning many people who joined the stream were just watching me amass anxiety in realtime.

I set to frenetically coding and eventually deployed. We discovered that email verification wasn’t working in-game, which meant people also wouldn’t be able to make real-money purchases. Even if they had been able to, iOS payments in particular were broken in several ways (and actually still aren’t online even as I draft this post). Then, due to having to hack together solutions in front of a live audience, I ran into a security problem that I had to fix.

What did I learn? If you’re going to launch at a live event, then make sure it involves nothing more than cutting a rope, and even then, bring a back-up rope. I should have had everything set up and waiting so that I could have just enabled traffic to the production servers.

On the plus side, the celebration aspect ended up being so incredibly heartwarming that I felt uplifted for at least two whole days afterward. The community, led by EveryJuan, put together a video commemorating the stream (Twitch highlight here, same video on YouTube here).

Expectations, goals, and metrics

I am bad at marketing. I imagine most people who start a business do so with the notion that they’ll stick to the core of the business, which in my case is game development. Unfortunately, that’s not how you succeed unless you have oodles of money to hire people who can fill in the gaps. Instead, you need to wear many hats: marketing, customer support, business development, design, etc.

I learned how bad I was at marketing leading up to launch. I wrote a 41-page document that I was using as a roadmap to guide me through the marketing phase. I’d contacted tens of streamers and YouTubers, and practically no one even replied to my emails. I ran advertising campaigns that didn’t really get anyone to stick. I tried some experimental ideas like a tongue-in-cheek crowdfunding campaign and a video specifically targeting subreddit culture.

Due to the lack of marketing success, I mostly expected Launch Week to be just another week. Thankfully, a Hacker News post that I made four days after launch did well, and that led to a reddit post in the /r/programming subreddit.

What was strange to me was the difference in perception between pre-launch and post-launch. The game hadn’t really changed, but people were playing more, actively participating in Discord, and suggesting it to their friends. I’m still not totally sure what caused that, but Bot Land felt like a legitimate game. Perhaps part of that legitimacy is due to just saying “we launched!”. Another interesting turning point was seeing people find out about my Twitch stream through the game rather than the other way around.

I’d had tiered goals approaching launch:

Goal #1 was my lifelong goal of making a successful video game. I defined success broadly as “a game that more than 50 people want to play”. I believe that goal has been met.

Goal #2 was my goal for the last several years, which is to make Bot Land profitable. This failed, especially considering the amount of unpaid development time and savings to recoup.

Goal #3 is what I would have striven to do if Bot Land had shown promises of profitability, which was to make enough money with it to fund beyond its own development for several years.

As for metrics, here are some quick stats in the two weeks after launch:

23522 total user logins 16440 guest accounts created 744 of these converted to full accounts 6899 full accounts created

54563 games played

31 real-money purchases made

Let’s interpret those a bit:

A little over 20k real humans played a game that I made in the two weeks after launch!

None of those guests would probably play the game again.

The revenue from those 31 purchases was enough to cover the server costs for a little over a month.

I don’t have an exact number of bugs/suggestions filed in those two weeks, but my email was blowing up, which meant that people were invested enough to want to improve the game.

Overall, I think that was a solid foundation for the launch of a game. The money wasn’t there, and the playerbase was still relatively small, but my mindset was that those things could be grown. I had stabilized for a few weeks and then worked on trying to improve user retention, but it never fully materialized.

All in all, Bot Land made about $700. Someday, maybe I’ll talk about costs, but for now, let’s just say that it was somewhere between $10K and $100K (and that’s not considering the opportunity cost of not having a high-paying developer job, which I estimate to easily total more than $500K).

Misc

Technological decisions

Perhaps one of the most difficult parts of making a game is having to make so many decisions. What language do you code it in? How much should Teleport cost? Is it more fun for players if I do X or Y?

I chose to make Bot Land in JavaScript because I wanted players to have as little friction as possible in playing the game. At the time that I started, I don’t think any game engine could reliably produce a web-based build without requiring a browser plug-in. This meant that I needed to make what was essentially a custom game engine for Bot Land, something that I never want to do again due to the number of rendering, performance, and cross-platform issues I hit. Maybe they’d still be present if I’d used a popular game engine, but I imagine that they’d be lessened.

The back-end runs entirely on Amazon Web Services (AWS). I started out knowing nothing about AWS, but now I feel reasonably comfortable with several of their offerings. In the process, I had to learn about related technologies like Ansible, Terraform, and Docker.

Most of the notes that I took over the last several years are public. I’m not an expert on any of the technologies, but you may find some value in them.

Was it worth it?

I always used to wonder whether I was ever giving anything my all in life. With Bot Land, I have no doubts that I did; I poured my heart and soul into the game. There aren’t many things that I’m truly proud of, but Bot Land is one of those things.

Could I have done things faster, better, with less money, etc.? Yes, and if I said that I had done everything 100% correctly, then it would only mean that I hadn’t learned anything.

I’ve gained knowledge, wisdom, and skills. I’ve met great people. I fulfilled a dream of mine. It was beyond worth it.