07 Oct, 2010, Tavish wrote in the 1st comment:
Votes: 0
I have my random dungeon generator solid to the point of never making unreachable rooms, logically placing the exits, and no longer creating a ton of dead-end corridors. So I thought I might throw a few examples out to see if there are any suggestions on possible layout improvements. They are fairly basic in that there are only a few terrain types represented in the layout (room walls, corridor walls, floor, entrance and exit). The entrance should always be near the center and represented by ^^ and the exit is represented by VV.

Here are the last 3 map dumps.
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OO OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOO OO
OO OO………………OOOO…………OO OO…………….OO OO
OO OO………………OOOO…………OO####OO…………….OO OO
OO OO……………………….VV……………………….OO OO
OO OO………………OOOO…………OO####OO…………….OO OO
OO OO………………OOOOOOOOOOOO..OOOO OO…………….OO OO
OO OO………………OO ##..## OOOOOOOOOOOOOOOOOOOO OO
OO OOOOOOOOOOOOOOOOOOOOOO ##..## OO
OO ##..## OO
OO ##..## OO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO..OOOOOO OO
OOOO…………….OOOO…………OOOO……….OO OOOOOOOOOOOOOOOOOOOO
OOOO…………….OOOO…………OOOO……….OO OO…………..OOOO
OOOO…………………………..OOOO……….OO OO…………..OOOO
OOOO…………….OOOO…………OOOO……….OO################OO…………..OOOO
OOOOOOOOOOOO..OOOOOOOOOO…………OOOO……………………………………..OOOO
OO ##..## OOOOOOOO..OOOOOOOO……….OO################OO…………..OOOO
OO ##..## ##^^## OOOOOOOOOOOOOO OO…………..OOOO
OO ##..## ###### OOOOOOOOOO OO…………..OOOO
OO ##..## OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO……OO OOOOOOOOOO..OOOOOOOO
OO OOOO..OOOOOO…………..OOOO…………….OOOO……OO ##..## OO
OO OO……OOOO…………..OOOO…………….OOOO……OO ##..## OO
OO OO……OOOO…………..OOOO……………………..OO ##..## OO
OO OO……………………………………..OOOO……OO ##..## OO
OO OO……OOOO…………..OOOO…………….OOOOOO..OOOO ##..## OO
OO OOOO..OOOOOO…………..OOOOOOOOOOOO..OOOOOOOOOOOO..OOOOOO OOOO..OOOO OO
OOOOOOOOOOOO..OOOOOO…………..OO OOOOOOOO..OOOOOOOOOO……..OO OO……OO OO
OOOO…………OOOOOOOOOOOOOOOOOOOO OO…………..OOOO……..OO######OO……OO OO
OOOO…………OO OO…………..OOOO……………………OO OO
OOOO…………OO OO…………..OOOO……..OO######OO……OO OO
OOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOOOO……..OO OOOO..OOOO OO
OOOOOOOOOOOOOO OOOOOOOOOOOO OOOOOOOO..OOOO OO
OOOO……..OO OOOOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOO OO……….OO OO
OOOO……..OO OO…………….OO OO…………OO OO……….OO OO
OOOO……..OO OO…………….OO######OO…………OO OO……….OO OO
OOOO……..OO########OO………………………………..OO######OO……….OO OO
OOOO………………………………OO######OO…………………………..OO OO
OOOO……..OO########OO…………….OO OO…………OO######OO……….OO OO
OOOOOOOOOOOOOO OO…………….OO OOOOOOOOOOOOOOOO OO……….OO OO
OO OOOOOOOOOOOOOOOOOOOO OO……….OO OO
OO OOOOOOOOOOOOOO OO
OO OO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
Rooms: 19 Links: 1

OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OO OOOOOOOOOOOO OO
OO OO……..OOOOOOOOOOOOOOOO OO
OO OO……..OOOO……….OO OOOOOOOOOOOOOO
OO OO….VV..OOOO……….OO OO……..OOOO
OO OO………………….OO OO……..OOOO
OO OO……..OOOO……….OO OOOOOOOOOOOOOOOOOOOO……..OOOO
OO OOOOOO..OOOOOOOO..OOOOOOOO OOOOOOOOOOOO OO…………..OOOO……..OOOO
OO OOOOOO..OOOO OO..OO OO……..OO OO…………..OOOO……..OOOO
OO OO……..OO ##..## OO……..OO OO…………..OOOO……..OOOO
OO OO……..OO ##..## OO……..OO########OO…………..OOOO……..OOOO
OO OO……..OO ##..## OO…………………………….OOOOOOOO..OOOOOO
OO OOOOOOOOOOOO ##..## OO……..OO########OO…………..OO ##..## OO
OO ##..## OO……..OO OOOOOOOO..OOOOOOOO ##..## OO
OOOOOOOOOOOOOOOO ##..## OOOOOO..OOOO ##..## ##..## OO
OOOO……….OOOOOOOO..OOOOOOOOOOOOOOOO##^^## ##..## ##..## OO
OOOO……….OOOO……….OOOO……OO###### ##..## OOOOOO..OOOOOO
OOOO……….OOOO……….OOOO……OO ##..## OO……..OOOO
OOOO……….OOOO………………..OO ##..## OO……..OOOO
OOOOOOOOOO..OOOOOO……….OOOO……OOOOOOOOOOOOOOOO ##..## OO……..OOOO
OO OOOO..OOOOOOOOOOOO..OOOOOOOOOOOOOOOO……….OO ##..## OO……..OOOO
OO OO……OOOOOOOOOO..OOOOOOOO OO……….OOOOOOOOOOOO..OOOOOOOOOOOOOO..OOOOOO
OO OO……OOOO…………..OO OO……….OOOO…………….OO ##..## OO
OO OO……OOOO…………..OO OO……….OOOO…………….OO ##..## OO
OO OO……OOOO…………..OO OO……….OOOO…………….OO ##..## OO
OO OO……………………OO OO……….OOOO…………….OO OOOO..OOOOOO
OO OO……OOOO…………..OO OOOOOO..OOOOOOOOOOOOOOOO..OOOOOOOO OO……OOOO
OO OO……OOOO…………..OO OOOOOOOOOO..OOOOOOOOOOOOOOOO..OOOOOO OO……OOOO
OO OO……OOOOOOOOOOOOOOOOOOOO OO…………….OOOO…………OO OO……OOOO
OO OOOO..OOOO OO…………….OOOO…………OO####OO……OOOO
OO ##..## OO……………………………………….OOOO
OO ##..## OO…………….OOOO…………OO####OO……OOOO
OO ##..## OOOOOOOOOO..OOOOOOOOOOOOOOOO..OOOOOO OO……OOOO
OO ##..## OOOO..OOOOOO OOOOOOOO..OOOOOOOO OOOO..OOOOOO
OOOOOOOOOO..OOOOOO OOOOOOOOOOOO OO……..OO OO…………..OO ##..## OO
OOOO…………OO OO……..OO OO……..OO OO…………..OO ##..## OO
OOOO…………OO######OO……..OO######OO……..OO OO…………..OOOOOOOO..OOOOOO
OOOO…………………………………………OO OO…………..OOOO……..OOOO
OOOO…………OO######OO……..OO######OO……..OO OO…………..OOOO……..OOOO
OOOO…………OO OO……..OO OO……..OO OO…………..OOOO……..OOOO
OOOO…………OO OOOOOOOOOOOO OO……..OO OO…………..OOOOOOOOOOOOOOOO
OOOOOOOOOOOOOOOOOO OOOOOOOOOOOO OO…………..OO OO
OO OOOOOOOOOOOOOOOOOO OO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
Rooms: 22 Links: 1

OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
OO OOOOOOOOOOOOOOOOOOOOOO OO
OO OO………………OO OOOOOOOOOOOO OOOOOOOOOOOOOOOO
OO OO………………OO OO……..OO OO……….OOOO
OO OO………………OO##############OO……..OO OO####OO……….OOOO
OO OO……………………………………..OO OO…………….OOOO
OO OO………………OO##############OO……..OO OO####OO……….OOOO
OO OOOOOOOOOO..OOOOOOOOOO OOOOOO..OOOO OOOOOOOO..OOOOOO
OOOOOOOOOOOOOOOOOOOOOO..OOOO ##..## ##..## OO
OOOO……..OOOO……….OO ##..## ##..## OO
OOOO……..OOOO……….OO ##..## ##..## OO
OOOO………………….OO OOOOOOOOOOOOOOOO ##..## ##..## OO
OOOO……..OOOO……….OO OO…………OOOOOOOO..OOOO ##..## OO
OOOO……..OOOO……….OO OO…………OOOO……..OO ##..## OO
OOOO……..OOOOOOOO..OOOOOO OO…………OOOO……..OO ##..## OO
OOOOOOOO..OOOO ##..## OO…………OOOO……..OO######OO ##..## OO
OO ##..## OOOOOO OO…………………………..OO OOOOOO..OOOOOO
OO ##..## OO…………OOOO……..OO######OO OO……..OOOO
OO ##..## OO…………OOOO……..OO OO……..OOOO
OO ##..## OO…………OOOO……..OO OO####OO……..OOOO
OO ##..## OO…………OOOOOOOOOOOOOO OO…………..OOOO
OO ##..## OOOOOOOOOO..OOOO OOOOOO OO####OO……..OOOO
OO ##..## OOOOOOOOOOOOOOOOOO##^^## ##..## OO……..OOOO
OO OOOO..OOOOOOOO OO…………..OO###### ##..## OO……..OOOO
OO OO……….OO OO…………..OO ##..## OOOOOO..OOOOOO
OO OO……….OO####OO…………..OO OOOOOO..OOOOOOOOOOOOOO##..## OO
OO OO…………………………..OO OO……..OOOO……OO##..## OO
OO OO……….OO####OO…………..OO OO……..OOOO……OO##..## OO
OO OOOOOO..OOOOOO OOOOOOOOOOOOOOOOOO OO….VV…………OO##..## OO
OO OOOOOO..OOOOOOOO OOOOOOOOOOOOOOOOOOOO OO……..OOOO……OO##..## OO
OO OO…………OO OO…………….OO OOOO..OOOOOOOOOOOOOOOO##..## OO
OO OO…………OO OO…………….OO##OO ##..## ##..## OO
OO OO…………OO########OO………………..OO ##..## ##..## OO
OO OO………………………………….OO##OO ##..## ##..## OO
OO OO…………OO########OO…………….OO ##..## ##..## OO
OO OO…………OO OOOOOOOOOO..OOOOOOOO OOOOOOOO..OOOOOOOO OOOO..OOOOOO
OO OO…………OO ##..## OO…………..OO OO……OOOO
OO OOOOOOOOOOOOOOOO ##..## OO…………..OO OO……OOOO
OO OOOOOOOOOO..OOOOOO OO…………..OO######OO……OOOO
OO OO…………..OO######OO…………………………OOOO
OO OO………………………………..OO######OO……OOOO
OO OO…………..OO######OO…………..OO OO……OOOO
OO OOOOOOOOOOOOOOOOOO OOOOOOOOOOOOOOOOOO OOOOOOOOOOOO
OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO
Rooms: 17 Links: 1
07 Oct, 2010, Davion wrote in the 2nd comment:
Votes: 0
Pretty cool for maze-like dungeons. Does it do open or sparse ones? Or multi-level?
07 Oct, 2010, Runter wrote in the 3rd comment:
Votes: 0
Not bad. In the past when I did this I had multiple algorithms for producing different patterns then I had various cookie cutter patterns predefined for regions. Then the various regions were used to determine which of the algorithms were used at any give time. The end result was random dungeons that could be quite interesting. (a village near a series groves and paths.)

I particularly like the distribution of cross paths with your maps. Are these cherry picked or consecutive? From an academic stand point I'd lov see some code or your algorithm.
07 Oct, 2010, Tavish wrote in the 4th comment:
Votes: 0
It is actually pretty basic in terms of logic at this point. Build a room->save possible exit locations-> pick a random exit location->try to build a room (if not remove the exit location) repeat until you have removed all the exit locations (growing tree algo is probably the closest description in this list). It does some extra cleanup to kill off most of the dead-end corridors.
07 Oct, 2010, Runter wrote in the 5th comment:
Votes: 0
Oh. I always used intermediate data during generation that was easier to deal with.
08 Oct, 2010, Ssolvarain wrote in the 6th comment:
Votes: 0
Might be off-topic, but I have a small suggestion/idea.

If you had zones with varying priority, it could create a more logical layout of rooms and their connections.

Like, a storeroom type room would be generated with only one exit,. A corridor would be rectangular by default with at least two exits. A barracks would be within range of a guard house. I don't want to get too specific.

A list of mandatory sets of rooms as a base, with random placing and padded with random rooms drawn from a separate list. So, set A might be Gauntlet style, with secret treasure rooms behind monster generator rooms, padded with rooms from an unrelated list.

I hope that makes sense.
08 Oct, 2010, KaVir wrote in the 7th comment:
Votes: 0
As I mentioned in another thread, I assemble my dungeons from tiles, where a "tile" in this case represents a 5x5 section of terrain. The tile table looks like this:

CDungeon::maze_table_t CDungeon::MazeTable[DUNGEON_MAX+1] =
{
{ NO_EXITS, // This entry should always be first.
"##########"
"##########"
"##########"
"##########"
"##########"
},

{ NORTH_SMALL | SOUTH_SMALL | EAST_SMALL | WEST_SMALL | SMALL_CHAMBER,
"####..####"
"##……##"
"…._-…."
"##……##"
"####..####"
},



{ NORTH_LARGE | SOUTH_LARGE | EAST_SMALL | LARGE_CHAMBER,
"##……##"
"##……##"
"##…….."
"##……##"
"##……##"
},



{ EAST_SMALL | SOUTH_SMALL,
"##########"
"##########"
"####……"
"####..####"
"####..####"
},

The advantage of my approach is that I can generate the dungeon on-the-fly, without the risk of dead-end corridors (it's possible to have looping corridors but even that is pretty unlikely). To ensure that the boss can be reached, I always create a route from his chamber to the entrance whenever the dungeon is reset, but the rest of the layout can simply be generated as needed, while the player moves around.

The drawback is that the rooms are fairly small, and the dungeon tends to have a rather symmetrical feel. However my approach has also helped me overcome one of my major obstacles: accessability. I used to have a load of additional tiles with double exits, like this:

{ NORTH_DOUBLE | SOUTH_DOUBLE | EAST_DOUBLE | WEST_DOUBLE, 
"##..##..##"
"….##…."
"##########"
"….##…."
"##..##..##"
},
{ NORTH_DOUBLE | SOUTH_DOUBLE | EAST_SMALL | WEST_SMALL,
"##..##..##"
"##..##..##"
"….##…."
"##..##..##"
"##..##..##"
},
{ NORTH_DOUBLE | SOUTH_SMALL,
"##..##..##"
"##..##..##"
"##……##"
"####..####"
"####..####"
},

However players would frequently get lost (to the point of getting frustrated), and the dungeons were almost unusable for blind players. So I removed all the double exit tiles, meaning that every exit is guaranteed to be aligned with the centre of the tile. I then gave blind players a 'centre' command that moves them to the centre of their current tile, and provided an option for walking a full tile in any one direction. Blind players can now navigate the entire dungeon almost as if it were a traditional mud area of 11x11 rooms, while sighted players tend to overlook the tile aspect and view it more as one big maze.

I think your dungeon has a much more natural-feeling layout than mine, but I don't know how I'd make it accessable to blind players - and they make up about 20% of my active playerbase, so I'd hate to exclude them.
08 Oct, 2010, Runter wrote in the 8th comment:
Votes: 0
It's tough when only limiting your features to things that play well for people who can't see.
08 Oct, 2010, KaVir wrote in the 9th comment:
Votes: 0
When it comes to targeting an audience, mud design is all about compromise.
08 Oct, 2010, David Haley wrote in the 10th comment:
Votes: 0
It rather seems that if you're actually targeting an audience, you have much less compromising to do than if you're targeting several audiences…
09 Oct, 2010, Rudha wrote in the 11th comment:
Votes: 0
You'd think.

Kavir's representation of tiles kind of reminds me of how Ultima VII broke down segments of the game map into reusable 'chunks'

Maya/Rudha
09 Oct, 2010, David Haley wrote in the 12th comment:
Votes: 0
Yeah, reusable chunks are pretty common. You can see it very visibly in games like Diablo, as another example.
09 Oct, 2010, donky wrote in the 13th comment:
Votes: 0
KaVir said:
As I mentioned in another thread, I assemble my dungeons from tiles, where a "tile" in this case represents a 5x5 section of terrain.

Reminds me of this project (visualisable here).
09 Oct, 2010, KaVir wrote in the 14th comment:
Votes: 0
donky said:

Ah, I've seen that before - yes similar concept, although I actually drew my inspiration from Sorcerer's Cave, which used simpler tiles (picture here).
09 Oct, 2010, Runter wrote in the 15th comment:
Votes: 0
I draw my inspiration from the great game Pipe Dream.
09 Oct, 2010, David Haley wrote in the 16th comment:
Votes: 0
It's funny, because Sorcerer's Cave seems to use tiles in the sense of rooms, not a collection of smaller places that still act as containers which is what GW2 terrain types seem to do…

Quote
I draw my inspiration from the great game Pipe Dream.

Heh, yes, that was a fun game. :smile: Haven't played it in a whiiiiile though.
0.0/16