Expanded Narrative Structure
When we began work on BurntOut, the idea was to have several scenarios in a single scene. As the project progressed, we instead realized that having scenarios that spanned multiple scenes was a better-suited approach for the task. We’ve since changed the narrative structure to allow specifying the next scene to account for this. This next scene can be transitioned to immediately after the narrative for that scene is completed, or it can be forced to wait until the player talks to a character or interacts with an object.
Another issue was that our narrative structure was very linear. A scenario would feature talking to one person, and that scenario would span one conversation with them. We’ve found it necessary to add more complexity to our scenarios, allowing a single scenario to host multiple characters and conversations. To fix this, we’ve added triggers to allow parts of the narrative to not start up immediately after the last one completes, but rather, start after the player talks to a particular character or interacts with a particular object. We also implemented dialogue that does not have any choices. As the scenario got more complex, we found places where it would be helpful for the character to talk to someone for information, without making an immediate choice.
Previously, we didn’t have a good system for NPC characters. In our early system, we were saving them as a name and a unique identifier within the narrative structure. However, with the old narrative structure being saved to the scene, this method wasn’t well-suited for what we wanted to create.
Instead, we’ve changed to using prefabs to represent the characters in our game. This makes it a lot easier to associate things like sprites with the character, as well as making it a lot easier to reuse characters between scenes and scenarios. We simply drag a prefab character in the scene, and then our narrative structure pulls them from the scene and refers to them based on their unique identifier. We position these prefabs in the scene, and then their sprites and names are used for the dialogue.
Our custom editor had to be drastically changed since it was built around having multiple scenarios in one scene, rather than a scenario spanning multiple scenes. Now we just manage the part of a scenario relevant to the current scene, and we have split up that information between three tabs, rather than crowding it in one.
The first tab allows for the setting of basic information regarding the part of the scenario that spans this scene. It allows for start and end messages when relevant to the scene, as well as making it easy to specify what the next scene is. The scene field allows for an easy drag-and-drop of the scene asset into the field, which is then saved as a file path. That next scene can be triggered to occur immediately after the narrative structure finishes, or it can wait until the player then interacts with something or talks with someone.
The second tab will be where general actor management will take place. This will be where we’re able to set basic information for the actors in the scene. Any basic dialogue that happens outside the more linear narrative structure would be dictated there.
The third tab is for the event structure. This is an expanded version of the “Choices” we had in our previous Narrative Manager window. Most of the ways we’ve expanded the narrative structure are all handled in this tab. Events can easily be toggled whether they feature a choice, and they can also easily be specified whether they begin immediately after the last set of events, or whether they wait for a specific trigger.
You can read more about the BurntOut game at its website and follow along with our development on the blogs.