Heroic Fisticuffs!

Here's a place where I talk about games, applications, websites, and other things that I make for fun. Mostly roguelikes. And pirates. And robots. Since my domain is hard to spell you probably came here on purpose.

Tired of Caves?

During my first 7DRL the only dungeon generation algorithm I had was a variation of this roguebasin article. For the next two 7DRLs I kept the same algorithm, but only because I ran out of time to make a new one. For GnomeSquad, this wasn't as much of an issue, since caves fit the theme of a bunch of Gnomes adventuring deep underneath a mountain.

For RoboCaptain, this was more of a problem. I knew I wanted the player to control a murderous robot, but what the hell would one be doing in a cave? (Secret rebel human lair under a mountain of course)

Not that these things matter very much, but I want to be sure I am not unprepared for my next game (whatever that is...), so I have been working on dungeon generation. I have read and re-read Andrew Doull's series of articles on dungeon generation in Unangband, and want to put some of those ideas to work.

This is what it looks like so far:


The blue rooms represent a 'region', which correspond roughly to Andrew's room types construct. These could be a special area of the level, or an area that a certain monster hangs out in, or nothing (or anything!). I'm trying to build a system that can handle this kind of thing from the ground up, without getting bogged down too deep in trying to build the "perfect" dungeon.

I also put some decent effort into the display code (seen above). This is only for my own personal testing. This added a slight overhead to the actual dungeon generation code, but I am trying to take a page from Bret Victor's book and invest in some great and easy visualization features, to make my life easier. I'm not saying I will end up with anything nearly as slick as his tools, but so far they are a nice step up from the usual crude text file dumps.

The actual code is in python but serves output as JSON, since my next game will run in JavaScript, I think this will vastly increase my flexibility. Maybe if it ends up being good enough I can share it as a web service, or at least as a cool visualization tool online. (Although the "market" for a) JavaScript roguelikes that b) don't want to use their own dungeon algorithms is probably zero)



No comments:

Post a Comment