Adam: Hi, this is CoRecursive, and I’m Adam Gordon Bell. Each episode is the story of a piece of software being built.
Have you ever been frustrated with your job? Maybe not burnt out, but getting close to there? Like you used to love what you did and it felt so creative and empowering but then it starts to feel a bit more cookie cutter, grab a new ticket, build things, and some of the magic just has slowly faded away. You don’t know when it started, but it did. And so, maybe you pour energy into side projects. Maybe you work on open source or on some sort of indie development because it reignites that passion. It gives you back that feeling of it being a wide open space where you can build what you want because somehow that’s been lost in your work.
Have you ever been frustrated with your life? The daily grind has taken what you love and it just doesn’t feel the same anymore. The things that used to excite you have changed.
Today’s guest is Amir Rajan. He’s hard to describe. Is he a developer? Yes. An artist who sold everything that he owned for indie game development. Yes. Subject of a New Yorker profile? Yes, all of that. And also, somebody who got frustrated with his job and left everything behind. But none of that is how Amir describes himself.
Amir: One of my friends, he worked with me at a client. The client asked me this thing, “So what do you do?” And my friends just looked over and was like, “He’s a code hobo.” I think that’s probably the best description I’ve got. But I guess the official description would be, I’m a game developer and a runtime engineer.
Adam: Amir’s journey has three major chapters. First, his early days as a software consultant, hungry to prove himself to the world. Then his accidental pivot into game development, which took the world by storm, seriously. And then finally, his quest to build the tools that empower other indie devs. It’s a wild story about how passion can push you forward, but it starts back in the mid two thousands when Amir worked as a .net and C# software consultant.
Amir: One of my good first gigs was GameStop. And it is like I’m a gamer and I’m working at Game Stop! … I go into the corporate office and there’s cubicles and box charts of game stuff and the price labels on the boxes, that was me. I contributed to the price labels on boxes that people scan. And you work on the inventory system and the barcode scanning and it’s all fun and new. So, those were some of the good things.
And then you work with other people that have that same passion. They see me as, “Hey, this guy wants to learn something and let’s point him to some different things so he can pick it up.” And those were a lot of the good things there.
Adam: But the GameStop project ended and Amir moved on to other clients and not all of them were as great.
Amir: And one of the developers, he was assigned this work to create some controller actions that retrieve, that required the existing user plus some products or some tax documents that are associated with that specific company. And they would go into every single controller and put in that same retrieval code over and over and over again. And it’s like you’ve done it 15 times. I sent you an email saying, “If you use this model binder, it’ll take the HTTP request. You get the parameters and you have it hydrated right there before it even hits that function.” And it was just a shrug. It was just like, “Well, whatever. I’ll just copy and paste this code 15 times.” And I’m just like, “Okay.” And I fix it. I just clean it up and put the commit in after the fact.
And it was just a lot of those recurring aspects of, “I know how to do this specific thing, so I’m going to continue doing it this way.” As opposed to taking that extra step to find maybe that better solution.
Adam: By this time, Amir was leading projects. He came on board as an external consultant and he had high expectations.
Amir: You must be great at your job and you must excel. And if you’re doing anything less than perfection, then you’re a waste of time. And having that mindset put me in a position where I’m surrounded by people that don’t care.
I was like 24, 25, and they’ve had that experience. They’ve seen frameworks come and go. The new tech or the new hotness come and go. And a facet is like, “Well, why bother learning it?” Because this works. It’s simple, it’s dumb. You just copy and paste 15 times and it works. And then I don’t have to think about it.
Adam: I feel like maybe just because of your game story, you want to grow as a character. You want to level up and they’re not interested in that or …
Amir: Yeah, they’re like, “I’m good. I found this little village. I’ve set up shop, I’m happy. And yeah, it’s a little painful, but everyone else here is used to the same pain and it’s okay. It’s not an issue.” But yeah, I think I’m the adventurer that’s going through and has gone through this village and then wants to get to the next one. But everyone’s here is just kind of like, “Hey, we’re good. We’re chilling.”
Adam: So, this pattern continues, project by project.
Amir: The different verticals and business environments was super interesting to understand, but I think the general facet of it was I was getting burned out on having this disconnect, with respect to what I valued in a system versus the general populace that I was working around.
Adam: Then this sense of indifference, it started to get to Amir himself.
Amir: I was working really hard and chip on your shoulder. The young kid who’s got the senior position, everyone’s like, “You don’t know anything.” So, it felt like I was painting drywall. It’s like I want to be painting murals and I’m getting paid very well to decorate textured walls.
Qlobe and Ruby
Adam: Around this time, Ruby was gaining popularity and it seemed like a different approach from the tedious work that Amir was getting tired of. So, he started playing around with Ruby on his nights and weekends. And then he saw it.
Amir: It’s to this day, the most beautiful piece of code I’ve ever seen. And it’s called qlobe. So, it’s Q-L-O-B-E. It’s an ASCII drawing of a globe. And this ASCII drawing of a globe is actually a valid Ruby program. So, you can run qlobe.rb and the output will be the same ASCII globe, but rotated.
Adam: If you run it enough times, you end up back at the starting globe. So, it’s a ASCII drawing and a program and a coin. It’s a program that produces itself. This code was by Mame, a Japanese programmer. He’s now known in the West for his odd creations. But in 2010, the Western world was just getting to know him.
Amir: One of the weirdest ones that he created was that he created a program that when you send it to a 3D printer, prints a cylinder with the program written on it. And if you scan the actual thing that was printed, it gives you the program that generated the 3D thing. It was humbling to see this because I understood what it was, I understood what it did, but I couldn’t write it. You think you’re really good at programming and on some spectrum you are, but then you see qlobe and you’re like, “I know what it does and I understand.” It’s 100, 200 lines of code, but I can’t write it. And even if I could write it, what kind of mind did it take to envision something like this?
It was bittersweet. It was humbling to see that. I was happy to see this other world and the creative outlets in the Ruby community, and then that further exacerbated the feelings that I was feeling.
So, Amir thought maybe
.net just needs some of these tools and techniques from Ruby. Maybe it needs some of this creativity and spirit. They probably weren’t ready for Mame and spinning art projects, but he could create things, he could pull ideas from the Ruby way and show the .net world.
Open Source .Net
Amir: So, I got very heavy into open source development. So, rspec is the testing framework that exists on Ruby. And me and another one of my colleagues ended up creating nspec, which was a C# implementation of rspec, and we spent three years developing on that. It was some heavy investment in there.
Adam: So, then you could do better testing in .net, but there was more to do.
Amir: I wanted to look at the C# dynamic language runtime, which allows you to use the dynamic keyword and gives you the ability to use dynamic constructs in a statically typed language and have a hybrid or progressive type system. So, I did some open source development around how can you use the dynamic keyword to make it easier and improve the quality of life of doing web development or C# development. And same investment there. It was quite a bit of time, the same three-year period.
Adam: And there was more after that. Ruby was big on creating small, task specific languages, tiny DSLs for BDD or UI automation, clicking on buttons.
Amir: Me and another friend got together and we built Canopy, which was UI automation framework for doing UI automation using F# and having this nice DSL.
Adam: With all these tools Amir was adding to his palette, he could now build business applications more creatively.
Amir: I’m no longer using … use MSTest with Unity framework with .net MVC, create your stored procs, this run-of-the-mill rubric, just paint by numbers kind of implementation. I started getting into more of the creative facets of, well, what is a C# implementation of rspec going to look like or what are some interesting ways that we can use the DLR for? What are some interesting things we can do with F# sharp? F#’s not widely used, but is there a place where it can live and have value of the .net ecosystem that just works well? And I think a lot of the creative aspects of programming started to come back up with open source development.
Adam: So, that was three years of coding during the day as a consultant and then nights and weekends working on open source. It seems like a lot, but for Amir, program was more than just a skill. It was a creative outlet. It felt like drawing did when he was younger.
Drawing as First Creative Outlet
Amir: You’d probably look over and I’d be drawing Spider-Man, something like that. I think one of my first two drawings I can remember is Sonic the Hedgehog and then Chip from Beauty And The Beast
Adam: Is Chip the cup or what?
Amir: The cup, yeah. Yeah, it was the cup. I mean it was simple. I was like, “Oh, I can draw this.” And I drew Chip, colored him in and everything. It was great. And then that kind of feedback loop comes into play where you get some validation. It was like, “Oh, you drew that? That’s amazing.” I think those things further encouraged that kind of exploration and discovery and some of those artistic things.
Adam: It’s like there’s a two-step process to creating. One is the creation itself, which can be its own reward, but the second step is important. It’s when you get external feedback. If it’s praise, then great, but if it’s criticism, you can improve and you can get better. But back in 2013, Amir was three years into open source and he was getting neither feedback.
Amir: If I went to a client say, “Hey, let’s use nspec.” And they’re like, “Well, why would you use that? We’re going to use MSTest.” And it’s like, “But this thing is a lot better, it allows for nesting and some of these advancements.”
“Like, Yeah, but MSTest” …
Adam: And so after three years, Amir faced a decision, was he having an impact? Were his efforts actually changing the .net world?
Amir: They failed. I don’t know how else to say it.
I mean, it’s just tough. There’d be some really great library out there and then there’d be this Microsoft mutation, which was worse, objectively worse, but that was it. And it would extinguish any momentum that an open source source library had. It’s impossible to fight that 800 pound gorilla. And it was frustrating.
Adam: And then his project reached an end.
Amir: I could roll onto another client, “Do I really want to do that?” I was like, “I don’t think so. I think I need to just take a break.” I was just tired. I was very, very, very tired. I think, yeah, I just needed to rest and disconnect from everything. And I think that’s how I started. I was like, “Well, let me take a three-month sabbatical and I’ll come back afterwards.” And then that ended up being, “Well, turns out a lot of cool things happened. I’m not going to come back for a while.” And now it’s 10 years later.
Adam: During the sabbatical, Amir could structure his day however he wanted.
Amir: I slept in, turned off my alarm clock, which was great. Let me get out of this schedule of pressed shirts and pressed pants and dry cleaning and waking up at 7:00 AM for a 30-mile commute and just stop all of that and reset from that standpoint, I wanted to start exercising, so I was like, “Okay, I’m going to do the gym thing. Just get into it, get into a routine.”
So, I had a Windows laptop, got rid of it, ended up getting a Mac, I had a Windows phone, got rid of that, ended up getting an iPhone and just went head deep into the not .net world. So a lot of Node, lot of Rails, Ruby, iOS development, Objective-C, and that’s how I started. Yeah, I started … there were some hackathons, Node KnockOut was a big coding event, where you put a team together and build something.
A Dark Room
Adam: Then one day he saw a browser based game trending on Hacker News. It was called A Dark Room.
Amir: And I started playing it. This was about a month and a half, two months into the sabbatical. I was like, “Hey, I really like this.” So, I loved the minimalism of it. So you see the visual aesthetics of the game and it’s like one button. It’s all black and white, ASCII, very clipped sentences and sentence structure, minimalist design. And that spoke to me from that perspective.
The other thing, it was easy. It looked easy. I was like, “Oh, this is a piece of cake. I could totally port this over to mobile.” And the complexity of the game is it ends up opening up into a Rogue-like, like a ASCII map, it’s really complicated game. But the initial process of, “Ah, I can totally make this.”
It’s interesting. It’s a fun little game. I think the ease of it, the approachability of building something like that kind of spoke to me. The fact that it was had some popularity and some traction on Hacker News gave it some clout or some viability into being potential commercial product. And I View Source and I found the contact information, Michael Townsend and I emailed him and said, “Hey, I’m taking a sabbatical. I wanted to get an iOS development. Can I port this to mobile? Throw it up there for a buck, buck 99 and if it makes anything, we’ll split the profits?” And he just said, “Yeah, go for it.” And I was like, “All right.”
Well, that was one email. That’s where the sabbatical started to crystallize, was I was like, “Okay, I’ve got a project that I actually want to complete and finish, and this is something that I can do and I enjoy because it’s game development, let’s see where this goes.”
Adam: So, he plunged into the process. He wanted to stay with Ruby, so he got a RubyMotion license and started writing Ruby for iOS.
Amir: There were a lot of pacing challenges in the game. I wanted it to be a bit more of an active game that you actually interact with, as opposed to having just sit on a browser. There are some narrative elements that I wanted to add to it. So, it’s best that I officially say that I ported the game, but people that have played the game say that these are two different games.
Adam: To get the game where he wanted it, Amir had to learn the rules of game design. The first rule is simple but hard.
Amir: Build a 20 second experience. So, something that communicates the hook of the game and why someone should continue playing within the first 20 seconds. So, King did this, they’ve got a bunch of live ops and Candy Crush and things like that, and that’s the fall off point, 20 seconds. That’s all you got. So, if you can’t communicate why a person should continue playing your game within that first piece, that’s including the moment they hit the button, so menu selection, options, splash screens, credits, you’ve got 20 seconds to get to that point. So, you’ve got 20 seconds to communicate why someone should continue playing your game.
Adam: The other thing, is everybody wants to build a game. Game development is competitive. And if you look at the pure numbers, it almost seems like it’s impossible.
Amir: 50% of the apps and games on the stores never get downloaded. They’ll never get downloaded. 100% sure that 50% never see the light of day. They get put up there and no downloads.
Adam: And it’s not just that. Even the games that are downloaded, out of those, the ones that people pay for more than 90% won’t make more than $5,000 in a year. That’s not a full-time income. Can’t live on that. But if that’s the case, then why spend this hard-earned sabbatical time building a game?
The Value of Time
Amir: There’s a certain value that we haven’t measured, with respect to someone else giving anything that they can do during their leisure time, instead deciding to pick up your game and play it. Whether it’s free, whether it’s paid, but saying, “This hour I could have spent anywhere else, but I’m going to spend it playing your game.” And I think that’s worth something.
There’s this idea of time and valuing the time that you spend in something. How much is a human life worth? I asked people like, “You have a loved one. For 10 grand, would you take a month off of their lives?” The answer’s never yes. And you keep raising that value, would you take a billion dollars? No, there’s no amount of money that I would take to take one month out of some loved one’s life, or some pet’s life, or something like that.
I think a facet of it is that no matter how much money you end up making in your game, it’s not going to offset the hours that you put into building that thing. So, you have to enjoy it. You have to enjoy the work that you’re doing,
Adam: Enjoying the process and valuing the creation of your art is one thing, but let’s be realistic. It’s hard not to dream that your creation will hit the top of the App Store and make you millions. So, come September on release day on the App Store, Amir was filled with anticipation.
Amir: It just hit the App Store. We tweeted about it and we were hoping, yeah, we’re going to make our millions. And that definitely did not happen. We got 30 downloads. That was our smash hit. It was 30 downloads, 30 bucks in one day. I was like, “All right. Well, now what?” From your perspective, have you dealt with facets of losing yourself in coding and then these ideas, these business endeavors where you think it’s going to be this huge hit and then find that not the case?
Adam: Yeah, whenever I take on a coding project and get excited about it, there’s always a part of me and my mind that thinks it’s going to change the world. You just get excited.
I think there’s the XKCD comic where he has to save the world with Perl or something like that. And it’s like you just imagine each little thing you learn, imagine that, yeah, this will change everything. Maybe I’m just delusional. Maybe that’s just personally myself, but no, I always feel that way.
Amir: Yeah, it’s an unfortunate aspect of it. I think that it’s worth communicating that there’s a 50% chance that no one’s going to download it, and there’s a 90% chance that it’s not going to make more than 5,000 a year. It’s hard to hear, but it’s something that I feel is worth communicating.
But no drama from that standpoint and just measuring expectations, getting 30 downloads a day on an app or a game, it’s pretty freaking amazing. We were down because we got all this coverage. It did so well on Hacker News. We thought it would do better than it did. But in retrospect, knowing what I know now, having something that gets that many downs in days just is phenomenal.
Adam: Well, all this was going on. Amir was working out of a co-working space, and he tried to get the manager there to play the game.
Amir: He was just a developer, hacker, just like all of us. And I just said, “Hey, I built this game. Here’s a redemption code, and here you go, you can play it.” And he’s like, “Oh, thanks.” And I didn’t hear from him. He just took the game and you open up the game and you’re like, “What the hell is this stupid thing? Thanks. Thank you for the monthly co-work subscription, and I’ll pat you on the back.”
But after the release happened, and I was at the co-work place and just working on another Node Knockout hackathon at that point, but he comes over and he’s like, “Oh my God, this game is amazing.” And I’m like, “Oh, so you actually played it?” He’s like, “Yeah, I was on the airplane and I didn’t have internet connection or anything. And I was like, ‘Fine, I’ll open this up and play.’ It’s amazing.”
And I’m like, “Okay, I’m glad you played it.” So, I think that was one of those feelings where, yeah, you ship something, you’re in this routine, you’re your, air quotes, true self. You’re working how you want to work, you’re building things how you want to build them, on the schedule you want to build them and people are a appreciating it. And I think that was a unique feeling.
I feel like a turtleneck-wearing, beret-wearing, pompous person. But yeah, I mean, I got to say that I’m an artist, and I think that’s the facet of it, is having that validation is important. It’s an important aspect of it.
Adam: The feedback isn’t always praise. Sometimes it’s a bug report. Like the person who emailed and said they were stuck on the ASCII map, they couldn’t get past it. Was there a bug? Was that slowing adoption?
Amir: I tested this thing hundreds of times. There’s no way that there’s a bug in it. And he is like, “No, I’m blind and I’m on this map, and all I hear is, ‘A-A-A-A, comma, space, semicolon, T.’ “ And I was like, “Oh man. One, you’re blind. What the hell? And two, you’re playing what game? What the hell? And how’d you get this far?” And it was a lot of emotions coming together all at once. So, the game was text-based and apparently the iPhone have phenomenal accessibility built in for people that are blind so they can use voiceover to use their iPhone. And they thought it was like a narrative, choose your own adventure novel, which is usually amicable to people that are blind. And he started playing the game.
Adam: And then he got stuck because the later parts of the game weren’t playable for the blind, but this gave Amir a new project to work on. And so, he started working on making the game accessible, and six or seven months passed like this, getting some feedback, adding some more polish, doing a hackathon, and so on. And then April 11th, 2014, with his sabbatical money running pretty low, something happened.
Amir: Out of nowhere, we go viral in the UK and we went from like 100 downs a day, and then the next day we were up at 800 downloads in one day. And we’re like, “What the … “ and we looked online, we changed our browser setting to UK, and there was nothing, there was nothing online about … This was back in 2013, but there was no information online. I think we found one article in The Sun newspaper about A Dark Room, and then the next day it goes to 8,000 downloads in one day and we don’t understand what’s going on.
And it hits the number one spot in the UK, and we get 8,000 9,000 downs a day for six days, and then it drops off. And as it was dropping off, it starts rising in the US. So, I guess Apple’s algorithm or whatever helped us bump up, and we went from 30 downloads, to 100, to 1,000. Then we had 8,000 downloads in one day. We were in the top 10 at that point. And then we hit the number one spot in the US and it was at 20,000 downs a day.
Adam: In Amir’s memory, this time is all a blur.
Amir: So, the App Store ranking system refreshes every three hours. I know this because that’s when I saw shifts in the ranks happen. So, every three hours is how they update their placements in the App Store. But I don’t think we’re prepared to see 20,000, essentially $20,000 a day getting deposited into a bank account. You get a few hours of sleep, I wake up, refresh the App Store, see what the ranking is, go back to sleep. Wake up, refresh, daydream, calculate numbers, and peruse the internet to try and find how this even went viral.
Nothing makes sense. We have no idea why it went viral. We still don’t know. When we got past the week point, we started wondering, how long is this going to last? And then when you get back two weeks, you start thinking about how many days does it need to last for you to never have to worry about money ever again? All those thoughts in your head and the excitement. And we started getting interview requests from The New Yorker. We got an interview in The New Yorker, it’s crazy.
Adam: When does The New Yorker write about video games?
Amir: Yeah, yeah. It’s crazy, you’re right. But they reached out to us and we gave an interview to The New Yorker. It’s the wildest thing.
Adam: The New Yorker article was titled A Dark Room: The Best-Selling Game No One Can Explain. And interviews with the Dallas Morning News and articles in Slate and other places followed. It ended up staying in the number one spot in the US for 22 days. It generated some serious buzz and it was doing $20,000 a day in revenue.
Amir: And then on day 22, we dropped from the number one spot and went to the number two spot. We just continued our fall from there. But even at the spots we are, we’re making 1,000 downs a day, what do you do you do with that money? What happens is that it gets split into royalties, and then taxes and all that good stuff, and so you’re not left with as much on the tail end, but I just didn’t sleep. It’s all a blur, frankly.
Adam: Sometimes it’s better if you don’t remember things well.
Amir: We had 35,000 reviews at that point. Most of them were five stars, but there were one star reviews, and those hurt. They really hurt. One of them I said was like, “This app is a scam. I feel like I paid 99 cents to tap on a screen, and you would’ve been better off buying a head of lettuce and tapping that and having a salad afterwards instead of wasting money on this stupid, rubbish application.” And I’m like, “This hurt.”
Adam: Someone one star reviews, mentioned little things that were in the back of a Amir’s head that he was already worried about.
Amir: I feel seen, and I don’t know how to respond to this. Do you ever get used to it? Is that just something that I say in my head is I get used to it and it’s a new normal?
Adam: I guess that’s something that as a creator that wasn’t clear to me before I had created anything that people paid attention to, is how vulnerable you are when you create something and then you put it out there. It feels like …
Amir: It’s a part of you.
Amir: Yeah, you’ve put a part of you out there, especially with creative endeavors, there’s a part of you in those things that you create. So when someone speaks poorly of it hurts because it wasn’t just some Rust API for managing bank ledgers off of some requirements document you that you put out there. And so, I feel it. And I got an email from a guy that was like, “Hey, I’m really glad you made this game. My sister in junior high, she’s completely blind. And she was finally able to participate in a conversation with her classmates that are not blind about a game that is the number one hit.” And yeah, it was a good feeling. 1.99, it was two bucks for the game, but it meant way more to his sister and him.
Adam: After all this, Amir couldn’t go back to his old life, to his pressed shirts and commutes and trying to convince C# devs to use his libraries, his software. This game dev life was too exciting, although it turned out that very quickly he ended up back trying to convince C# devs to use his software stack, just in a manner that he could have never predicted when he went on sabbatical.
Amir: So, after that, I built a pre-sequel to A Dark Room, and that ended up doing real well. Hit the number five spot overall on the App Store. So, that ended up doing extremely well. That was released towards the end of 2014. And then after that, I built another game called A Noble Circle, which is a satirical game based off of Edwin Abbotts’ Flatland: Romance Of Many Kingdoms. And I released that around 2015, 2016. None of them ended up doing as well as A Dark Room. So, I’m still trying to get out from underneath the shadow of that first game.
And that just became my learning, was that I would build a game and I’d release it and cater to specific audiences. And I was good at it apparently, because they all continued to do well. Up to six production titles at that point. And then this was 2016, 2017, I ported the game, A Dark Room, to Android. It hit the number two spot on the Android App Store, so right below Minecraft.
Adam: But there was a problem. With more titles, keeping everything working on all platforms was just a lot of work. It was maintenance to do on software. And maintenance, importing things to different platforms, it wasn’t as fun. It was more like painting drywall than painting murals. It was better than corporate work, but it didn’t always scratch that itch of making something from scratch, of making your art.
And then something exciting happened. He got approved to port A Dark Room to the Nintendo Switch, a huge platform. It was a big opportunity, but yeah, it’s another port. It’s more mechanical than creative.
Amir: I was facing that annihilation where I wasn’t creating new art, but instead, maintaining all these other pieces of art. And that’s where I was like, “Okay, I need to stop. I need to reset and figure out something some means of actually deploying cross-platform really.” Instead of just the language and then having challenges with changing UIs or tweaks based on OS, but have some unified model of actually building games so that I can continue building games and get rid of this feeling that I kept struggling with.
Adam: So, Amir’s plan for 2018, pause game development, build these tools, get rid of the maintenance.
Amir: I need to port A Dark Room to the Nintendo Switch. But during that porting process, I need to solve these problems so that when I’m porting the rest of these games over, and when I’m building new games, from the right out the gate, they don’t have this challenge in upkeep. And so, me and I partnered up with Ryan C. Gordon, he’s icculus on Twitter. He’s one of the core contributors of libsdl. So, it’s a simple direct media layer, is a C library. It’s used by Valve. The Steam client is built with sdl, like AAA Games. It’s a really, really powerful, battle-hardened multimedia library.
We got together and built out this cross-platform Ruby runtime that allows you to build games for any system. One code base that works, that just works, and lets you release everywhere and not have to worry about the battle scars and the struggles that I was dealing with. For my own sanity, let alone someone else’s.
Adam: So, the runtime engine, the one that used SDL, it was a success. It made A Dark Room on the Nintendo Switch possible. You could share a code base across platforms. And then they released this platform, this tooling, as DragonRuby, a fast Ruby runtime that lets smaller game devs target all these platforms with less overhead.
It’s the tool that Amir always wanted back when he started. And so, he was excited and he started spreading the word about his amazing creation. But that’s just trying to convince developers to use the software you built again. And that’s when the problem started.
Selling the Dream
Amir: I would talk to Unity devs and they’d go, “Well, you’re making a game engine with Ruby. I mean, that’s slow. C#’s way faster.” And I’d go, “Well, no. Ruby is a language. It’s not a runtime. And here’s a YouTube video comparing how many Sprites can be rendered on the screen versus Unity.” And I show them rendering 20,000 Sprites at 60 frames per second while Unity gets like 10 frames per second. And then it’s like, “Well, yeah, but what about physics?” And then I show them menu to menu collision and how much faster it is. “Well, what about … “ and it would be like this goalpost move.
Adam: This whole thing was frustrating. It’s the whole end spec thing all over again. Except now the stakes seem higher because Amir cares so much about creative game-making. He’s passionate about empowering people to create. He wants them to know that they can build things. He wants them to be able to follow his path.
Amir: I do feel I give a shit. I really, really, really do care. How many pins have to be lined up perfectly, how many things have to not go wrong for you to be able to say, “I’m going to take six months unpaid off, to do whatever I want.” And I just lucked out there. And another group of people might be in the same position I was where they did take that sabbatical, but it didn’t hit the number one spot. And they rolled the dice and they tried and they took their life savings and put it on the line and tried for six months. And then what option you have? You go back and that’s it.
Adam: Amir wanted to help all these other proto game devs. And it turns out that passion, his passion in empowering people to create, was a better selling point than any technical achievement he could get under his belt.
How Can You Build the Game of Your Dreams?
Amir: And so, what I usually say now is, “Look, if you want to be overworked and underpaid at a game studio, and then after release, be immediately laid off, learn Unity. Learn the industry standard, dig in, get your job, make your 40 an hour at 80 hours a week and then let go. But if you want a fighting chance to have sustainable income with the things that you want to create, that’s when you want to use DragonRuby.”
If it’s been a while since you’ve written your, “Hello, world,” think back to when you decided to start being a developer. And usually it’s like, “Oh, I wanted to build a video game,” or something like that. Yeah, try to find a way to rekindle that. How can I make it to where you can sustainably make some money off of that? If it’s $50 a month, okay, that’s something to start with. Framing it that way was better. It helped move the conversation past all the objective answers like, “Well, how can I help you build the game of your dreams?”
Do or Die
Adam: So, this worked. DragonRuby has been out for four years now, and people are using it to make their games, to make their creations, their art, whatever you want to call it. It’s been a decade since Amir quit, but he finally overcame the issue that caused him to quit in the first place. He convinced people to choose his software over Microsoft, over Microsoft stack. And his secret wasn’t technical merit, it was his passion. But also after a decade as an indie game dev, some of that passion, some of that focus has changed.
Amir: It’s do or die. I have to think about monetization. I have to think about, I really want to build this, but is it going to be something that works out? I don’t have the luxury of doing a labor of love over some long period of time. It’s got to hit, it’s got to sell. I got to bet the market quickly. I got to fail fast. So, if all the stresses are there … which go away when it’s just a hobby, right?
Adam: Does that change it at all?
Amir: It’s more stressful. Air quotes, less fun. Is it more fun than a 9:00 to 5:00? Oh yeah, 100%. I mean, that aspect of it, air quotes, takes the fun out of some … I got to do marketing. I got to do taxes. I got to do all those trailer videos and 16 different versions of the game logos, so I can deploy to Steam. You have to do those things, but way more fun than a line of business applications.
Adam: And so, Amir continues on the success of the Switch release of A Dark Room, the community growing around DragonRuby and RubyMotion, they’re proof of that. And over the years, Amir’s brash attitude has mellowed. His ambition is still strong, but now it’s mixed with this kindness and this desire to help others.
And isn’t that part of creating, of making art, or just about anything? There’s the highs of success and praise, and the lows of failure and criticism, and the thrill and anxiety that comes with validation. But there’s also this last stage, empowering others to create. After all, what’s creation without sharing with others the power to create?
That was the show. You could find Amir on Twitter @amirrajan and A Dark Room and his various other games on the various platforms we discussed. A Dark Room should be on Steam at some point soon. And if you liked the podcast, please tell others about it. Maybe share it on your company Slack or whatever your online watering hole of preference is.
Just like Amir’s online success, I usually have no idea where listeners come from except when the podcast is occasionally showing up on Hacker News. So if you’re on Hacker News, share away. And if you want more episodes, join the supporters group. We have more episodes there.
But really, as Amir says, with all the things that you can do with your time and the amount of content that’s out there, even you just giving me your time to listen to this episode that I helped create, well, that’s probably enough. That’s why I always end the episode by saying thank you so much for listening.