Spelunky Generator Lessons: Part 2 – Room Generation

by Darius Kazemi on October 20, 2013

in Games I Love,project,projects,Spelunky

A Spelunky level with annotations on the tiles.

I built another Spelunky Generator Lesson (part 1 here). This one teaches you how individual rooms are laid out, and does a good job of showing the mixture of handmade and procedural content in Spelunky.

You can play with it and read the accompanying essay here!

{ 7 comments }

Ryan October 24, 2013 at 11:42 pm

These are really awesome, thanks for doing them!!! I’m making my own roguelikelike platformer so it’s very cool to see this. Interested to see part 3. :)

Ian October 26, 2013 at 12:36 pm

Excellent stuff.

When you say that rooms are guaranteed to be open on the L/R, is it only block 5 from the bottom that is guaranteed to be open. While lots of the templates appear to have broadly open L+R, the position of the 5×3 extras seems to mean only that block is guaranteed open.

Darius Kazemi October 26, 2013 at 12:45 pm

That is (mostly, as far as I can tell) the case, yes.

Joel S November 5, 2013 at 1:55 pm

Awesome deconstruction, I had thought all the rooms were static templates, the obstacle blocks part was interesting. I look forward to the next part!

Lovepreet November 16, 2013 at 8:18 am

I finally starting to understand how procedural generation works and is used thanks to this great article. Any news on when the next part will be posted?

Darius Kazemi November 25, 2013 at 9:35 am

Not sure yet. Need to find the time.

Nathan Wailes December 8, 2013 at 1:15 am

Just wanted to say that I loved this write-up and hope you’ll continue it. I just started playing Spelunky recently after hearing people rave about it for a long time, and I was curious to know how the procedural generation worked, so I really lucked out that you had taken the time to explain it so well. I suspect techniques like these could be used in a lot more games to make them feel more fresh and interesting.

Comments on this entry are closed.

{ 1 trackback }

Previous post:

Next post: