Tuesday, January 14, 2014

On Level Design and Permutations

So, today's post is going to be all about level design for our game thus far. Not really so much our process of coming up with different level ideas, how things are going to be staged in the game to make a coherent experience or really any of that, though stay tuned as that's probably a post we'll be making in the future. No, this post is going to be about the evolution of our level concept process, which has come a considerable way since the initial level drafts. Some of this information is old compared even to our playtest post, but nonetheless it should show some of the design difficulties full room rotation can bring up.

When we first sat down and seriously started designing levels, we did so in 2D. We were tasked to create one room puzzles as a means of simplifying the mechanics of our game and really focus on creating a game that teaches and reinforces skills as you go, but to really make the first levels simple for new players, we decided to take this one step further and only allow one axis of rotation, instead of all three. What we thought would be relatively simple for level design quickly turned into a journey of discovery about 2D representations of map permutations. Here is a draft of the second of our two playtesting levels:


On the left, you see what a 1-axis rotation's set of 2D permutations looks like. Basically, all that means is that ,from an overhead view, you can view a level in 4 possible ways (facing forward, rotated 90 degrees in each direction, and rotated 180 degrees). The practical application is on the right; a full level is drawn top down, keeping all hallways static and rotating all doors and room geometry into the correct orientation to simulate what will be happening in the game. Then, we gave everything a height number, directions, and such, to determine which ramps led and bridges were on which floor, how doors connected to the rest of the room, and so on, until we finally had something we could trace through, going from permutation to permutation as necessary, and actually solve. Overall, this process is a little messy, but still completely doable for a 1-axis rotation, 1 room puzzle.

...and then we decided to draw out how many of these 2D permutations we'd need for 2-axis and 3-axis rooms. Let's start with 2-axis:




With 2-axis rotation, we arrive at 16 2D permutations for every room. Not only does our work increase by a factor of four, but we also need to still keep track of door locations (which are now changing levels, ending up on ceilings and what have you instead of simply rotating around the room) and constantly redraw whatever is in the room from multiple angles. This alone makes 2-axis rotation relatively unfeasible to continuously draft new and interesting levels in 2D, but just for kicks, we also did the permutations for a 3-axis room:


...so yeah, 24 possible room combinations when you factor in that you can view each face independently in 4 possible orientations. Clearly, if we ever want to make rooms which have multi-axis rotation, or really, even just rotation around a non-y axis, 2D drawings would never really cut it for anything other than static hallways. Which leads us to these:

To really help get a visual of multi-axis rotation, we made a 3D representation of all of our game rooms out of lidded, clear plastic boxes, which then had grid lines affixed via transparency slides and two-sided tape. The grid on the outside is 15x15, perfect for the 3 level room structure we currently have (15x15 breaks cleanly into a 3x3 grid of 5x5 grids, which allows us to punch 3x3 doors out of any resulting 5x5 grid to acquire any door configuration we might need), and as the transparencies are dry-erase friendly (for the most part), we can easily draw door configurations on the side walls and have them rotate with the box. Next, we needed a way to model the insides of the room in such a way that, even while in various upside-down configurations, all of our room geometry would stay in the same place. Enter plastina, a fantastic clay-like substance that doesn't dry out and is sticky and malleable enough to make any geometry we might need and have it be able to adhere to the inside walls of our modeling cubes. Here are a few examples featuring the levels from our first playtest:



Now, these boxes aren't perfect, but they're a step in the right direction. Because hallways are static geometry while the room geometry and doors are dynamic, we currently don't have a graceful way to model the "outside" geometry. Currently, we've stuck to doing the hallways on paper, but there are plans in the works to make a 3D structure that can sit around the boxes to represent the hallways while still letting the boxes represent all of their possible configurations in a neat, easy to modify and clear to see fashion. Not bad for an initial prototype, though!