... now with 35% more arrogance!

Tuesday, April 18, 2017

Pre-Connecting Random Non-Linear Dungeons, SubMethod I

To continue on the topic of making sure randomly-generated dungeons contain loops to avoid linear designs, let's look at the second method. The first method, you will recall, is to include the loops beforehand and built your dungeon around that skeleton, which I called "pre-loading". I was almost going to call the second method "post-directing", to contrast it to "pre-loading", but I didn't like that name. I'll call it "pre-connecting" instead.

The fundamental idea, remember, is that instead of waiting for the random twists and turns of a corridor to connect to a room, you roll immediately for where the corridor goes and adjust the shape to fit. You are thus connecting the rooms in advance, before knowing where the corridor actually appears to lead. Since most GMs number their rooms, the brute force method of rolling for connections would be to just roll the room number. For example, in the image to the left, if we begin in Room A and need to know where the door in the upper right leads, we could roll a d4 and read the result as the room number. If the result is 1, we draw the corridor turning north (upper blue squares,) then west to connect to the door in Room 1. On a 2, we extend the corridor east (upper red squares) until we connect to Room 2. On a 3 or 4, we extend the corridor south (green squares) and then turn east (lower blue squares) or west (lower red squares,) depending on whether we are connecting to Room 3 or Room 4.

The problem with this is that we need a die roll that matches the number of rooms in the dungeon... and we might not know how many rooms the dungeon has yet. Instead of rolling directly for the room number, then, we could instead roll for the relative room number. We could roll a d10 on the following table:

RollRoom #|RollRoom #
1Current Room - 4|6Current Room + 1
2Current Room - 3|7Current Room + 2
3Current Room - 2|8Current Room + 3
4Current Room - 1|9Current Room + 4
5Back to Current Room|0To Distant Room, Same Direction

In other words, subtract 5 from the current room number, then add the result of a d10 to get the destination room number. This means that most corridors will lead to nearby rooms: rooms you have just drawn, or rooms you are about to draw.

If the result is less than 5, it's one of the previous four rooms you've drawn. Draw your corridor as straight as possible towards that room. You might have to make one or two turns, if the corridor starts in the opposite direction (the way Room 1 in the example picture above is west of the door in Room A, so the corridor must make a U-Turn to connect.) You can still use the random corridor shape tables from whatever generator you are using to test the corridor every 60 feet or so for side passages or doors.

If the result is 5, the corridor re-connects with the room it leaves. Either there are two doors in the room and the corridor connects them, or the corridor splits into a Y or T and forms a loop that way. Again, check every 60 feet, or possibly even every 30 feet, for doors or branches off the main corridor.

If the result is more than 5, the corridor leads to a new room. assuming you haven't drawn those rooms yet. The general direction of the room is the general direction the initial door or doorway is facing. You can use the standard tables from whatever generation system you are using to test the corridor every 60 feet for turns or side passages, or you can roll a d10 for corridor length:
  • on a 0, there is no corridor and the door leads directly into the new room;
  • on a 1-6, multiply the result by 10 for the length of the corridor;
  • on a 7+, draw 60 feet of corridor and then test for turns, doors, or side passages.
If the result is a 0, the corridor connects to a distant room in the same general direction. Find the first numbered room on the map in that direction and use that room number as your "current" room, then roll on the table again for the destination. If the corridor's general direction is into an unmapped area (quite possible when you've just started mapping,) postpone mapping the corridor until you've mapped that area.

For the first five rooms of a map, use the results as the raw room number. If a corridor has to cross other corridors or rooms to reach its destination, roll on the following table:

d10 RollResult
1-4corridor runs under area
5secret door connects to area
6-9corridor runs above area
0dead end, no connection

If the corridor runs under or above the area, there will be stairs just before it crosses the area, and stairs on the other side. Optionally, there are stairs on even rolls and ladders on odd rolls.

If the corridor ends, either with a secret door or a true dead end, there is no need to worry about finishing the connection on the other side of the already-mapped area.

No comments:

Post a Comment