Stories

7 lessons from 7 years of game development

Wondering what the key to success is for indie makers? Hint: it’s not a "best practice."

Amir Rajan
Amir Rajan
August 8th, 2022
Amir Rajan is a longtime indie game developer with 3 million downloads accumulated across all his properties. He's especially known for his minimalist text-based game, A Dark Room. Find him on Twitter at @amirrajan.

My leap into the world of coding

In 1998, at the age of 14, I discovered coding and immediately fell in love with it. My first job was in 2001. 20+ years have gone by and I still love this craft.
Over the past twenty years I've worked on a number of technologies across multiple industries. Some of the sectors I've worked in: health insurance, veterinary medicine, big box retail, logistics, financial, data analytics, and entertainment (gaming).
As for tech stacks, there's too many to enumerate given how long I've been doing this. I've ended up specializing in Ruby, C, and LLVM (with research being done around embedded Lisp dialects).

My start as an entrepreneur

After working from 2001 to 2013, I decided to take a sabbatical and mentally reset due to corporate culture burnout. I dabbled in some game development, something I've wanted to do since childhood. I re-envisioned a web-based idle game called A Dark Room and released it to the App Store (the collaboration was with the original creator). Out of sheer dumb luck, in 2014 it went viral and hit the #1 spot in the App Store, amassing 20,000 paid downloads per day and $1M+ in revenue.

My game development journey so far

Since that lucky break, I've released five more games across multiple platforms (including the Nintendo Switch), and created a commercial game engine called DragonRuby Game Toolkit.

Who is this advice for?

I've learned a few things and have gained my share of "battle scars" over these past 7+ years. I'm hoping that after reading this, you won't make the same mistakes I've made.
The advice I'm going to give is for "indies"— a team of one to four who are just starting out in building a product, self-funded/bootstrapped, part time.
It’s also in the context of building video games, but these ideas can be applied to any product really.

Lesson 1: Think about the spirit and feeling of your game, as opposed to specifics of implementation

When thinking about what game to build (your “pitch” for the game), put an emphasis on the overall spirit of the game, and the emotional response that you want to evoke from the players, as opposed to the specifics of the game mechanics (which can change and be fickle).

Think of the perfect 5-star review for your product

Imagine that you’ve shipped your dream game. What does the perfect 5-star review look like for your game? Imagine someone has downloaded your game and has become a super fan of yours. They leave you a glowing 5-star review. What does this review say?
Thinking of the 5-star review first forces you to think about how the game feels as opposed to worrying about specific game mechanics. Try writing out some glowing five star reviews for your game (or product) idea. These reviews will be your guide.

Example from my own past

These are actual reviews people have left for my games. The definition of being a successful game dev is when the “perfect-5 star review” you envisioned becomes reality:
Hope ★★★★★
I have waited to write a review until now. I started way back with A Dark Room. Finding the world mysterious, frustrating, yet oddly satisfying and enlightening, I looked up who made that spectacular game, discovering Amirali Rajan and his games. The ensign came next. Getting through that game was significantly more difficult and took way more time and dedication to get through. The ideas surrounding those two games are extremely unique and satisfying, the best experience and thing to come out of owning a smartphone to date. That was 4 or 5 years ago, I’m not sure. When A Noble Circle came out, I was intrigued. Completely different style, extremely difficult. I went through and beat it though, loving the story and waiting for each update. This must have been a year or two ago. Tonight, I checked back and saw a new update, with a new ending. The message is awe-inspiring, deep, life changing, motivational, introspective, and truly touching. Amirali Rajan deserves the world for what he has communicated through his games and the obvious love, passion, and effort that has been conveyed. I discovered Hope many months before, and I have grown up with it thanks to this man, finally relayed my experience. Amir, if you read this, let me know how I can help continue your passion and support you through a monetary donation because you deserve more than any money-sucking impersonal game that Supercell or any other company produces. This work is truly incredible.
Speechless ★★★★★
I feel unworthy to give [A Noble Circle] a review. The creations of Amir give me pause.. this one particularly brought me to tears. The beginnings of these “games” are always fraught with questions and strange curiosities and thoughts. Its not until about halfway through you realize that you are violently invested both mentally and emotionally trying to make sense of these unfathomably deep yet simple worlds. By the end, the curtain rises, you are greeted by the creator and you feel a cool and unnerving sense of accomplishment and wonder. I really have nothing left to say. This is a thing of art, and it is good. Thank you.
These reviews are not intended to simply be shameless plugs for my games (side note: added benefit), but rather to highlight the emotional response I garnered.
When I start work on my games, I begin with the abstract: the emotion, the feeling, the vibe, and go from there. Try it for yourself and see how it goes.

Lesson 2: Ship small and monetize early. Build big over time

As a small company, you cannot afford to toil away for months/years with nothing to show. Build a large game not all at once, but through smaller experiences that you can separately monetize. These smaller experiences can then be compiled together to create the game of your dreams. As an exercise, see if you can take your favorite game of all time and split it up into "sub games" that can be sold independently.

Break down a game/product you love as an exercise.

One of my favorite games of all time is Final Fantasy Tactics, so let's use that as a concrete example of this "breakdown exercise."
There are so many things I could remove from that game and it’d still be my favorite. I kept removing things (using the steps above) until I reached a point where removing anything more would have ruined the game (for me). Here are a few things I realized about my “core” Final Fantasy Tactics experience:
  • I don’t care about it being 3D. A 2D version of FFT would have been totally fine.
  • My favorite classes are the Lancer and Samurai. Every other class from the game could be removed and I’d still love it.
  • Leveling up my characters didn’t matter to me. I cared about masterful usage of the class abilities and their synergies.
  • The storyline wasn’t important to me, but the lore of the world was.
As an indie, I don’t have the resources to build the entirety of Final Fantasy Tactics. But, I can build a FFT style experience where there are only two classes, a few weapons, and an emphasis on world building.
Given this “core” description, I can build smaller games that actually have a chance of shipping (aside: these are complete, standalone experiences, and shouldn't be confused with DLCs).
Here are some example games I could build that could later be compiled into Final Fantasy Tactics:
  • A game with one level where you play as an overpowered Lancer and slaughter all the enemies on the screen.
  • A game with one level where you play as an overpowered Samurai and slaughter all the enemies on the screen.
  • A one-vs-one experience between you and a friend where each person specs out a Lancer/Samurai with abilities. See who comes out triumphant.
With each game I build, I try to address an aspect of the larger game that is "high risk" or beyond my current skill set. These smaller games allow me to explore and make mistakes in a constrained space. When all is said and done, I have code assets that I can leverage for future games, and a shipped artifact that I could charge for (not to mention that this is a good way to start growing a fan base).
For the love of all that is good, ship something and do it quickly. Don't be a dev that spends years on a project that never sees the light of day (it sucks to be in that kind of development phase with no end in sight).

Lesson 3: Target hyper niche markets

Don’t try to compete with AAA companies or try to capture large, generic markets. Build meaningful/fulfilling games for smaller, hyper niche communities. Build many small games that each generate “small” amounts of revenue.

Finding and quantifying niche communities

As an indie, you have limited resources, limited (zero) marketing budget, and limited capital. This definitely stacks the deck against you from a revenue standpoint. But there's good news— your expenses are small too. You can afford to build games where revenue potential is "only" $5,000 to $10,000 for a given property.
Large AAA companies like EA (even indie shops with team sizes larger than 8 people) will not go after these niche experiences. It’s just not worth the development costs.

Your competitive advantage

There's a bright side to being small and targeting hyper niche communities. Your convictions and ideals matter. Your identity as an indie matters. It’s the solitary marketing edge you have over AAA companies (you are a real human being with a face and a name…and those who play your games, by extension, should know you).
Play to your strengths with laser focus. Do not be a generic game dev. You control the spirit of the game— it is an extension of yourself, and this can and should be used to your advantage. The big name companies can't do this, so here is your chance to use your individuality to your benefit in a way you never could if you were working for a large company. Don't think of being a small Indie as a weakness, think of it as your greatest strength.

Putting lessons into practice

There is a Reddit community called r/Emuwarflashbacks which is dedicated to The Great Emu War. An excerpt from Wikipedia:
The Emu War [...] was a nuisance wildlife management military operation undertaken in Australia over the latter part of 1932 to address public concern over the number of emus said to be running amok in the Campion district of Western Australia. The unsuccessful attempts to curb the population of emus [...] employed soldiers armed with Lewis guns—leading the media to adopt the name "Emu War" when referring to the incident. While a number of the birds were killed, the emu population persisted and continued to cause crop destruction.
This is a game that’s worth building if you are passionate about The Great Emu. Especially because r/Emuwarflashbacks has 82,000+ members.
NOTE: Before talking about money, I think it’s important to state that revenue is the by-product, not the goal. You’d have to build a game that captures the spirit of the Great Emu War, and you’d have to be a genuine member of the community. So yea, don’t be a predatory-a**hat-sleaze-ball (community members will see right through it).
Okay, let's do some math:
  • The industry conversion rate for monetization is around 1.6% to
  • 5.0% (a conversion rate of 2.8% is considered “really good”).
  • Let’s say that your game "Metal Gear Emu Solid" sold for $4.99.
  • For a subreddit that has 82,000 members...
  • On the low end (with a 1.6% conversion rate), you could expect to make ~$6,000.
  • On the "really good" end (with a 2.8% conversion rate), you could expect to make ~$11,000.
  • On the high end (with a 5.0% conversion rate), you could expect to make ~$20,000.
That's not bad. And if you do right by the community you are servicing, then they’ll support you again in the future.
Remember, for this to actually work, you have to give a sh*t about the game you are creating.

Lesson 4: Redefine success based on experience

If you've never shipped a product, a goal of "$1M in revenue first year" is not realistic. Assuming that you are starting with zero game-building experience, here's a loose set of goals I'd try to hit:
1. Research a hyper niche community. Think of a game idea. Think of the "perfect 5 star review". Build the "first 20 seconds" of your game, and solicit feedback from community members.
2. Build an expanded version of the first 20 seconds. Time-box it to one week, part time. Ship it everywhere you'd want to ship a commercial title. Gain that muscle memory.
3. Build something that can be done in three months, part time. Post/market to the community you're targeting. See if you can get one unsolicited 5 star review that matches your "perfect 5 star review".
4. Expand the game with some form of monetization. Shoot for making $10 a month.
5. Build another game (either for the same community or another one). Do steps 1 through 4 for this new property. Streamlining is the important part here. Figure out what you're wasting time on during development or during upkeep.
6. Start thinking of your "big" idea and what can be leveraged from your existing properties. Keep that big idea in mind and keep making "small money through many hyper niche games".

Example from my own past

For perspective, after close to a decade, I've only just completed step 5. DragonRuby Game Toolkit was the byproduct of that. The game engine codified many years of inefficiencies and trial and error. These inconveniences build up over time and will eventually become unsustainable for a small team.
I still follow the aforementioned steps when building any new product. And I'm still trying to crystalize what my "magnum opus" will be.

Lesson 5: Best practices and industry standards will not give you a competitive advantage

I could write a novel on using "best practices" to your advantage in the workplace. After all, every corporate culture strives for its workers to follow guidelines and industry standards. And it’s true— blindly following best practices and adhering to industry standards is a great way to get a job working (overworking) on someone else’s dream game.
If that is what you want, then just ignore my advice and use industry standard game engines and best practices. That is certainly the safe option, but safe is not necessarily fulfilling and rarely the most fun. If you want to have a fighting chance of making a living off of your own game ideas, throw out that conventional wisdom and learn to treat “best practices” as simply “the current meta”, and break out of those constraints. Bend those rules, examine, and dissect the best practices. Think of “off-meta” solutions to get the edge you need to survive and make it as an indie.
To put it another way; it’s not enough to be as productive as everyone else. You have to find ways to beat the averages. 'Best practices' is a complete misnomer. It’s more accurate to call them 'averaged practices', or 'generic practices'. Don’t be generic.
What I'm about to elaborate on is a hard pill to swallow. It may directly challenge your identity as an indie, and devalue all the countless hours you've spent learning an "industry standard" game engine.
The official term for this uncomfortable feeling is cognitive dissonance. But here’s the thing— uncomfortable is good. To grow and challenge the status quo, you have to make yourself uncomfortable. Average is comfortable, but success as an indie is never going to come from following generic practices, and by extension, putting out a comfortable/generic product. As indies, we don’t have that luxury, we have to beat the averages.
"If people from the industry were telling me I have to do this or that, I would run straight in the opposite direction. In order to find if there aren't any other options elsewhere." - Yoko Taro, Director of Nier: Automata
There are many examples of off-meta solutions throughout history. Here are a few examples that will hopefully encourage you to take the path less traveled:

Super Smash Brothers Melee

Super Smash Brothers Melee's competitive community has had "off-meta upheavals" throughout history. There's a 3 hour documentary series about the game's history if you want all the details.
To save some time, here are three notable competitors that have had an off-meta rise to greatness:
It's important to keep in mind that Melee has been the same game since November of 2001. When competitive play started taking off, the "best practice" was to always use Sheik, Fox, Falco, and Marth. Players would look down on anyone who used a character other than those four.
Axe, Hungrybox, Amsa (among others) proved the masses wrong. They were part of the "best practices upheaval". They prospered and gained a massive "off-meta head start" over the competition. Everyone continued to dismiss what they saw; they didn't like the cognitive dissonance they were feeling. Eventually, these players had to accept a new reality, and then find ways to catch up.
In 2001, the "best" characters of Melee were only Fox, Falco, Sheik, and Marth. By 2013, the competitive ranks included Jiggly Puff, Pikachu, Peach, Captain Falcon, and Ice Climbers.

Beating the averages with DragonRuby Game Toolkit

Building a commercial game engine is a non-trivial endeavor. I had eighteen years of software development experience under my belt (gaining a deep understanding of best practices), and only after that foundation did I have the insight on how to break the rules.
The tricky part of this lesson is that there isn't a prescribed path to beating the averages and challenging best practices. I had to find my own way and only started to consider off-meta solutions because of an essay I read back in 2010. I'd encourage you to read it too. The realization that best practices were anything but the ‘best’ occurred because of this passage:
In a big company, you can do what all the other big companies are doing. But a startup can't do what all the other startups do. I don't think a lot of people realize this, even in startups.
The average big company grows at about ten percent a year. So if you're running a big company and you do everything the way the average big company does it, you can expect to do as well as the average big company-- that is, to grow about ten percent a year.
The same thing will happen if you're running a startup, of course. If you do everything the way the average startup does it, you should expect average performance. The problem here is, average performance means that you'll go out of business. The survival rate for startups is way less than fifty percent. So if you're running a startup, you had better be doing something odd. If not, you're in trouble.
Think hard about the things you accept as "best" and see if you can find ways of challenging those ideas. At the least, I hope DragonRuby Game Toolkit helps you beat some of the "averages" that currently exist in game development.

Lesson 6: Emotion sells

When I released DragonRuby Game Toolkit, a lot of the initial marketing was based on objective metrics. Things like lines of code needed to build a game, speed, binary size, etc.
Over time I found that no matter how much objective evidence I gave, it was impossible to convince people to try DragonRuby over "industry standard" game engines. The goal post was always moved, and only resentment was left after proving someone wrong.
You have to sell your game through emotional connection. Your audience should have an emotional connection to you, your ideas, and your game/product. Try to think of that "pitch" that conveys the emotional connection.
Here's mine:
'If you want to be overworked, and underpaid, building someone else's dream game, then learn [industry standard game engine]. If you want a fighting chance of making sustainable income from your own game ideas, become a Rider of Dragons. Carry the fire.' - DragonRuby

Helpful resources

These books helped me reconcile the dissonance I felt when logic and objective evidence continued to fail me:
1. How to Read a Book: Showed me how objective arguments are formed, and when to walk away from a debate.
2. The Elephant in the Brain: Explained why we rely on emotions even when we assert that logic and merit guide our decisions.
3. Algorithms to Live By: Provided me a rubric for speaking with people.
4. Never Split the Difference: Helped me learn to negotiate/compromise.

Lesson 7: Hope

Have hope.
Your dreams and your ideals matter. They are worth reaching for.
At times, it’s difficult to keep going (especially lately). Try not to give up.
Remember, the reward is in the pursuit itself (monetary gain is just icing on the cake).
Feel free to reach out if you have any questions (or need to vent). You can find me on Twitter, via Email, or on Discord.
Have hope.