> USE EYES ON UPDATE
> LOOK BACKERS
I only understood you as far as wanting to look.
> LOOK UNDER BACKERS
There is nothing interesting there.
> LOOK AT BACKERS
They are sitting expectantly. Maybe you should say something.
> TALK BACKERS
I don’t understand that sentence.
> STUPID GAME
[I don’t know the word “stupid.”]
> TALK TO BACKERS
What do you want to say to them?
If you want to scream, please say so.
That was getting too complicated, so I’ll stick to our good old written update format.
Ah, words. I love them, you love them. What would we do without words? We’ve come a long way since the venerable parser in interactive fiction and, even though I mourned its untimely deprecation back in the early 90’s when Legend Entertainment—the company which came up with the absolute best parser system—finally abandoned it, I’ve come to accept the new standard of drastically simplified interfaces. Nowadays players take many things for granted, and how you interact with a game world is one of them—in fact, interfaces are perhaps the most standardized element in the industry today. Admittedly, the less they get on the way, the better it is particularly for a horror game.
We’ve been paying a lot of attention to this in Asylum. The current interface based on your trusty notepad went through several iterations until we settled on its final diegetic incarnation. But we had another issue—as you know, our major roadblock has always been the interaction with the dwellers in Hanwell Mental Institute. It’s crucial for the game and its story that this feels right. Well, I’m happy to say that we’re almost there, and today I’ll tell you the hows and whys.
It’s all about consistency. We went to great lengths to make the environments in Asylum look highly detailed and crystal clear. This monolithic building of horrors has been virtually erected and works great—it’s old news now. However, it’s an advantage that, other than the occasional swinging window pane, or stormy skies, or disgusting swarm of flies circling a chunk of rotten meat, the environments tend to be static. After all, buildings usually stay still most of the time. On the other hand, the characters are organic beings commonly known as humans. And we humans tend to move. A lot.
So it’s been a royal pain to put the quality of characters on the same (or very close) level as the environments. There would’ve been many ways to cop out of this situation, but of course we opted to do it the hard way. I understand now why this type of highly detailed in-game character is usually developed by dozens of people, each with a very specific skill, and with an astronomical budget. Just for one character. This is what we have right now:
Now this may look interesting, cool even. I know it’s not mind-blowing, but it’s a huge milestone for us. There are several more things we need to do and improve: the animation is still rather stiff and choppy in places. Lenny stares too much and that’s not the idea—he’s a nervous fellow that wants to avoid eye contact. Also, it stills lacks that sort of unique personality a key character should have.
Or maybe he’s already awesome and we’re aiming way high.
This is all especially intimidating once you realize just how many things are happening behind the scenes. Sure, on the surface I just greeted Lenny and simply asked about Hanwell. No big deal, you’ve been doing this in adventures since the day someone put a small leaflet in a mailbox next to a white house. But that small action requires a complete system in place, a carefully exported character with all the corresponding animations along with something called blendshapes for the facial gestures (tons of them, blendshapes everywhere!), plus interactions, events, behaviors, transitions, triggers, and craziness! Mayhem! It’s Hell on Earth, I tell you!
But we still conserve our sanity, or at least enough of it to tell you how it all works. Because there’s another phase of game development that’s rarely discussed yet it’s time-consuming and decisive: research. In software development there’s always a balance between degree of control and speed or ease of use. We tried different approaches to our dialogue system: we had been doing everything from scratch, coding by hand each and every one of the processes that control the character’s behavior: eyes, mouth, gestures, etc. This is mighty useful because we can fine-tune every aspect of his or her behavior, and easily replicate it whenever necessary. However, it quickly became evident that this would take an inordinate amount of time that we no longer have. And it turns out that wasn’t the only issue (because there’s always more issues): even if we completed our highly customized system, then comes the part when we actually have to create the dialogues. Now, if you have simple conversations in mind, that can be a fairly quick process—after all, a common mechanic in games is that you ask a question and the character replies back, meaning that you don’t have to dabble in complicated dialogue trees. But… here comes again… we chose the hard way.
You see, the idea in Asylum is that you don’t ask plain questions but discuss topics. You can talk about something as much as you want until that character doesn’t have anything else to say. However, it could happen that you are discussing something else that enables more feedback about a previous subject. And it could also happen that a character reacts differently to certain subjects when he or she in a specific mood. And it also happens that you if you spend too much time without saying anything, the character loses his or her patience and dismisses you.
Yes, we are officially nuts. But we worked it out.
Enter playMaker. We usually try to rely as little as possible on third-party tools, but playMaker won us over. Briefly, this is an add-on tool for Unity that allows the developer to create something called “finite state machines” or FSMs. The idea is that you define states, actions that govern them, and transitions between them. The above (very) simple screenshot should speak for itself: Lenny says his introduction and then goes to an “idle” state awaiting the player’s input. If the player takes too long, Lenny enters a “timeout” state where he presses the player for more input. The “idle” state is also monitoring the selected topic for discussion.
Imagine doing all that by scripting alone as we were doing with Lua. I love code, but I’m not that crazy. Sometimes you have to draw a line between tinkering and getting things done, and playMaker is an easy way to visualize our character’s behaviors. Without something like it, we’d have to come up with our own graphical tools and we’re not in a position to do that. The interesting thing here is that playMaker is highly customizable, so in reality it’s executing our own hand-coded actions that manipulate the different systems I described before. It’s a good compromise that’s working very well.
The final scheme will be far more complex than what you’re seeing in that screenshot, though: transitions can be global, meaning that asking about any topic could break any state (it’s not wise to place so much responsibility on “idle” anyway). And there’s also the moods—noticed how Lenny’s expression changed twice in that video? Sometimes a mood will last for the duration of a dialogue line, but others will persist for the remainder of the whole dialogue. I know it all sounds like a scary amount of work, but this can be done fairly quickly now that we have all the systems in place.
But wait, there’s even more happening behind the scenes:
That is Unity’s Mecanim, possibly its best feature. It’s a tremendously powerful way to command the animations of a character, attaching them to specific events or behaviors. Based on the video above, this simple system should be self-explanatory, although we still need to add more animations and fine tune all those transitions.
You may be wondering, is all of that worthwhile? You bet! These characters finally feel lifelike, responsive, and they’re a far cry from our initial experiments with pre-rendered graphics. We’re beyond happy with them. I’d have never imagined we’d come this far—and we have to thank you for your patience and support. Soon you’ll be able to have a very interesting conversation with Julia, the first character you meet in the game, in the current alpha build.
When there’s good news, there’s always bad news: I don’t want you to panic but we had to close our physical office, and there’s no reason why you don’t need to know. In short, we needed to renew its contract but the proprietor wanted to murder us with the new rent. Blame inflation.
It was a good and comfortable spot for us but didn’t make sense to keep it. The whole idea about a second project was precisely to keep the office running with a larger team, but we’re few people now and Asylum is on a stage where it no longer benefits from the dynamics of working together.
Make no mistake, this office was an amazing experience for us: it allowed us to reorganize ourselves, rethink the project, migrate to Unity, complete the entire Hanwell building, finish the intro sequence, characters, and more. It saved us tons of time and we’re working much better now because of it, but the time has come to move on. Looking at the positive side of things, the new circumstances are better for the kind of work I have to do now, which is mostly writing. There are tens of thousands of words already in the script of Asylum (probably as much as Scratches), but I still need to add more dialogues, books and feedback. Me, I prefer quietness and solitude when I write. And perhaps a bottle of Jack Daniels by my side. Yeah, I’m old fashioned.
(actually, I like Old Fashioned’s too)
We do have to thank OKAM Studio, makers of the upcoming and brilliantly looking The Interactive Adventures of Dog Mendonça & Pizza Boy, for taking Pablo with them who, as far as I understand, hasn’t bitten anyone yet. Unfortunately Pablo didn’t have enough room at home, but OKAM came to save the day. And hey, apparently they brought in someone else too…
In my next update I’ll be telling you a bit about how we “virtualized” us again, this time using tools such as Slack and Trello to keep track of everything that’s happening in the development of Asylum.
From Hanwell to Blackwood
Speaking of Scratches…
(must… finish… update)
There’s an ongoing community playthrough in Adventure Gamers. The idea is that people play the game together over several days while posting their impressions of the game, and the organizer invited me to participate with my own input. So, over the past few days, I’ve been providing fun facts and interesting trivia about Scratches. Things like…
And lots, lots more. Feel free to stop by and join the discussion. Or lurk in the shadows, like the kind of horrors that haunted your nightmares in Blackwood Manor. The kind of horrors you’ll also find inside the Hanwell Mental Institute.
Until next time,