Hello!
I've been plugging away at this for a little while, largely because I find the inherent problem (dungeon generation) to be a very intriguing one. So, after about two months' of work, I've come up with an algorithm which produces the following (map legend will be beneath the image!):
White -- Walls, obviously!
Light Grey -- Caverns! (Produced via cellular automata)
Dark Grey -- Chasms (also produced via cellular automata)! With light grey 'pathways' connecting their edges.
Any Other Color -- A particular 'Dungeon Zone' (I haven't gotten around to distinguishing dungeon zones yet).
The thing is, after doing nothing but dungeon generation for two months, I have realized two things: I am sick and tired of dungeon generation (but willing to work on it a bit more later down the road!), and I also have absolutely no idea if the maps I'm producing will be suitable for roguelikes in general.
I really love roguelikes--I'm trying to build my own (it's my first stab at programming!)--and I figure that now is a good of a time as any to start asking for advice and feedback and trying to acquire the collective wisdom of others who *have* built roguelikes, and *do* know quite a little something about the problems I'm trying to tackle.
So, some of the questions I wanted to ask here about the above map:
* Is this too big for a roguelike? It's 200x200; I can shrink or expand it to any arbitrary size (though obviously it starts looking a little weird when you get as small as 20x20!). I'm trying to find other roguelikes to compare my map size to (such as Incursion) but I'm finding it hard to get any hard data on what the standard map-size tends to be.
* Are the 'double walls' something you usually don't see in roguelikes? I'm worried they're a bit aesthetically off-putting--part of the problem is that because of the way my zoning/structure/room procedures work, ensuring no double walls is actually a bit tricky (but not impossible!). It is way easier to just allow for them in an orderly way.
* One of the ideas I had as far as dungeon generation goes: Why not put the stairs leading up/down in the same 'zone' (area)? Have them always occur in the same area--because really, I see no reason to make the player search around for a set of stairs to proceed! This has the benefit of making stairs easy to code, but also gives the player an interesting initial choice: Go down a level for greater risks/rewards? Or wait until they've finished exploring this level? -- is this a good idea? Are there any reasons why it might be a bad idea?
Some of the things I'd like to put in this algorithm after I take a little break (I'm going to work on monster AI for a while, I think--meanwhile, I just want to talk about dungeon generation without actually *doing* dungeon generation):
* More distinguished dungeon zones--I'd like to make some of them have a very structured 'built-for-a-purpose' look, others to appear quite chaotic and organic, and perhaps even a rare labyrinth or two.
* 'Massive Room' zones--in cases where a zone ends up only being one region, I'd like to turn the zone into a single room rather than multiple rooms--just a really big one!
* Chasms, lakes, magma, and other 'obstacle' structures within Caverns themselves--the caverns I'm building look extraordinarily boring (to me! But then again I've been staring at them for over two months). I'd like to put in interesting features that don't block access to all points.
* Puzzle trees! Brogue is one of my favorite roguelikes ever, and one of the things I'm enamored of about it is the puzzle system--I'd like to do something similar (and thanks to the dungeon generation algorithm, I already have the basic architecture necessary for such a system in place!). Mostly, I'm thinking of doors that lead to 'dead end' zones that need a special key (found in another zone), or obstacles that require some item that must be found in the rest of the zone.
* Also, I'm welcome (and very interested) in suggestions about ways to make the shape of these zones more interesting! Or different types of zones for me to define!