The first new addition is some basic support for doors, allowing it to happily generates as many linked rooms as you want. The "dungeon" generator bit (which lays out the rooms and their interconnections) is trivial now - it just assembles them into a linear sequence, but the plan is to add some maze-like code generation in here to assemble more complicated networks of rooms. Here's a couple of relatively nice looking rooms it spat out during my screenshot spree:
First up, let me just explain something: I know from these screenshots the game looks like a 3D platform game, and to some extent, it is ... but this is only because platforms (and the ability to jump and fall between them) are the only entities I've currently plugged into the puzzle generator, which is why the world is full of them right now. As I plugin new objects (lifts, blocks, enemies, switches, doors, etc), and new ways to interact with them, the world should get a little more interesting.
The next thing you've probably noticed looking at the screenshots is that none of the rooms have a solid floor - and this is actually one of the biggest problems I'm mulling over right now. This is partly because the puzzle generator's only arsenal right now is to let you navigate separate platforms, and the constraints between them naturally force it to create gaps in the floor. It's fine to have a few rooms without a walkable floor: some of them can fall through to the room below, or a pit you need to climb out of, some of them I can fill in with spikes or water so you fall to your doom (or at least loss of health) if you slip off. But I really want to have some/many rooms that just have a plain old simple floor. I'm going to wait until I add a few more options for the puzzle generator to choose from and see how things changes things - but I do think at some stage I'll need to tackle this head-on, and actually add an option to force a floor in the room, and actually use this as a constraint when selecting challenges to place in the room.
Anyway, under the hoold I've actually spent loads of time trying to cleanup the room layout code. And while I've fixed up lots of issues, there are still lots of gremlins hiding in there somewhere and it still generates lots of ugly rooms. They're totally functional: you can always get across them - they're just messy and hard to "read" (e.g. where is that block/lift etc?). I suspect this will be a drawn out and grisly battle that I'll be fighting on and off for months. Below are some examples of ugly or confusing rooms. There are lots of causes for it (not taking into account the default camera perspective, not having floor based depth cues like shadows, not trimming off useless platform extremities, not cropping the room to the contents, not basing the room size off the number of platforms that need to go inside it, etc) and slowly I'll teach the puzzle builder to take these things into account when laying the elements out.
Ugly Room #1
Ugly Room #2
Given I wasn't going to get these totally fixed, I wanted to experiment with the puzzle generator some more, so I spent a few minutes to teach it how to use lifts and moving platforms in puzzles (e.g. jump on the platform here and jump off over there). It's obviously a little hard to tell from the screenshots, but the single-tile grate platforms actually move around along an invisible track so you need to time your jumps on and off them (I need to spend some quality time with Maya at some point and create some cool looking hover-platforms).
Next on the agenda is adding some parameters which govern the types of rooms the puzzle generator creates (spare/dense, easy/hard, short/long, etc), so that eventually you can tune the level to the level and game elements you prefer (e.g. I want lots of really hard jumping puzzles, and easy combat).