Dragonruby
A Remarkable Toolkit
DragonRuby is a Ruby-based game toolkit that I first stumbled across in a charity bundle over on itch.io(the best ten dollars I ever spent)
I had tinkered with Ruby in the dim and distant past (back when Ruby On Rails was new and shiny), so I knew it was a language I sort of understood, and the whole DragonRuby package had a lot of things going for it:
-
Cross Platform; releases can be trivially built to Windows, Linux, MacOS and even browsers. Since I first picked it up, there’s been other targets added - iOS, Android, various consoles and even Oculus!
-
C Extensions; if I really hit areas I couldn’t work out how to Rubify, I can fall back on the One True Language.
-
Super Rapid Prototyping; because the underlying engine does a lot, you can get up and running ridiculously quickly. I’ve used it to prototype game ideas in an afternoon, even when it’s not going to be the final target.
-
Integration into itch.io; seriously, every toolkit should come with a single-line way of sending projects straight to distribution. It was what made me an itch.io publisher!
Of course, despite all this good stuff, I did suffer from the fact that I’m not a natural Ruby developer. And it’s not helped by the fact that for any given task, there are 7,300 different ways of achieving it in Ruby. So, fast to get into but easy to get bogged down in trying to figure out the “right” way of doing stuff.
The March Of Time
That was quite some time ago, and after an initial phase of obsession I have to admit I’ve not looked at it in some time. And that’s frustrating, because it’s such a brilliant concept that is also well executed.
It’s well supported, under constant development and with a solid community behind it. So what’s stopped me living and breathing all things DragonRuby?
-
It’s Ruby; look, I’m not a language zealot but the fact is that my brain doesn’t naturally think in Ruby. It’s not helped by the fact that it’s one of those overly-flexible languages that requires you to instinctively learn a thousand fundamental paradigms.
-
Stale Knowledge; I was pretty clued up on the state of DR back in the day, but since then there have been a lot of major releases, and it would need me to go back and re-learn everything from scratch. In fact, worse than that I’d need to un-learn what I do know, because it’s probably all rubbish now.
-
New Shinies; look, I can’t resist a new thing.
The Games
Before I got distracted, I did manage to get a few things completed, and even published.
I’ve always believed that the best way to try out a new game toolkit is to remake a game you know intimately. It means you don’t get distracted by working out game mechanics, and allows you to focus completely on how to do stuff.
Tetris (specifically, Tetris for Terminals consumed more of my time at university than I care to think. It was also where I did some of my first game coding so it tends to be a good test case for a new environment.
The source can be found lurking on GitHub, but do remember that this was the first thing written for DragonRuby, in a language I hadn’t touched for years so … it’s not pretty.
This is another (slightly later) “write what you know” style game; anybody who used Windows in the last millenium will have wasted hours of time playing Minesweeper.
The original plan, I think, was for this to be a better written, more ‘instructional’ game to help others get up to speed with DragonRuby but I’m not sure it ever really got there. But, it’s a fun little game nonetheless.
As always, the source is available
Only a month or two after I started getting more seriously into DR, they hosted a Game Jam - something they continue to do on a fairly regular basis, usually with free DR licenses handed out to let everyone get involved.
The theme for this first jam, though, was ‘minigames’ - something I’m not very familiar with, having not grown up on a console. The key aspects, though, were for games to be:
- short - 20 seconds or less, ideally
- simple - a single game mechanic
- basic - limited to one or two controls
As with so many creative activities, being forced to make something I would never normally consider playing, let alone writing, sparked some interesting results and I’m pretty happy with both of these games.
I ended up keeping the source for both games in the same repository, for reasons that currently escape me.