Welcome to my underground lair
Hardpointe is set on the asteroid lair of an evil robotic overlord – conveniently enough these lairs are surprisingly similar to dungeons. A bit.
Level design is the great time sink of every roguelike developer. I have a system that I’ve developed over the years (mostly for my 2014 7DRL dungeon dual) that I call the floorplan approach, which basically smashes a bunch of rectangles together. Once you have rectangles, you can easily convert them into rectangular rooms, or other shapes (cross-rooms, ovals, etc.) that will still fit within that bounding rectangle.
For Hardpointe, I have brushed off this algorithm and cleaned it up a bit to make it less wasteful. I am rather liking the results so far.
While level design is great, what I really want to get to is ‘lock and key’ style puzzle rooms. Think of the key rooms in brogue, or the linked challenges in Unexplored. Or zelda. In any event, Tom Ford did a lot of work around this in his 2014 7DRL TraumaRL and then did a great talk on his approach.
In order to accomplish this, I first needed a more intelligent level designer – one that kept track of separate rooms as if they were nodes on a graph. I had to brush off a part of my brain that hadn’t been used since CS classes many years ago, but got a working tree structure that should suit my needs.
I used treant.js to display the resulting graphs.
This first one corresponds with the above dungeon output.
Red nodes/rooms represent the longest (or one of the longest) paths in the level. In most cases, the entrance point will be at the top of the tree and the ending point will be at the deepest node of the tree.
Gray nodes are flagged as “dead ends” in that they have only one connecting room. This makes them great candidates for locked rooms, special challenges (and rewards) that will give the player a reason to explore the entirety of the level, should they choose to.
Here are a few more because I like them: