BioShock Infinite: Nav Aid VO
This design treatment describes a system I created and implemented for BioShock Infinite. My goals were twofold: decrease the amount of time needed to implement “reminder voiceover” for our VO scripting team; and improve player experience by turning “nag VO” (as it was called) into a positive gameplay experience.
Navigation Aid Voice Over (Nav Aid VO)
Players who lose their way in the level should be assisted. Players who are exploring but not lost should not be “nagged” if they fail to proceed.
After entering an area, once X time has elapsed a VO event will automatically trigger through which the protagonist, companion character, or both will remind the player of their intended goal – e.g. “We should head to the elevator.” The Nav Aid system allows the player to press a button at any time to see a “guide” arrow leading to their next mission waypoint.
This solution is time-intensive to set up. Designers must avoid reminder VO playing during combat, over other VO, during cutscenes, or if the player has left the relevant area. In the event that VO should *not* play, the script must be reset, delayed, or trashed accordingly. Individual lines can take multiple hours to implement and are vulnerable to scripting errors. Meanwhile, players who take time to explore may feel rushed to move on to the next area.
Rather than set reminder VO on a timer, I opted to leverage the existing Nav Aid system, as it clearly indicates that the player is interested in progressing. Voiceover executed in this manner is a reward: instead of simply seeing a guide arrow, the player is treated to a brief exchange between the main characters. Even better, the player is never interrupted during voluntary exploration.
Additionally, the process of creating reminder VO is vastly simplified – the VO line is determined by the player’s current quest rather than their physical location. The scripter must only account for combat, other VO, and (rarely) cutscenes in determining whether or not reminder VO should play. There is also no need to worry about whether the script should reset, pause, or abort completely; the script remains active until the quest objective is updated.
- The Nav Aid VO system required additional tech from the programming team: patterns to determine whether the player was in combat and whether any other voiceover was playing. Cutscenes were handled on an individual basis by temporarily disabling the Nav Aid VO script, a simple process due to its isolated and modular design. Because the script was player-initiated, there was not a significant increase in per-tick logic – the new patterns only ran when the Nav Aid button was pressed.
- A significant number of reminder VO lines had already been implemented. However, the time saved from implementing the remaining lines was more than enough to make up for redoing the previous lines. I also commented out rather than deleted the previously implemented lines, a prescient decision given the later cutting of the Nav Aid VO system.
A new sublevel was added to each persistent level in the game, containing a trigger that listened for the Nav Aid key press. After evaluating whether it was safe to play VO, the script would choose from a list which VO conversation to play, based on the current quest.
The system supported multiple conversations for each quest, allowing repeated button presses to trigger different, unique conversations (after a brief delay between each). After all options had been exhausted, the script would fail out silently until the active quest changed.
Finally, commands were set up to allow designers to temporarily suppress Nav Aid VO if necessary. All functionality was self-contained in the Nav Aid sublevel, and the list index value was set exclusively within the Quests sublevel. This allowed easy manipulation of the system without significant danger to the overall level scripting.
The new system cut implementation time in some cases by as much as 90%, and its relative simplicity made scripting errors far less likely. Additionally, the aesthetic of player-initiated conversations was vastly preferred by testers over the traditional timed “nag” VO.
Unfortunately, only about half of the quest objectives had reminder lines associated with them, and the Narrative team liked the system enough to want to add lines for every quest. When it was determined that there was insufficient time to write, record, and finish the necessary voiceover, the system was cut.