Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics


A member registered Apr 11, 2019 · View creator page →

Creator of

Recent community posts

Also come to the Discord and @ amirrajan there. He’ll help you out.

Make sure to keep all binaries in the zip file unmoved (don’t try to move binaries to a shared location). DRGTK uses a sandbox filesystem given the targets that DRGTK can run on.

DragonRuby Game Toolkit is 100% self-contained. All you need is what’s in the download :-)

Unzip, then run the DragonRuby exe. That’s it ^_^

I’m always around. Looking forward to hearing from you ^_^

Latest release should significantly improve require.

Mind coming to the Discord channel? It’ll be easier to help you there. Multi-touch support should already be there and we can talk about the camera support you need.

  • Amir
(1 edit)

We’re indies just like y’all. You’ve purchased the engine and can use it for commercial purposes with 0% royalties. The standard version is a one time purchase and the Pro version is a yearly subscription. Regardless of which you choose, you have to write to use the version of the engine you’ve purchased (the subscription is for receiving updates/newer versions).

We’ll put that in a EULA.txt file.

But the bottom line: we’re not trying to screw you over and want you to succeed as an indie.

You should only use the engine if you believe the statement above.

The game will run slower and will go back to 60hz as soon as resources are available.

Fullscreen APIs have been added. Lemme know if you need anything else.

Try adding this to your def tick method:

def tick args
  if args.inputs.keyboard.c

The code above should bring up the console if you press c on your keyboard. :-)

DragonRuby Game Toolkit Pro has released btw (which supports iOS, Android, C Extensions, and a couple of other cool things).

DragonRuby Pro supports this through C-extensions.

Mind coming to the Discord?

(3 edits)

Also check this out:

require 'ripper'
c = <<-S
def hello_world
  puts "hello world"
r = "#{Ripper.sexp(c)}"
puts "#{r.gsub(",", " ").gsub("[", "(").gsub("]", ")")}"


Ruby is as much like Lisp as Javascript is, and I’d never call Javascript Lisp-like.

More evidence!

I’m an Emacs junky too :-)

  • Amir, hacker on DragonRuby

A new sample app has been added to the download. The sample app shows how you can roll your own paint application and export sprites. Here is a preview of it:

(1 edit)

Here’s a walkthrough of the LOWREZ sample app:

(1 edit)

Here is a demo of the sample app that comes with the download (the gif also shows live reload in action):

Here’s a free “Game Jam” License to DragonRuby Game Toolkit. You are allowed to use this license for the game jam and any commercial product you want to build (no restrictions or royalties).

Be sure to join our Discord channel if you need any help:


Permission was requested from the game jam organizers before creating this post. Hope you enjoy using the engine!

Put DragonRuby Game Toolkit on the list too:

(1 edit)

Stay active in the channels and you’ll find that you’re going to grow very quickly. A lot of people in there are already ruby devs and I bet any one of them would prefer to bring on a fellow Dragon Rider over interviewing random people.

Starting a second career is hard and I understand that game dev isn’t as marketable as web dev (with rails or something). But I promise you’ll pick up a thing or two (and being a familiar face pays itself is spades vs experience).

PS: I’m working on an RTS if you want to beta test it lol

- Amir

Dark Souls is freaking incredible I agree. I’m actually mentoring some local highschool kids in a FRC Robotics competitions.

Be sure to join the Discord channel to see how I can maybe help you (and of course talk about Emacs).

  • Amir


Take a look at the “mailbox” sample app. That is a poor man’s out of proc communication.

This will be fixed in the next release. Sorry about the bug >_<

Lori is working on revamping the videos. And depreciation notices will be added. Be sure to join the discord!

I’ll double check the tutorial and see what’s going on. Do the other samples work for you?

(1 edit)

I quit my job last April and I have been living my dream full time since then

I will do everything I can to make sure GTK can help you make your dreams come true. I myself did this back in 2013. I wrote a 300+ page book about it actually: Surviving the App Store as an Indie.

  • Amir
(1 edit)

That api has been removed (it was really only useful for a small set of games). If you want to create gridlines try this:

def gridlines!
  args = $gtk.args
  args.state.show_gridlines = !$gtk.args.state.show_gridlines
  if args.state.show_gridlines && args.outputs.static_lines.length == 0
    args.outputs.static_lines << do |i|
        [i * 16,      0, i * 16,    720, 128, 128, 128],
        [     0, i * 16,   1280, i * 16, 128, 128, 128],
  elsif !args.state.show_gridlines

Then you can bring up the heads up display and run grindlines! and press enter.

Also! Come to the Discord channel if you have questions (lots of people there to help):

(1 edit)

Sorry about that. I reviewed the landing page code and updated it.

Change any occurennce of game to state and that should fix your issue. Come to the Discord channel and we can help you there too :-)

Here’s a quick demonstration of what DragonRuby can do (this is the game Amir is working on for the jam): animated gif

(1 edit)

This is a presentation Amir gave at RubyKaigi 2019 about building games using Ruby for the Nintendo Switch.

The value prop is that jammers will be able to use this platform to go from a small jam prototype, all the way to a console game, and never feel painted in a corner. The industry is sorely in need of something to challenge the status quo.

(6 edits)

Blessings from Jam Coordinators to make this post (hopefully it gets stickied too).

The link below contains a free “Game Jam” License to DragonRuby Game Toolkit. Yes, you can use the engine for the jam AND commercial games. There are no limitations or restrictions.

This zip file includes the engine and a sample platformer starting point. We’ll keep updating it throughout the jam with features to specifically support Leaps and Bounds.

For notifications of when the zip is updated, I’ll post here and in the DragonRuby official Discord channel. The channel has lots of devs there to help if you get stuck.

Super Easy Setup Guide:

  1. Unzip file.
  2. Go to the directory that represents your operating system.
  3. Run dragonruby.exe. A platformer game will load up.
  4. Open mygame/app/main.rb in the code editor of your choosing.
  5. Change the code.
  6. Save the file.
  7. Watch the game change live/hot-loaded.

How to Publish Your Game:

  1. Done coding your game? Cool!
  2. Create an page for your game and fill out mygame/metadata/metadata.txt.
  3. Double click dragonruby-publish.exe.
  4. A folder will appear called “build” that includes Windows, Mac, Linux, and Web versions of your game.
  5. Upload to Itch.

The primitives are nice for prototyping, but you definitely want to move to sprites as soon as you can. Bezier curves are on the list right now (but again, it’s best to just move to sprites/pngs after you’ve reached a certain point in complexity).

Yep. We are aware of this and it will be fixed in the next release (for faster response come to the Discord channel

(2 edits)

Shaders are on the feature list definitely. 

We currently support tint/brightness on Sprites. Here are all the options

args.outputs.sprites << {
  x: 100, y: 100,
  w: 100, h: 100,
  path: "sprites/player.png",
  angle: 0,
  a, 255
  r: 255, #  red saturation
  g: 255, # geen saturation
  b: 255, # blue saturation
  tile_x:  0,
  tile_y:  0,
  tile_w: -1,
  tile_h: -1,
  flip_vertically: false,
  flip_horizontally: false,
  angle_anchor_x: 0.5,
  angle_anchor_y: 1.0

Hmm... it's really odd that it's only on Linux that it doesn't work on.

Would you mind trying this patch and tell me what it returns?

At the top of `main.rb`:

module GTK
  class KeyboardKeys
    def self.utf_8_char raw_key
      puts "==== yay linux!"
      puts raw_key
      puts "======"
      return raw_key.chr

DragonRuby is a new Ruby (it isn't mRuby, nor is it MRI ruby). We are pushing for parity for MRI, but only if the specific api can be supported on _all_ of the platforms we are targeting. Any gaps you see, just let me know and I'll see what needs to be added.

It's probably best to reference mRuby docs, since we used that as a starting point.