Adventures with NPCs Redux: Constantin

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.

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.

Constantin concept art.

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.

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.

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.

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 animators. We 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:

Constantin’s Room
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.

“What do you have there, Constantin?” you ask, leaning forward.

“Something to eat,” he grunts.

“Is there no food left in the cellar?”  He flinches slightly.

“No. There is nothing in the cellar.”

“Well, be sure to tell us when you are finished. We are all hungry.”

“I will.”

“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:

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.

Be the first to like.
Enjoyed this article? Subscribe to The Monk's Brew RSS feed.

This entry was posted in 3D/if, characters in games, Vespers. Bookmark the permalink. Post a comment or leave a trackback: Trackback URL.


  1. James
    Posted April 27, 2010 at 5:12 AM | Permalink

    Very Nice Mike. The animation and voice work is exceptional.

  2. Posted April 27, 2010 at 8:47 AM | Permalink

    Interesting as always, but, (this is no a real criticism, it is a question), I think his face is too much symmetrical, and that feels unnatural (this is not a criticism, because it is common in some games, and there are far worst faces in the gaming world like in Bethsheda games, Morrowind, Oblivion). So, I wonder if there’s a way to model the skeleton under the skin to add little deformations to break the symmetry? (although you keep using the same symmetrical texture).

  3. Posted April 29, 2010 at 11:35 AM | Permalink

    Thanks guys. His face does come across as too symmetrical in that picture, but I should let you know that the close up shots of his face are older pictures. His face texture has undergone a few changes since those shots were taken, and during gameplay his face doesn’t quite come across as so symmetrical. I think you’ll get a better sense of that once you’re able to test it out (which should be soon!).

Post a Comment

Your email is never published nor shared. Required fields are marked *

You may use these HTML tags and attributes <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>


Subscribe without commenting