Vespers3D: Adventuring Along
by Rubes · 01/22/2007 (7:36 pm) · 11 comments

Vespers3D: Adventuring Along
Recap:
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 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 somewhat like Myst but with a fully interactive 3D environment and good old-fashioned text command input and output.
Well, we've now crossed the one year mark. It's been a few months again since my last .plan, so I thought I'd give an update on our progress for those still interested. It's a bit long and image-heavy, so my apologies in advance.
Text Parsing
The fun thing about working on a text parser is that the work really never ends. One of the main challenges to the implementation of a parsing engine in this setting is that IF games are intrinsically turn-based, as opposed to the real-time nature of 3D FPS games. That requires a bit of a frameshift in the approach to programming when it comes to implementing some of the more advanced features of a text parsing engine.
One of those features is what I call command completion. In text IF, some commands require the specification of direct or indirect objects (eg: UNLOCK DOOR WITH KEY), but traditional parsers have been programmed to allow players to enter partial commands, and to complete them the following turn. For instance, the UNLOCK verb requires both direct and indirect objects, as above. However, if the player only types UNLOCK, the parser will respond appropriately:
> UNLOCK What do you want to unlock? > THE DOOR What do you want to unlock the door with? > KEY No kidding. Maybe if you had a key you could do that.
This requires the engine to keep track of the last command that was entered, including the verb and any direct or indirect objects, as long as necessary until the command is finished. And this has to happen while the player can still be moving around, which is a real departure from conventional IF.
It turns out that command completion is not a tough thing to program in and of itself. The real challenge occurs when you take into account the other advanced feature of parsing engines: disambiguation. Although I had already implemented disambiguation, the combination of disambiguation and command completion can be a real bastard.
> UNLOCK DOOR Which door do you mean, the bedroom door or the outside door? > THE OUTSIDE DOOR What do you want to unlock the outside door with? > THE KEY Which key do you mean, the little gold key or the big silver key? > OH FOR CRYING OUT LOUD Fine, fine. You unlock the outside door with the little gold key.
As you can see, this requires keeping track of a lot of things. The real challenge was how to handle situations where disambiguation precedes command completion and vice-versa, particularly when both instances occur within the same command entry as above. I won't go into details, but it took a lot of code contortioning to get it working. The result, however, is what I feel is a much stronger text parsing engine, one that I hope is up to the standards of the general IF community.
Hopefully, though, both disambiguation and command completion will be less of an issue with Vespers3D than with more traditional IF, since mouse-based object selection will (presumably) make it easier to enter complete, specific commands without having to type the entire phrase.
Character models
Although the monastery still needs some more work, now that we have an excellent character modeler starting with the team we can turn some of our attention to populating this world of ours with NPCs.
We thought a good place to start is with the character of Matteo, one of the oldest brothers at the monastery. Matteo has the shortest part in the game; he exists only in one location and, aside from conversing with the player character (the Abbott), he doesn't do much. So it would be a good way for us to get our feet wet with the modeling, animating, and importing of the NPCs.
Our awesome lead artist, N.R. Bharathae, first developed the concept art for Matteo, who we wanted to represent as short and overweight, but also very fatherly and gentle. He then progressed with the modeling, and I think he did an amazing job capturing real personality in his face:
Matteo concept and modelThe real challenge at this point will be to see how much animation we can get away with. Given the amount of dialogue in the game, it's not realistic to expect full lip sync with all of our NPCs. But N.R. has built the model for full facial animations, so it will be fascinating to see how much we can get out of it, such as blinking, eyebrow motion, and so on. I'm really looking forward to how that turns out.
Even without lip sync, it will still be a challenge to create body animations that will be appropriately coordinated with the voice recordings, given the many different ways people could record each dialogue line. That naturally brings me to...
Voice acting
Following some of John Seguin's great advice, we did our best to start recording voiceovers that don't suck. But that's a tough thing to do on a tight budget, let me tell you. And by 'tight', of course, I mean as close to 'none' as you can get.
There's almost nothing worse than bad voice acting for a game. So how do you get decent voice talent when you have no budget? Being the adventurous (ahem) and resourceful person that any budgetless indie developer should be, I looked to our academic community for inexpensive help: acting students! Luckily for me, there are two colleges with theater programs near me, so I spent some time talking with people there and figuring out how best to go about doing this. I then generated some "casting call" flyers and gave them to the programs to put up around campus. The response was pretty amazing, though it was aided by the fact that a local talent company picked it up and sent it to many of their clients. I had 6 parts to fill and ended up with well over two dozen responses!
Since the game was already written (in the text version), it was a simple matter to put together scripts for each of the characters and to e-mail them to each of the auditioners beforehand. I reserved a decent (and free) auditioning room at the Student Union of one of the colleges and set up shop with some basic equipment: a decent Shure microphone and stand, a pop filter, and an input adapter for my laptop, all obtained for a reasonable cost.
My friend Sam gets the tech readyWith some help from my (inexpensive) wife and friend, we recorded all of the auditioners over two different afternoons, and it was a blast! Although it was clear many of the auditioners had little to no experience with voice acting, we were still able to get some excellent actors for the 6 parts we needed. The recording system seemed to work well, too, although it's tough to say right now if the recordings will be of sufficient quality for the final product.
Getting ready to record
Recording an auditioner for ConstantinSo after filling all 6 roles, we've gone ahead and started some of the initial recording for Matteo, which should help us with making the animations fit the character expressions. It's going to be a trip seeing if we can get this to work the way we want.
Screenies
As they say, no blog is complete without a few gratuitous screen shots. Since N.R. has been hard at work refining the monastery, here are a couple of shots to show his progress. Also included is a screen shot of the kitchen, which we have decided to populate with a few of the items from Apparatus's excellent Medieval Props Pack. I think they fit the scene quite well and help give the kitchen a much better atmosphere.
The Abbott's bedroom
The new front entrance
The kitchen with various props from the Medieval Props PackUntil next time, thanks for reading...
#2
01/22/2007 (8:11 pm)
That's really cool! Can't wait to try it out sometime!
#3
01/22/2007 (8:31 pm)
Excellent Rubes! Looks like it's really coming along well. I hope I'll be able to help getting the Mac version running at a reasonable speed :-)
#4
01/22/2007 (8:41 pm)
Good Stuff Rubes!
#5
01/23/2007 (8:02 am)
Nice! I especially dig your blankie dampening setup! Great stuff!
#6
01/23/2007 (8:06 am)
Cool, that sounds like a lot of fun. :-)
#7
@Andy: Thanks for what you've done so far...it's good to see some real progress being made.
01/23/2007 (8:10 am)
Thanks everyone, I definitely appreciate the support!@Andy: Thanks for what you've done so far...it's good to see some real progress being made.
#8
I loved text adventures and I miss the days when I could argue with parsers! :p
Nice work ... I'll certainly be looking out for a download :)
01/23/2007 (8:30 am)
First up, I thought this idea was nuts. Then I thought about it some, read your blog post and looked at the pics ... on second thoughts, I think this is a GREAT idea!I loved text adventures and I miss the days when I could argue with parsers! :p
Nice work ... I'll certainly be looking out for a download :)
#9
01/23/2007 (9:04 am)
Quote:and I think he did an amazing job capturing real personality in his faceMe too. This project is coming along nicely! Keep it up...
#10
What do you want to tie up self with?
>ROPE
The You struggles, and you cannot tie him up.
I remember that clearly from Zork :) Why I wanted to tie myself up, I don't know but more to the point - I look forward to your game!
01/23/2007 (11:01 am)
>TIE UP SELFWhat do you want to tie up self with?
>ROPE
The You struggles, and you cannot tie him up.
I remember that clearly from Zork :) Why I wanted to tie myself up, I don't know but more to the point - I look forward to your game!
#11
01/23/2007 (1:29 pm)
Looks like it's coming along nicely. Keep up the great work! 
Torque Owner Joshua Dallman
Default Studio Name