(Mis)adventures in roguelike development: Why now?

If you don’t know what’s a roguelike you can start here, or even go straight to play one of the most sleek and recent games in the genre: Brogue.

The definition usually covers a wide range of games but usually a roguelike is associated with the idea of an ASCII RPG where you generate a character and then go exploring randomly generated dungeons. Why should you care, tho? What is that is good and unique in these prehistoric-looking games? Is it just nostalgia?

My interest in this is because I don’t believe that it’s just about nostalgia. This interest was sparked a few months ago, when I spent several weeks going through old and magnificent Amiga games, and then more weeks on roguelikes. It was almost a frantic search. I do believe that something of value is lost and that those games had aplenty, and a roguelike is an opportunity to mess with that stuff directly. Mixing old sensibilities with the new. But nowadays roguelikes are a lot more than that. The lack of graphic let these games focus on very deep and complex mechanics that you simply cannot find in other genres. So roguelikes aren’t just old looking games with unintuitive interfaces, but also offer a kind of gameplay and complex interaction that is extinct in other games. These games are pioneers, not rearguard.

The other side of the medal is that you can mess with this stuff. Some 14 or so years ago I started in C and under ancient MSDOS an attempt to write a RPG from scratch, using the Allegro library (that is still around) and DJGPP (the Gnu compiler for dos). I wanted to build a simple foundation like the first Final Fantasy games, and then roll into that kind of engine a more deep interaction with NPCs and environments. Without the internet to look stuff up it was an incredibly hard task, even setting up the environment with the IDE, compiler and all the rest. After messing with this for a while and creating a rudimentary skeleton of a game that showed a sprite moving on a tile map (and then getting completely stuck when I tried to convert it to interrupt-based timing so that it wouldn’t run at different speeds on different hardware), I figured it would take me more than a year JUST to write the engine, and then I could have started, maybe, actually making the game, design and content, the stuff that I actually considered interesting. I realized that you either dedicate yourself fully to such a project, in a totalizing way, or it’s just impossible to make something even barely worthwhile. That’s where I stopped. I just couldn’t afford to plan things so long term and sink into that all my time. It just couldn’t be realistically done, even if I only wanted to make my own project without any intention of selling it or whatever.

If I’m back attempting a similar project is because I see in roguelikes (and in the different context, because of the internet offering so much material you can look up) the possibility to quickly get to the “meat” of the game. All the standard roguelikes build the whole game by reusing a few output functions, so the “engine” is almost directly covered. It’s like the possibility to quickly write prototypes the way you want, without the baggage of graphic. So a possibility to remove as much as possible the overhead and busywork of engine programming, and do instead game programming, design, content.

Programming is actually one of the most addicting experiences you can have. More than playing a good game, once you are in the groove. But it is also immensely frustrating if you hit a roadblock and have no way to get over it. That’s when projects usually fail. This time I’ve got the illusion that the path is viable. Because there are good libraries that cover most of the stuff I need, specifically for what I need, because the internet overflows with documentation that you can use, because I can purchase good books on programming, and game programming, and because there are plenty of roguelikes out there that are open source, so you can go into them and see how they work. Pilfer hundreds of games of their good ideas, and put them in your game. The accretion of these parts, and the original, odd mix I want to make is what I’m looking for. I will go back playing those Amiga games and classic RPGs, parse their game design, as well as taking stuff from modern, perfectly designed games like Dark Souls, and then cross-breeding all that with pen&paper RPG rule systems and classic modules. I have already a feature list planned that will take me several centuries to implement, but that’s what makes it fun ;)

I can’t say how far I’ll go, or if I’ll be even able to start. I’m essentially learning programming from zero, starting from the very bottom. My mathematical skills are also abysmal, so the perspectives are bleak. But whatever. The intention is to keep some sort of diary to document my (lack of) progress. An anti-tutorial on top of a tutorial. Whatever I make, in the short or long term, will be open source. Though it will likely take me years before my source is of any interest to someone beside me. But again, I’ll write even the diary for myself, so I can see what I’m doing and all the stuff I get wrong. The thing I hate the most is when I bump into a problem I already solved before, but can’t remember how I did it.

Obviously it all depends on how much time I can allocate to this, and with how much continuity. That’s not entirely in my control, but given the chance I’m extremely stubborn and so I’ll keep going at it.

(since you can’t post comments on this blog, use this just in case)

Posted in: Uncategorized | Tagged:

Leave a Reply