Aarf! Arf arf arf: Talking to the player with barks Patrick Redding Ubisoft Montreal
PATRICK (staring out into crowded room) Hello, and welcome! (after a beat) Who am I? INT. DAY. Room 269, Moscone Center On the stage is PATRICK REDDING, 39, a game designer at Ubisoft Montreal. The grey in his hair is proof that he worked on FAR CRY 2, designing narrative systems.
Systemic vs Scripted Primary function of AI in support of gameplay? Does the AI have a life when the player’s not around? How dynamic is combat and other action? How open is the level design? Considerations
Systemic vs Scripted Considerations Event Receiver Speaker Trigger/ Player Script Dialogue Manager Db Playback
Systemic vs Scripted Considerations Event Receiver Speaker Source Dialogue Manager Db Receiver Interlocutor Source States Recv’r States Stimulus Playback
Systemic: Sensory vs Dispatcher Deep generalized behavior Or Broad case-based behavior Considerations
Systemic: Sensory vs Dispatcher Considerations Damage Noise Interest Fear … Event Receiver Source (player, gunshot, grenade, corpse, etc.) States (e.g.): Status (alert, idle) Task (sleeping, paperwork) Threat (under fire, safe) … Any (generic) States (e.g.): Day/night/weather Location (terrain, building) Metric (faction strength, kills) … Any (generic)
Systemic: Sensory vs Dispatcher Considerations Update threat map Last man standing Enemy on mounted weapon Call reinforcements Last known position Search pattern Move to action stations … Event Receiver(s) Source (dispatcher) States (e.g.): Status (alert, idle) Task (sleeping, desk) Threat (under fire, safe) … Any (generic) Game space
Systemic: Contextual/Affordant Considerations Smart-Object Event (e.g.) ‘DrinkWater’ Chapter (e.g.) ‘Convo_Act2Gossip’ Agent A (gurgling noises) + 10 seconds Agent A Ahh… I didn’t realize how thirsty I was… + 10 seconds Agent A Hey… Come on…! Who hogged all the cold water?! Bastards. Agent A Hey brother. Been awhile. Agent B Yeah, I think it was before Alexi, you know… Agent A Shhh. Keep it down. Agent B Oh, what? Like everybody doesn’t know why he ate a bullet? Please.
Scripted: Chapter or Location –specific Considerations Receiver Chapter States (e.g.): Mission sequence (8/12) Active mission (A1SM01) Last outcome (faction++) … Location States (e.g.): Location/zone Environment/terrain type Nearest game objective Nearest game ingredient … Mission Script Event Dialogue Manager Db Playback
Scripted: Chapter or Location –specific Considerations eventChapter (e.g.) ‘AssassinateVIP’ Location (e.g.) ‘NaturalGasRefinery’ Sensory (e.g.): Bullet impacts Agent A (yelling into radio) I’ve got contact on my station… security breach with small arms fire… Agent A (yelling into radio) Watch your fire! Check your shots or we’re all going to burn… Dispatcher (e.g.): Fall back to rally point Agent A (yelling into radio) All stations! Form up on the client and hold! Agent A (yelling into radio) Can’t risk a firefight… Regroup at the safe zone!
Generic Vocalizations “ARRGHH!” “@*%$^#!” “Look out--!” terrible to write terrible to direct terrible to perform… Bark Strategies
Generic Vocalizations … and they add a lot of redundant audio data to the game: Bark Strategies
Generic Vocalizations Bark Strategies Dialogue Db Generic Vocalization Db Profanity Onomatopoeia Exclamations Singing … (anything repetitious) Severe 1$ONO_INJR_SVR1$ Fatal 1$ONO_INJR_FTL1$ Physical Collapse$ONO_EXER_CLP1$ Prolonged Exertion$ONO_EXER_PRL1$ Fast Exertion$ONO_EXER_FST1$ CLP1 : PHYSICAL COLLAPSE 1 VO_ST_GVF_ONO_EXER_CLP1_01_001_GAA_DRY AGENT A 21:$NullSound$ 2 VO_ST_GVF_ONO_EXER_CLP1_02_001_GAA_DRY AGENT A 22:$NullSound$ 3 VO_ST_GVF_ONO_EXER_CLP1_03_001_GAA_DRY AGENT A 23:$NullSound$
State: Threat Level Bark Strategies eventThreat Level (e.g.) +1 (exposed to fire) Threat Level (e.g.) +2 (under direct fire) Dispatcher (e.g.): Reload, CheckCover Agent A I’m dry… Cover me! Agent A Oh NO…! No no no no no…
State: Persistent metrics Integrating RPG-like stats progression into a variety of genres Allows AI to tailor responses to player presence and actions in light of game history, reputation, skills Gates dialogue content in support of meaningful consequences (build on Fallout 3 example) Bark Strategies
State: Persistent metrics Bark Strategies Event Receiver Source (player, principal cast NPC) States (e.g.): Status (alert, idle) Task (sleeping, paperwork) Threat (under fire, safe) … Any (generic) States (e.g.): Reputation/Influence XP Stats/Skills/Perks* Faction affinity (+/-) … STR AGL INT
State: Persistent metrics Bark Strategies eventInfluence (e.g.) -1 (bad) Influence (e.g.) +1 (good) Social (e.g.): Greet Agent A Oh look, my favorite parasite. What do you want? Agent A Ah, my friend! How may I be of service today?
Solo vs Chained Bark Strategies Source (player, enemy, etc.) Receiver (Team) Receiver (Solo)
Solo vs Chained Bark Strategies eventChained (e.g.)Solo (e.g.) Dispatcher (e.g.): Reload, CheckCover Agent A I’m out…! Agent B I got your corner… Make it quick… Agent A Standby… Agent U (in Russian) Damnation…! This cheap Tajik ammunition was a rip- off…
Using layers Layering some or all of the above response types Queuing within an aggressive censor system allows designer to tweak signal-to-noise Bark Strategies
Content management pipeline Spreadsheets are an ugly compromise Need dedicated tool for entire pipeline ‘Content manager’ might be a full-time job Tools
Playback rules Meta-data attached to individual lines of dialogue Mark-up used by animation, audio systems at run-time Some hard-coding of rules into other AI Tools
Managing variations Variation banks used to exploit streaming and avoid bottlenecks Banks differentiated by global AI conditions (alert, combat, etc.) Individual banks can be swapped out Gaps during streaming can be filled with generic vocalizations Tools
Censor systems Controls flow of bark outputs Regulates the mix of generic vs special-case barks (to conserve content) Assigning different classes of dialogues to ‘censor groups’ Tools
Frequency stats Gather data on playback frequency from playtesters Bot/plug-in running in background aggregates stats over the local network Good for identifying “dead” lines, or over- exposed reaction events Tools