Monday, November 19, 2012

Fun with Procedural Lock and Key Puzzles


Something I've been experimenting with recently for is throwing in some procedurally generated lock and key puzzles. Since I've played around with these before, mostly in the context of my research, and already has both locks and keys for other purposes, I figured they might add a nice bit of spice to the generated levels.

The basic idea with generating locked doors is pretty simple and fits nicely on top of the existing level generator. For context, this is what the generator did prior to adding locks:

  1. Generate the complete arrangement of objects for the level (I might post about this process separately) 
  2. Randomly choose rooms for the start and end of the level (sufficiently far apart to keep things interesting).
  3. Pick a semi-arbitrary path between the start and end of the level. This will be the "guaranteed path" for completing the level, although other paths are highly likely to exist. 
  4. Forcibly carve openings between rooms on the "guaranteed path". 

Now to add locked door puzzles, I just add a few extra steps to this process:

  1. Choose how many locks to add to the level based on a "lock density" parameter that I can control for each level. 
  2. For each lock to generate, choose a random node on the guaranteed path (that hasn't yet been chosen) to generate the lock. Place a bunch of immovable walls and locked doors in between the chosen node and the next node on the path to add the locks. 
  3. For each lock generated, spawn a new key somewhere on the guaranteed path before the locked node. 
  4. I don't do this yet, but it might also be fun to generate locked doors between rooms that don't lie on the guaranteed path, just to see what happens. 

And we're done! With locked doors active, you might end up with rooms that look kind of like this:
The walls and locked doors are placeholder art right now

Now, since almost everything can be destroyed in, keys included, you might wonder what I do to prevent the player from blowing everything up and getting kinda stuck. The answer is, well, "not much."

Even the code says "too bad"

The design philosophy for so far has been "Offer enough solutions so the player would have to work pretty hard to get completely stuck". It's seemed to work pretty well so far, so hopefully it works okay here as well. I'll be relying on ample play-testing to make sure there aren't any serious snafus.

Anyways, after implementing all this junk I tried playing a few levels set to 100% lock density (so every room on the guaranteed path is separated by a locked door). It seemed pretty interesting. I definitely had to plan my motion through the levels a little bit more, but I could also see it getting kind of annoying if I make locks too frequent. Also, what's this...

Darn you acid spider enemy! How dare you destroy my carefully generated lock and key puzzles! Haha, the fun thing is that getting past that spider unharmed might actually be more of a hassle than just finding a key and unlocking one of the other doors.

Of course I'm leaving that in.

Okay Bye!


  1. Very interesting! I’m definitely going to file this under information I may never need but is useful to know. lol I’ll have to share this with my friend, he’s a locksmith in mankato.mckinney tx locksmith

  2. Locksmith Angels was born in 1994 when the founder of this company recognized the need for residential locksmith, commercial locksmith, car locksmith and door unlocking solutions in their community. Since then, Locksmith Angels has grown to become the leading professional locksmith service provider in Virginia Beach, Virginia.

    Although Locksmith Angels’ main aim is on emergency business and home locksmith servicing, we also provide a wide variety of automotive services for your safety.Lock smith in Chesapeake

  3. This firm is amazing to deal with. We have referred family and friends and will remain to do so. מישלוץ טכנאי מזגנים is straightforward, credible as well as understands his things. We highly recommend this firm. מישלוץ טכנאי מזגנים רמת גן