Greetings, courageous ones
Filed under Design Diary on January 3, 2008
Keywords: conversation tree, cutscene, Neverwinter Nights, Pool of Radiance
I intend to be as faithful as possible to the events and locations in the original Pool of Radiance with my remake. The game begins–after making your characters and assembling you party–with a tour of New Phlan, courtesy of Rolf. The original tour was scripted. The game moved you from location to location and gave a text description of what you were looking at. The player could not break out of the tour prior to reaching its conclusion.
My initial approach to recreating the tour was through an NPC dialog tree. I placed a trigger that forced the NPC, Rolf, to approach the PC and initiate a conversation. Rolf would offer the tour, and if the player accepted, movement scripts would force them to the next stop on the tour. Once there, a new dialog would be initiated. Rinse and repeat.
As I wrote out the conversation tree for the sequence, I found myself dissatisfied with this solution. A good conversation tree provides the player with a variety of options, but I didn’t want to give the players a way to opt out of the tour, as I felt it was a critical element for recreating the original experience. I also wasn’t looking forward to placing multiple triggers, or creating a complicated conversation tree with a bunch of starting conditionals.
Fortunately, there was another option. With Shadows of Undrentide, the first NWN expansion, the ability to create cutscenes using the game engine was introduced. The process was made even easier with a series of functions created by one of the community members.
Scripting a cutscene is a lot like writing a screenplay. You start by identifying the actors and noting the locations where they move to. Then you write a line of code that tells an actor where to move, where to face, what to say, or even fire off an animation.
The hardest part is the timing. Each command is placed into an action queue, and the order in the queue is determined by a delay of seconds you specify. I finally figured out how many seconds it takes for a character to walk 10m last night (one square in the toolset area view), but I’m still running into some issues where I think I’ve delayed an action the right amount of time, but it still doesn’t fire when it should.
So far, I’ve only scripted Rolf greeting the PC and the first tour stop, but I’m very impressed with how much it feels like the opening of the original game, even with some of the changes I’ve had to make to the design of New Phlan. More on that tomorrow.

