Thursday, April 26, 2012

Building roguelikes the wrong way

I've been working on a roguelike game in some of my spare time. Like all my projects, it has no release schedule, but I've put quite a bit of time into it, and into reading articles that advise people on how to make a roguelike.

The problem is, I find myself disagreeing with much of the oft cited advice I'm finding repeatedly in these articles.

 One particular gem that I can't escape from is that you should build your visualizer and the ability to move the player character, creating a large empty space with an @ sign that can be moved around with the arrow keys. Many even recommend doing this before implementing things like time, or a player character.

 ...

 This explains so much about the common flaws that roguelikes can't seem to escape from.

A good roguelike is about exploring a mysterious realm and using the things you find there in inventive ways, in order to survive, by the merit of your own wits and strategy.

 A bad roguelike is about wandering around in a bunch of empty rooms until you starve to death, because the RNG wouldn't give you anything to eat.

If the convention is to create huge empty spaces and them worry about what's going to fill that space and what it's going to happen in there later, no wonder so many roguelikes end up being about wandering around in empty rooms doing nothing interesting.

I will not do things that way. My first visualizer test, while not yet complete, will include a map with only 1 square (0,0). If I can draw an empty tile, with a character on it (characters will be partially transparent sprites, rendered over a tiled background) then my visualizer works and I can get started on an interface. Once I am ready to introduce combat and movement (which ought to be more intrinsically intertwined than "move into target to hit it") I'll move to a 5x5 map (a 3x3 room surrounded by wall tiles, to test that walls work).

Until you're testing camera movement, level generation and LOS mechanics, anything more would be a waste, and when you're going for minimalist visuals, wasting screen real estate is a very bad habit.