Vespers3D: Adventures with NPCs, Part II
by Rubes · 07/25/2007 (8:54 pm) · 9 comments
Vespers3D: Adventures with NPCs, Part II
Vespers3D is our attempt to bring old-school text-based adventure games (interactive fiction) into the world of real-time first-person 3D - a new genre we are calling 3D/if (3D interactive fiction). It is based on Vespers, Jason Devlin's fantastic text IF game that won numerous awards from the IF community, including Best Game at the IFComp'05 and the 2006 XYZZY awards. Vespers provides a compelling setting and a powerful storyline for a game that will, in the end, be something akin to Myst but with a fully interactive 3D environment and good old-fashioned text command input and output.
We continue on with our efforts to bring our NPCs to life, beginning with bits and pieces of text from the IF version of Vespers and ending with a modeled, animated, and voice-acted 3D character. Last time I discussed the development of Matteo, the oldest monk at the monastery; the second character we tackled was Constantin, who had some interesting and unique challenges of his own.
Constantin: From Concept to Character
We started out with a very general picture of Constantin; he's middle-aged, a handyman around the monastery (he was a former blacksmith), and a notably large man with a short temper. Again, we didn't have a lot of text to go on initially aside from a short description (which was actually removed from the game prior to the final release):
An enormous, hulking man, Constantin is taking the lack of food worse than the rest of the brothers. The former blacksmith has taken to religious life quite well and has assumed the responsibilities of almoner and cellarer since those two brothers died.
After some discussion between myself and Jason Devlin (the author), we decided we wanted Constantin to look extremely large, but not quite like a giant; not fat, but certainly heavy and imposing. We presented these ideas to N.R. Bharathae, our lead artist, who came up with his concept for Matteo.
Figure 1. Constantin concept sketch.
Seemed just right to me. With this as his starting point, N.R. designed Constantin's 3D model and then applied some slick textures. As before, we were going for a more realistic appearance for our characters, and N.R. came through for us again.
Figure 2. Constantin textures.
Constantin starts out the game sitting on a chair in his room, skinning a hare with his knife. So to get him ready for the game, we had to outfit him with the appropriate objects.
Figure 3. The Constantin model.
While N.R. was working on this, we also had the task of finding and recording a voice actor for the part. Trying to match a voice to a character like Constantin was not easy; we needed an actor who could really fit the part of a large, short-tempered man with an appropriately deep voice. The man we found to play the part was Jason Nacey.
Jason didn't have any real experience with voice acting prior to this, but he had been exposed to it through the work of his father. It was actually his father who heard about our voice auditions, and who passed the information along to Jason. Although it seemed a little awkward at first, Jason ended up doing a great job, and I think his voice fits the part perfectly. Here's a shot of Jason alongside Constantin, followed by a short bio he wrote.
Figure 4. Jason and Constantin.
"I have always been fascinated by a voice actors' ability to create a story by the sound, inflection, and timber of their voice. I often spend time driving my wife and 5 kids around in our minivan. We ordered our latest van with a DVD player for the kids. Without the benefit of video on long drives, I am able to really tune into the actors voices, and in this way I really became a student of the professionals like Nathan Lane (Lion King), Jason Lee (The Incredibles) and John Ratzenberger (what hasn't he done?!) to name a few. I have thought for a long time that to be able to take on that challenge would be fun and exciting. It was from my father that I first heard about the auditions for the voice parts for Vespers. Having had no previous experience with any formal voice acting, I went to the audition with no thought of actually landing a part, but I was very excited to just try and maybe, afterwards, be able to get constructive criticism on how I could improve my abilities. I was extremely nervous for the audition, and almost called and canceled so that I would perhaps save myself serious embarrassment. I finally resolved that everyone there would be strangers, and if I was going to stink up the place - dammit - I was going to it LOUDLY! I was elated to find out that I was chosen for the part of Constantin. And I look forward to many more opportunities to have this much fun again." -- Jason Nacey
Finally, there's the work of our lead animator, Matt Chin. Matt and I were still familiarizing ourselves with Torque's animation system while working on Constantin, so it took us some time to work out the kinks to produce what we wanted. Unlike Matteo, we wanted Constantin to play a looping idle animation; as mentioned above, when first encountered, Constantin is sitting in his room skinning a hare with his knife. So we needed a system where we could play this looping animation continuously, while also offering us the ability to choose one of two things for his speech animations: (a) interrupt the idle sequence to play a full body sequence in response, or (b) continue the looping idle sequence while playing a mouth/head animation on top of it.
To do this, we designed it so that some speech animations are full body animations (played with setActionThread), while others are blend animations (played with playThread). Then we set up our Sequence Manager to recognize which was which, and when it needed to to stop the idle animation before playing a speech animation.
As an example, here is a short portion taken from the text version of Vespers, with the player's commands in bold caps:
[b]Constantin's Room[/b] Constantin is one of the few brothers with anything in his room besides a bed. A few tools lay next to the door in the northwest; remnants of his life as a blacksmith. A smell lingers here: a sour smell. Brother Constantin sits on the bed, a young hare dangling from his hand. His knife moves swiftly. >[b]TALK TO CONSTANTIN[/b] "What do you have there, Constantin?" you ask, leaning forward. "Something to eat," he grunts. >[b]AGAIN[/b] "Is there no food left in the cellar?" He flinches slightly. "No. There is nothing in the cellar." >[b]AGAIN[/b] "Well, be sure to tell us when you are finished. We are all hungry." "I will." >[b]ASK CONSTANTIN ABOUT CELLAR[/b] "What?" he startles. "I'll get around to taking the lock off. There's no food left down there anyway." His eyes darken as they meet yours. "There's no reason to go down there anymore."
And here is the same portion of the game, as we developed it in 3D with animation and sound. Click the image below to see the Google video:
Figure 5. Click image above to see Constantin in action.
Hopefully that gives you all some idea how we went through the process of developing Constantin from a character in an interactive fiction game into a 3D animated and speaking NPC model. The final result, I think, is a nice combination of writing, modeling, texturing, animating, and voice work, the combined work of a group of really dedicated and talented people. Next time I'll introduce Lucca, the youngest member of the monastery and a character with challenges of his own.
Thanks for reading!