ID:38
 
Having put much more thought into it than I really wanted to, I've decided the best way to handle random map generation in Monstoro is probably an idea I came up with some time ago. The Monstoro will have four standard decks -- A, B, C, and D -- and each deck will have a standard complement of rooms (the bridge is always on the same deck, the mess is always on the same deck, etc.). BUT: the game map will contain several different versions of each deck. So there might be five different designs for B deck, three different designs for D deck, etc., and at runtime each deck is assigned one of these map levels. (At one point I actually made a decent system for creating purely random map levels, but the results tend to look too random for my tastes, even though you can apply constraints to various rooms -- e.g., the bridge has to be at the top of the screen.)

The only requirement will be that every map level feature a standard "hub" in the center of the map (or perhaps a little north of center) with a ladder and four vertical ventilation shafts leading down to D deck and ultimately to climate control. Everything else can branch off from this, and at runtime extra ladders (and overhead ventilation grates, so called because they're "grate" for the Critter to pop out of) can be added randomly.

This would also allow me to run a little map design contest by distributing a pared-down version of the program, featuring only the objects necessary to draw maps. I might have to add some instructions about the placing of intercoms and terminals and lockers and so forth, but that shouldn't be too complex -- if they are, it's a sign that I need to go back to the drawing board.

It'll be a little while before I'm at the point where I can start soliciting map designs, but it's nice to have this long-standing problem resolved.
That's kind of how my dungeon generator works. Every random dungeon is made up of smaller "cells," which can be anything from winding tunnels to predefined monster lairs. You define cells by drawing it on the dm map, setting the "joint" points, and assigning the cell an area. The downside is that it does not draw any tunnels by default, the tunnels have to be cells. I stole the idea off from a rogue-dev, and it works great if you set up the cells correctly.