If you’ve been around the indie games community for a few years, you’ve probably heard of Amir Rajan. He’s a game developer and the creator of the DragonRuby Game Development Toolkit . The story of how he made and promoted the hit mobile version of A Dark Room is legendary.
In addition to being a smart, driven creator Amir is generous when it comes to helping others learn from his experience.
My team at AppLand recently started an open source project for the Ruby community. We have a great deal of respect for Amir’s approach so I reached out for some inspiration and advice on making the next generation of tools for Ruby developers.
It seems like people with artistic sensibilities are drawn to Ruby. Why did you choose it initially and why did you stick with it?
Amir: I'd like to say dynamic languages are forgiving in nature. It feels like working with charcoal and oils. While static languages feel like you're working with marble. With respect to video games, Ruby is perfect given that game dev is an artistic medium. In essence: I'm not sure what I'm building yet, games are made of the stuff of dreams... having a static compiler asking my "what are you trying to build?" - at the inception of an idea - just ends up getting in the way.
Social awareness seems to be woven into the DragonRuby business model and it almost feels like a FOSS sensibility is lurking under the surface. Did you consider making the platform open source?
Amir: We can't open source all of the platform because of console/mobile-specific NDAs. But what we are able to open source is located at dragonruby-game-toolkit-contrib. With regards to FOSS, the DragonRuby partnership is trying to define a more sustainable software model. The OSS landscape as it stands today is definitely not sustainable. Lots of burnout, with multi-billion dollar companies profiting without giving much in return.
Generally speaking, we take the stance that: "If you are gainfully employed, then you will pay for this software in full. If you can't afford to, however, then don't worry, we'll give it to you for free."
DragonRuby's Discord game is very high. It seems like you’re investing there. How important is Discord in getting a new developer-focused company off the ground? Any tips for nurturing a healthy Discord community?
Amir: Community is very important especially for a young product. Small companies have to be personal and candid. It's the one competitive advantage we have over the larger (soulless) players in the market. The only tip I really have is to just be genuine and present within the community.
The Nokia 3310 Jam was kind of genius and it produced some really interesting projects. Was that your idea? How did you get involved?
Amir: I always keep an eye on game jams hosted on itch.io that DragonRuby Game Toolkit would be a good candidate for. After I find one, I just reach out to the organizer and ask to sponsor. They are usually happy to oblige.
DragonRuby feels very approachable to me. What level of Ruby dev skills do you need to be productive with DragonRuby? Where is the best place for people to start their DragonRuby journey?
Amir: You don't need to know much Ruby at all to get started really. You can play around with the engine in the web browser via fiddle.dragonruby.org. The docs have a good starting tutorial too. There are over 50 sample apps that are included in the downloaded that cover various aspects of the engine and video game genres. And of course, I'm always available in the Discord channel to help out. People really love this tutorial on building Tetris that Ryan created, too.
My team at AppLand makes a VS Code extension that creates software design diagrams automatically in your IDE. The visual interface we created for the plug-in was influenced by game design tools.
( or just search for
appmap in VS Code )
This is the first in a series of posts that highlight developers doing interesting or unexpected things with Ruby. I’m calling it…
Comment here or DM me on Twitter if you know of a project that should be featured.
You’ve read this far so I know you’re thinking, “I wonder if I could use DragonRuby to build a game like…”
Comment with your vote for all-time best 2D game!