CHAPTER 09 C – Vocal: Idle

Created By: Game Audio Resource Ltd     Date: 11/08/06/2019      Version: 2.00

In this guide we will focus on vocal exertions for entity idle status.
This is quite a hack-y process and not a recommended way to implement in a professional environment..
However, this demonstrates even with limited events we can still add completely new content without the need for extra new code.

Guide Steps:

  • STEP 01: Player Character
  • STEP 02: Enemy Entity
  • STEP 03: Test & Integrity Report

Task Time Needed: 2>3 Hours


Video Guide


Written Guide

Chapter 09 C – Step 01
Player Character

This step will set up a unique structure that can be used when the player Character is idle / not moving.
We will also give the option to play different types of idle dialogue depending on the health status of the Player Character

Hierarchy

  1. In the Project Explorer > Audio tab. Navigate to the Vocal_Player Actor Mixer
    Right click then select, New Child > Switch Container
    Name it: Vocal_Player_Idle
  2. With the Switch container selected, in the Property Editor > General settings tab > Output Bus tick override parent.
    Then assign the bus to the Dialogue_Player Audio Bus
  3. Right click the switch container, then select New Child > Random Container
    Name It: Vocal_Player_Idle_BelowWater
  4. Right click the Random Container, then Select New Child > Sound SFX
  5. The select the Sound SFX and name it: Silence
  6. In the Contents Editor > Add sources, then select Wwise Silence.
  • TIP: This means when the Player Character is below water, no idle dialogue assets can trigger.
  1. Right click the Switch Container, then select New Child > Blend Container.
    Name it: Vocal_Player_Idle_AboveWater
  2. Right click the Blend Container then select New Child > Random Container
    Name it: Vocal_Player_Idle_AboveWater_Health_High
    Select the Random Container, then in the Property Editor > General Settings tab.
    Change the play mode to Continuous
    Select Loop
    Tick Transitions
    Change Type to Trigger rate
    Change the duration value to 15.
    Open the Duration Randomizer window
    Tick enabled, then
    Min Offset = 0
    Max Offset = 5
  • TIP: What this means is when the player is idle. The duration values will randomly re-trigger between the values we have just set. (based in seconds)
  1. Now click on the advanced Settings tab.
    Tick Ignore Parent
    Tick Limit sound instances to 1 then Globally
    Set When Limit is reached to: Kill voice
    Set When priority is equal to: Discard newest instance
  • TIP: This means that when a vocal idle asset is playing, if a new asset is called. Discard, this always the asset playing to fully play without a new idle asset interrupting it.
  1. Copy the Random container into the same hierarchy location
    Name it: Vocal_Player_Idle_AboveWater_Health_Low
  2. Drag in one-shot vocal audio assets the 2 Random Containers
    Place them under the path: SFX > VOCAL > PLAYER > DIALOGUE
  3. Select the Blend Container, then in the Property Editor > General Settings tab, click the Blend Tracks > Edit button.
  4. Add a new Blend track
    Name It Vocal_Player_Idle
  5. Tick the cross-fade box, then assign the path: Game Parameters > Default Work Unit > PlayerHealth
  6. Close the Blend Track Editor
  7. In the Contents Editor, add the Health_Low & High Random Container’s
    Ensure Low is added first.
  8. Back in the Blend Track Editor Window,
    Change the Health_Low to start at 0, then change the end point to 40
    Change the Health_High to start at 40, then drag the block to the end at 100
  • TIP: This means when the player characters health is below, 40 the low health random container assets will trigger. Also, vice-versa, that when the Player Characters health is over 40, it will play the High health Random Container assets.
  1. Close the Blend Track Editor Window

Assigning States

  1. Select the Vocal_Player_Idle Switch Container.
    Then in the Property Editor > General settings tab > Switch > Group
    Assign the path: State Groups > Default Work Unit > PlayerInWater.
  2. Set the default Switch/State to No
  3. Then in the Contents Editor assign the following
    > AboveWater Blend Container to: No and None
    > BelowWater Random Container to: Yes

Event

  1. Locate and select the Foot_Player event
  2. In the Event Editor, Actions list Right click > select New Action > Stop > Stop
    Right Click again, select New Action > Play.
  3. Navigate back to the Actor-Mixer Hierarchy > Audio tab > Vocal_Player_Idle Switch Container, drag it onto the new Play and Stop event Actions.
  4. Select the Play Action, then change:
    Delay value to: 10
    In the Randomizer window, change the values to:
    Min Offset: 0
    Max Offset: 5
  • TIP: These event properties mean that the Idle Dialogue lines should not trigger until the player character has been stationary for 9>15 seconds. Basically, moving the Player Character triggers a footstep (Event: Foot_Player), stopping the Idle Dialogue content from triggering for a minimum of 9 seconds after the last Foot_Player sound event was called. If the Player Character is moved, the Foot_Player event resets the delay value back to 0.
  1. Save your Wwise project updates and generate the sound banks.

If you would like to test the data update works boot up the game. Move the character, then leave the player character to not move for around 30 seconds.

Chapter 09 C – Step 02
Enemy Entity

In this step we will implement a more basic structure for any enemy entity to randomly trigger idle vocal Exertions
We will use the Ogre as an example

HIERARCHY

  1. Navigate to the Project Explorer > Audio Tab > Vocal Wwise Work Unit.
    Right Click then select, New Child > Actor Mixer
    Name it: Vocal_Orge
  2. With the actor mixer selected, in the Property Editor > General Settings tab, Output bus
    Assign it to the path: SFX > Vocal
  3. Right click the Actor Mixer then select, New Child > Random Container
    Name it: Vocal_Ogre_Idle
  4. With the Random Container selected, in the Property Editor > General Settings tab, change the play mode to Continuous
    Tick Loop
    Tick Transitions
    Change the Type to Trigger rate.
    Set the Duration Value to 3.
    In the randomizer window, tick enabled, then
    Min Offset 0
    Max Offset 3
  5. With the Random Container selected, go to the Property Editor > Advanced Settings tab
    Tick Ignore Parent
    Tick Limit sound instances to:
    Change value to 1 Globally.
    Change “When limit is reached to”: Kill voice
    Change “When Priority is equal to”: Discard newest instance
  • TIP: These settings allow only one vocalisation per Ogre to trigger at one time, without being interrupt by a new idle asset if it is called.
  1. Now import associated audio assets
    Under the Path: SFX > VOCAL > OGRE > EXERTION
  • TIP: If you decide to make your own assets for idle vocalisations for any entity type, the data values are set up so the assets are no longer than 2 seconds. If you wish to have longer assets. You will need to increase the Stop Actions > Delay value to the desired length.
    However, the longer the asset the more you may run the risk of the asset playing the same time another vocalisation type may trigger. There is a way round this using the Master-mixer Hierarchy and unique Output + Auto-ducking.
    This process shall be highlighted in a later Chapter regarding the heart beat breath.

Positioning

We will now set up for a default sizing set of attenuation’s for use with any 3D Vocal content.

  1. In the Project Explorer > Share sets tab > Locate the 3 Footstep attenuation’s.
    Then copy them into the Vocal Work Unit.
  2. Then duplicate the 3 events, so you have 2 of each size.
  3. Name each sizing to the corresponding name below
    > Vocal_Large_Close
    > Vocal_Large_Far
    > Vocal_Medium_Close
    > Vocal_Medium_Far
    > Vocal_Small_Close
    > Vocal_Small_Far
  4. Open the Vocal_Large_Close Attenuation. Then set the following values
    Max Distance: 75
    Remove all points in the graph.
    Then add points at:
    Output Bus Volume: 7.5, Distance: 0.00
    Output Bus Volume: 35.00, Distance: -30.0
    Change the curve between points 7.5 > 35.00 to Logarithmic (Base 1.41)
    Change the curve between points 35.00 > 75 to Logarithmic (Base 3)
  5. Open the Vocal_Large_Far Attenuation. Then set the following values
    Max Distance: 100
    Remove all points in the graph.
    Then add points at:
    Output Bus Volume: 10, Distance: 0.00
    Change the curve between points 10.0 > 100.00 to Logarithmic (Base 3)
  6. Open the Vocal_Medium_Close Attenuation. Then set the following values
    Max Distance: 50
    Remove all points in the graph.
    Then add points at:
    Output Bus Volume: 7.5, Distance: 0.00
    Output Bus Volume: 32.00, Distance: -30.00
    Change the curve between points 7.5 > 32.00 to Logarithmic (Base 3)
    Change the curve between points 32.00 > 50 to Logarithmic (Base 3)
  7. Open the Vocal_Medium_Far Attenuation. Then set the following values
    Max Distance: 70
    Remove all points in the graph.
    Then add points at:
    Output Bus Volume: 10.00, Distance: 0.00
    Output Bus Volume: 40.00, Distance: -30
    Change the curve between points 10.00 > 40.00 to Logarithmic (Base 3)
    Change the curve between points 40.00 > 70.00 to Logarithmic (Base 3)
  8. Open the Vocal_Small_Close Attenuation. Then set the following values
    Max Distance: 35
    Remove all points in the graph.
    Then add points at:
    Output Bus Volume: 5, Distance: 0.00
    Change the curve between points 10.00 > 35.00 to Logarithmic (Base 3)
  9. Open the Vocal_Small_Far Attenuation. Then set the following values
    Max Distance: 50
    Remove all points in the graph.
    Then add a point at:
    Output Bus Volume: 10.00, Distance: 0.00
    Change the curve between points 10.00 > 50.00 to Logarithmic (Base 3)
    The Default attenuation’s are set up for all Vocalisation types.
    If you need more fine tuning, add new ones where needed.
  10. Return to the Actor Mixer Hierarchy, Vocal_Ogre_Idle Random Container.
  11. Then in the Property Editor > Positioning tab, add the following settings
    Tick Override parent
    Under Listener Relative Routing > 3D Spartialization, change the Drop-down menu to Position + Orientation
    Then under Attenuation assign the following path: My Cube > Vocal > Vocal_Medium_Close

Events

  1. In the Project Explorer > Events tab, locate the event Foot_Ogre
  2. In the Event Editor list right click then select New Action > Play
    Change the Delay value to: 0.02
    Change the probability value to: 50
  • TIP: However, a lower value e.g. 10>20 will be needed when multiple Ogres spawn in a map, adjust the value to your liking.
  1. Right click the list, select New Action >Stop > Stop
    Change the Delay Value to: 2
  2. Then in the Project Explorer > Audio Tab, locate the Vocal_Ogre_Idle Random Container.
    Drag it onto the 2 new blank Event Actions Play and Stop.
  • TIP: These settings are what drives the content to trigger. With every footstep event called, the vocalisation is also called (with a 0.02 delay)
    The vocal content then gets stops, 2 seconds after a footstep event has been called.
    The probability is the frequency you wish the vocal exertions to trigger.
    Along with the limitations we set up to allow only one asset to trigger at one time
    This is how we control the content.
    NOTE: The Random Container has a trigger rate set.
  1. Save your Wwise project updates. Then generate the sound banks.

Chapter 09 C – Step 03
Test & Integrity report

In this step we will test out Wwise data updates
To assist with trigger rate balancing, To increase the frequency of the idle content triggering, adjust the trigger rate duration value.

  1. Boot up the game and connect Wwise to the game. Then change to the Wwise Profiler Layout
  2. Move the Player Character, then come to a stop. Wait for the idle content to trigger a few times before adjusting triggering values.
  3. Balance the Player Character’s idle content
  4. Load a single player DSMP Map. In Wwise, Solo an enemy entities Idle hierarchy. (E.g. Vocal_Ogre_Idle)
  5. Wait for the entity to spawn. Then wait for the entity to stop moving a few times, for the idle content to trigger. Adjust the balancing and trigger rates, if needed
  6. Once you are happy with the balancing you have added, close the game
    Save your Wwise project updates, then generate the sound banks.
  7. Finally, run a Wwise Integrity Report, to check for any data errors

Use this guide to set up hierarchies for any other entity types

%d bloggers like this:
search previous next tag category expand menu location phone mail time cart zoom edit close