in ,

Spelunky Level Generator Lessons, Hacker News

          

Have you ever wondered how Spelunky’s level generation works? This tool is a complete, working copy of Spelunky that has been           modded to just show you the first part of the level generation algorithm: generating the level’s solution path ,           before the spikes, arrow traps, enemies, and treasures are added to the map. (Probably only works in Chrome, for now, sorry.)

          

PRESS ‘R’ TO GENERATE ANOTHER LEVEL

          

SCROLL BELOW THE GAME FOR A DETAILED DESCRIPTION OF WHAT’S HAPPENING

        

          

The level is made of 728 rooms in a 4×4 grid. There are 4 different basic room types:

          

  • 0: a side room that is not on the solution path
  •             
  • 1: a room that is guaranteed to have a left exit and a right exit
  •             

  • 2: a room that is guaranteed to have exits on the left, right, and bottom. If there’s another “2” room above it, then it also is guaranteed a top exit
  •             

  • 3: a room that is guaranteed to have exists on the left, right, and top
  •           

The first thing it does is place a start room in the top row. Room type doesn’t really affect the start rooms, as it’s a special case, but generally speaking           a start room is type 1 or 2.

          

Every time a room is placed, at first it is always a type 1 room (left / right).

          

Then it decides where to go next. It picks a (uniform distribution) random number from 1 to 5. On a 1 or 2, the solution path moves left. On a           3 or 4, the solution path moves right. On a 5, the path goes down. (If the solution path hits the edge of the screen,           then it immediately drops down and switches its left / right direction.)

          

Now here’s the thing: if we move left or right, that’s all fine and dandy because we’ve placed down a room with guaranteed left / right exits. But           if we’ve decided to move down, we need to change the room we’re in! So the generator overrides the current room to be type 2 (which always has a bottom drop)           and we’re all good to move down now.

          

Once it’s moved onto the next room, it asks whether the last room we placed was type 2 (bottom drop). If this is true, then this room HAS to be           another type 2 bottom drop, or a type 3 upside-down T shape. Since types 2 and 3 have left / right exits, we can start the algorithm all over again.

          

If we are on the bottom row of room, and we try to drop, instead of dropping down, we place the exit room.

          

Now we have the entire solution path generated (what’s in red above). The last thing we do is we add some random type 0 rooms to           every grid space that is not on the solution path. These rooms don’t have any guarantees of exits on ANY side, which is why you sometimes see them           walled off.

          

If there are 3 or 4 type 0 rooms making a vertical line, then there is a chance that those rooms will become a snake pit. If we decide to make a snake pit,           we put down, from top to bottom, a sequence of room type 7 8 9, or 7 8 8 9, depending on the depth of the snake pit we want. (You’ll notice that           snakes and jewels get placed manually at this point, since they’re really part of the landscape and aren’t randomly placed like most other enemies.)

          

That’s it! In Part 2 I show you how individual rooms get laid out (spikes, ladder / pit formations , etc).

        

(Read More)

What do you think?

Leave a Reply

Your email address will not be published. Required fields are marked *

GIPHY App Key not set. Please check settings

Persona 3 Has One Glaring Flaw – It's Time for Atlus to Fix It, Crypto Coins News

Persona 3 Has One Glaring Flaw – It's Time for Atlus to Fix It, Crypto Coins News

Anders Hejlsberg on Modern Compiler Construction, Hacker News

Anders Hejlsberg on Modern Compiler Construction, Hacker News