Asylum Update - January 2, 2017
The latest, verbatim...
Greetings, haunters of the dark! I know you’re there, prowling in your shadowy hideouts infected with rottenness and pestilence, craving for the precious news. It’s just that an emissary of unrelenting terror such as myself must still work and fulfill obligations.
But here I am, and going old school no less! That’s right: THE WALL OF TEXT HATH RETURNED.
What about the demo?!
Backers have been expecting a new playable chunk from Asylum. As some of you may know, my plans were turned upside down thanks to an imminent trip to GDC (as in tomorrow), where I’m expecting to resume promotional efforts and talk about the game. My initial idea for this update was simply to show you content from this promised fabulous new demo, but it occurred to me that instead I should give you a full insight into the kind of stuff we’re doing right now, especially when it comes to the design and implementation of a puzzle.
The environments in Asylum have been completed for a while, and VIP backers have had the opportunity to visit nearly the entire building. The most consuming work at this stage is introducing the game logic, namely the challenges and stuff you can interact with. Puzzles are by far the trickiest aspect; they must make sense, feel intuitive, be consistent with the controls of the game, and of course be as bug-free as humanly possible or, worse even, (Cthulhu forbid!) avoiding dead ends.
For this demo, the idea we had in mind is to let backers solve a particularly complex puzzle completely by themselves – no disclaimers, no instructions or help. Just you and the game. To get to that point, all the machinery of the adventure must be in place and working together: navigation, interface, books, characters, dialogue system, inventory, etc. I’ve been discussing each one of these aspects of the development within the plethora of previous updates, but never a global vision of how everything comes together. Here, I’m going to focus on the creation of a puzzle that (hopefully) is both challenging and entertaining.
There will be minor spoilers – I’ll mostly talk loosely about how we set things up, so then you can experience by yourself how it all plays out in the demo. But, you will still know in advance the overall goal of the puzzle.
OK, another warning: some of the references in this update are somewhat graphical. But then again, you backed a gruesome horror game, so I don’t think anyone will complain.
“Dead Rat in the Cage” is a great name for a metal band!
There’s a cage and you need to get something from it. The medical staff from the Hanwell Mental Institute conducted tests on rats many years ago, and it’s imperative for your research in the asylum that you identify a particular rat. Why these tests and why you need the “thing” is unimportant for our purposes; let’s just say that this is one lengthy puzzle branch that will converge with the main storyline as the conclusion of the adventure draws closer. It’s a puzzle that has been designed for a while and only now we’re implementing it. I’ll be discussing the intricacies of its full design after you play the demo. As for the set up, my first task was to search references for Pablo, namely a cage:
There were hundreds of cage models to choose from. I stuck with this one in particular because it looks menacing and contrived. Yes, I love giving Pablo loads of work.
And... well, a dead rat:
Let me tell you, the Internet is a treasure trove of pictures of dead rats. So many dead rats that boggle the mind! My requirements were loose: the rodent needs to be gross and look quite decomposed (remember, this carcass has been around for several years).
So I pass these references to Pablo and communicate the general idea. We review the details of the puzzle and where we should place this cage. An important condition is that there must be a row of cages (to establish the notion that diverse tests were being conducted) and said cages must be kept on top of a wooden desk. Also, the player can’t force open the cage, which is OK because my reference looks reasonably sturdy. Still, I ask Pablo to make it look even more well-made and though.
Easy peasy, right? Well, getting to that point can take a couple of days of work. This was our first iteration for the cage:
Which… looks exactly the same. Yeah, Pablo is good, I told you.
Upon seeing this version, I realize I forgot to tell Pablo something crucial, another requisite for the puzzle: the player can’t take the cage! Reason is we may be forgetting something somewhere in the building that can be used to open it. Not to mention it would look silly to render the protagonist’s arm holding that big cage while walking around the asylum.
So, new requisite: the cage must be fixated to the desk and we also need to remove that handle. Here’s Pablo’s proposal with these elements put together:
Looks good! I like it! It’s believable, serves our purposes, and feels even creepy. I’m not quite convinced on those wooden frames surrounding the cages, so maybe we’ll do a final iteration with another solution, perhaps having them nailed to the desk. But this is more than sufficient to wrap up the demo.
Next step, our in-game dead rat. Pablo suggested this alternate, ghastlier take on the poor bugger:
My response is a resounding “YES! Fans will love that! Go for it!”. And so Pablo begins tempting me with the progress of the revolting carcass:
The whole process of putting elements in the game world goes like this: model a mesh in 3DS Max, work out the fine details in ZBrush (aka “sculpting”), go back and texture the more detailed model in Max, and finally integrate everything in our scene. We already had the laboratory, so it was a matter of choosing the right location; it must be easily accessible from a node and it should draw the attention of the player as much as possible. Adventure game fans will surely look at these intriguing cages, but I still ask Pablo to ensure the right cage is well-lit. This is the near-final result, pending minor tweaks:
Help, I need somebody!
Meanwhile, I’ve been working on the feedback for this puzzle. The player should receive sensible hints consistent with the internal state of the game, and nudge her or him in the right direction if we feel there’s no progress. When it comes to this section of the laboratory, we treat differently the “cages” and the “cage”. They are in fact separate objects. For the purposes of the code, the “three other cages” is just a generic cages. With this in mind, I write several lines for how to deal with the possible interactions. Here’s an excerpt:
OK, there’s a lot to discuss. This is actually an Excel sheet, which is then converted to something known as a “data table”. Most information you see here is turned into variables you can operate with. Cages is treated as a purely informational object, with the peculiarity that feedback can change according to the mood of the protagonist. This is something we use often across the game, a great reward for players that love exploring and going deeper and deeper. Note how a single object can throw a dozen different feedbacks (there’s actually more than this). That’s what I mean when I say Asylum wants to avoid repetition as much as possible. I dislike when adventures give you the same boring feedback over and over again.
But anyway, there’s a bit of logic happening in this table: the cages object is “neutral” by default, which means feedbacks are cycled until one line triggers a different state. In this case, a neutral line from cage triggers the mood “desperate”, which will prompt the game to tell feedbacks accordingly if the cages are explored again. The interesting thing here is that any object in any place of the asylum which has the “desperate” mood attached to it will also display the appropriate feedbacks, at least until the mood changes again.
The cage object has to be treated as a different case, though. Because there’s a puzzle involved, we must make it clear that the object is different, as otherwise players may dismiss it as another part of cages (hope that made sense). It’s perfectly possible players come by this section well before the puzzle is activated, so by communicating that cage is independent we’re subtly saying “hey, this is an interesting spot, keep it in mind”. Not doing that sort of thing in Scratches made some puzzles painfully difficult.
OK, so… note how there’s a different Puzzle1 state which is activated elsewhere after reading a certain book and thus giving the protagonist a key piece of information. This prompts a cursor change as well, so now it’s extra evident that something must be done with the individual cage. For this type of object, the “Next Sate” column is used to determine which inventory item triggers the (you’ve guessed it) next state. If the item is generic, you get generic feedback, although it’s perfectly possible to tell custom feedbacks for items that make more sense than others. I mean, if you use a piece of paper to try opening the cage, seriously, don’t waste my time. Writing these lines takes a lot of effort, pal. Although since I already mentioned this, you will want to try opening the cage with plain paper and now I’m forced to put that easter egg in the game.
Oh my gosh, my plane is leaving in a few hours and I still need to pack my underwear. Sorry about the Pythonesque ending to this update, I’ll be back soon with more, love you all, peace out. –Agustín