Dungeons · Any · Style

Zelda-style Dungeon Generator

This is a method to randomly generate a branching dungeon graph that can be used to emulate the traditional lock-and-key style of dungeon that is prominent in the Legend of Zelda series of games.

126 xp 6,754 views

This is based on a grammar I found a while back, that I cannot find an active link to any more. I remember the name of the guy who wrote the paper was named Dorman. I created this a while ago. I have included the instructions in the image itself so that it can be downloaded and used stand alone. Below I have an example of how it is used.


So in the example, I am replacing the 'OL(i1)' (in the green box on the first graph). I rolled a 4 so I use the sequence that is in the red box. OL takes a parameter (the 'key ?' on the diagram above). In this instance, 'i1' is provided, so I replace the '?' in the red box with 'i1', and connect the blue and teal nodes properly, the result is two nodes (in the blue box) added to my final graph. Of note in the final graph is the chain 'OL(!)<->UI(hp)', that represents a portion of the dungeon that cannot be entered unless the player has an item that is not provided in this dungeon. If the player comes back when he or she has that item, they can eventually get an extra heart piece.



Scrolls

2 scrolls

Twists, chapters, and details meant to stream with the submission — not general discussion.

wonderful!!!

wonderful!!!

Very cool. I remember taking a run at implementing this when I first saw…

Very cool. I remember taking a run at implementing this when I first saw the paper, but got sidetracked onto another project. Absolutely I'll be taking a look at this.

I still have the PDF of the paper kicking around somewhere. I'll see if I can find it when I get home.

Sign in to plant an idea scroll.

Enjoyed this? Sign in and cross blades for fantomx11 — five clashes, up to 25 XP.

Sign in to cross the blades.

Rare mark

Hall of Honour

for Zelda-style Dungeon Generator

The Hall of Honour is your mark on a submission you believe is frick’n awesome — so good you would jump in front of a dragon’s breath to protect the scroll it is written on.

Bestowing HoH also highlights it on the front of the Citadel for about a day, so others see the recognition it earned.

You may bestow HoH on the same submission up to your level (with a short wait between strikes). Five distinct HoH voters raise a work to Golden.

Enjoyed this? Sign in and Grant your Favor.

Sign in to Favor

Favored by Kindred Readers 1

Discussion

6 comments

Reader talk, questions, and feedback — not scrolls.

  1. lordmax

    Great idea!

    0 xp Reply +XP
  2. Cheka Man

    0 xp Reply +XP
  3. Strolen

    This is a Quest waiting to be created!!

    Bonus points for leading me to Joris Dormans and I read a bit and watched a presentation. I actually love these kind of formulatic/algorithm type building blocks and was thrilled to see this. The graphics are great!!

    1 xp Reply +XP
  4. valadaar

    I don't really follow - I may be getting old since I need you to show all the steps in your example.

    So, the first graph is S->N->e

    ->Ol(i1)

    Looking at DungeonStart, I don't see any with the S->N entry? Did you substitute OM(?)

    0 xp Reply +XP
    1. fantomx11 reply

      The example in was not the beginning of the dungeon, it was in the process showing how the process of replacing nodes works. Below is the steps to get to the first part of the example. You can see them visually at: imghttps://i.imgur.com/C5B7C4z.png/img

      But let me walk you through it.

      I start with DungeonStart 6-10 and process the 'C()' first.

      The C 6-10 resolves to Blue<->MO()<->Teal, So now the 'C()' is replaced by 'MO()'.

      There is only one option for MO() so I go ahead and replace the MO() on the graph with the expanded version.

      Next I move on to the 'MI(i1)' node. MI 11-20 is Blue<->S()<->? with a one way loop back to the Blue node (representing the shortcuts that some Zeldas provide back to the head of a branch once you have completed that branch.

      Resolving the 'S()' ends up with swapping the 'S()' node for an 'e' node. And now the dungeon is in the state of the example above.

      0 xp Reply +XP

Sign in to join the discussion.

Bonds

0 bonds

Curated bonds across the Citadel — sign in to bind a bond.

No bonds yet — be the first to bind one.

The graph

Bind a Bond

from Zelda-style Dungeon Generator

Know a piece that belongs with this one? Bind them together so every reader who finds one can find the other. Choose how they are bound.

Sign in to bind Bonds.

Browse Dungeons Seek the Citadel