-
Notifications
You must be signed in to change notification settings - Fork 7
Using the Sound Detector System
Emerald AI's Sound Detector is an external component that gives AI the ability to hear unseen targets by tracking their noise levels. When player targets enter an AI's Detection Radius, their movement and velocity are tracked to simulate noise levels. As a target is moving, their sound level is stored and incrementally raises any nearby AI's Threat Amount and when all targets are slow enough, it will lower any nearby AI's Threat Amount. Depending on the Threat Amount an AI reaches, it will trigger a list of modular user set reactions.
- Sound Detector System
- Reaction Objects
- Adding the Sound Detector System to an AI
- Using an Attract Modifier
The Sound Detector System is what allows AI the ability to hear sounds and detect noises made by Attract Modifiers. AI need to have a Sound Detector component applied to it in order to use the sound detector features. This section explains the editors and functionalities of this component. For a detailed guide on adding a Sound Detector component to your AI, please see the section Adding the Sound Detector System to an AI.
The sound detector system and its settings are split into 2 sections (Sound Detection Info and Sound Detection Settings) with each of the 3 Threat Levels (Unaware, Suspicious, and Aware) having their own settings.
The Sound Detector Info gives real-time information on the AI's Current Threat Level and its Currently Threat Amount.
The Sound Detector Settings gives users control over how often sound detection calculations are made, the minimum needed velocity, the how quickly noise level will raise, and how quickly the noise level will fall. There's also an option to control how often an AI can detect Attract Modifiers.
There are 3 threat levels with each being triggered when the Current Threat Amount value threshold is met. When a target is within an AI's Detection Radius, it will automatically be added to the AI's Sound Detector so its noise level can be tracked. Multiple player targets can be tracked at once and each target's noise data is stored. All targets will contribute to the AI's Current Threat Amount. When an AI's Threat Level thresholds is met, it will invoke the reaction for that Threat Level.
Threat Level | Description |
---|---|
Unaware | Unaware will only be triggered after an AI has become Suspicious or Aware. This can happen after a target has been lost or is too quite to be detected. This should be used for resetting an AI back to its original settings, given they've been modified with a Reaction Object. |
Suspicious | Suspicious will only be triggered once and after an AI has reached a Suspicious Threat Level. It will not trigger again until after the AI has engaged with a target or if it has reached the Unaware Threat Level. |
Aware | Aware will only be triggered once and after an AI has reached an Aware Threat Level. It will not trigger again until after the AI has engaged with a target or if it has reached the Unaware Threat Level. |
Reaction Objects are a list of modular reactions an AI will make when certain sound related mechanics happen, such as hearing a collision noise or reaching different Threat Levels. These reaction are always followed from top to bottom with various settings for controlling delays and conditions allowing for further unique and believable functionality.
A Reaction Object can be created by right clicking in the Project area and going to Create>Emerald AI>Create>Reaction Object
All Current Reaction Types (more will be added with future updates)
Since this is a pretty in-depth and complex system, it will be explained in segments from a very simple reaction to more complex ones. Assume the following Reaction Object is called when an AI reaches the Suspicious Threat Level. (These examples are included with the 3.2 update)
Display a debug message that reads "What was that?!" to the Unity Console.
Display a debug message that reads "What was that?!" to the Unity Console, move to the loudest detected target, and then wait 3 seconds.
Display a debug message that reads "What was that?!" to the Unity Console, play an emote animation with an ID of 1, delay the next reaction by 1 second, move to the loudest detected target, and then wait 3 seconds.
Display a debug message that reads "What was that?!" to the Unity Console, play an emote animation with an ID of 1, delay the next reaction by 1 second, generate 2 waypoints within a radius of 5 units of loudest detected target waiting 2 seconds in between each waypoint, wait for the AI to finish reaching all waypoints, and then display a debug message that reads "Hmm...guess I'm hearing things..." to the Unity Console.
Display a debug message that reads "What was that?!" to the Unity Console, have the AI enter its combat state (allowing it to equip its weapon and use its combat animations), delay the next reaction by 1 second, set it to use its run animations, generate 2 waypoints within a radius of 5 units of loudest detected target waiting 2 seconds in between each waypoint, wait for the AI to finish reaching all waypoints, exit its combat state (allowing it to unequip its weapon and use its non-combat animations), reset all other settings back to their defaults, and then display a debug message that reads "Hmm...guess I'm hearing things..." to the Unity Console.
Ensure your AI is fully setup through the Emerald AI Setup Manager and that it is fully working with all needed animations and settings. If you have not done this yet, please see the Setting up an AI section.
Find the SoundDetector script by searching for SoundDetector within the Project tab. Drag and drop it at the top of your AI.
After adding a new Sound Detector component, each of the reaction slots will be blank. These reaction slots control what reactions the AI takes when each Threat Level is met. A Reaction Object holds a list of reactions that the AI will follow in order.
Assign a Reaction Object to each slot. While starting off and familiarizing yourself with the Sound Detector System, it is recommend to use the included example Reaction Objects. Assign the Unaware reaction object, to the Unaware reaction slot, the Suspicious reaction object, to the Suspicious reaction slot, and the Aware reaction object, to the Aware reaction slot.
After the AI has a Sound Detector component and Reaction Objects assigned for each Threat Level, it has sound detector capabilities. Users can fine tune the Sound Detector Settings to suit their needs.
Note: The higher the Check Increment, the more accurate the sound detector process will be. The Min Velocity Threshold controls the minimum velocity will be needed to increase an AI's Threat Level and Current Detected Noise Level (CDNL). When this happens, the AI's CDNL will be increased by the Attention Rate. If all detect targets' velocity is below the Min Velocity Threshold, it will decrease the CDNL by the Attention Falloff.
An AI's levels update in real-time which can be seen in the Info within the editor. This can further help users finetune their Sound Detector Settings.
The Attract Modifier will attract AI that are within range and invoke the 'Attract Reaction'. The object the Attract Modifier is attached to will be the source of attraction. This system is intended to extend the functionality of the Sound Detector component by allowing certain objects, collisions, and custom calls to attract nearby AI.
Find the AttractModifier script by searching for AttractModifier within the Project tab. Drag and drop it at the top of your AI.
After you have added an AttractModifier to your object, you will need to specify your Emerald AI Layer. When the AttractModifier is triggered, it will send information to all detected AI with this layer that are in range.
Next, you will need to assign a Reaction Object. For this tutorial, just using one of the included Move To Attract Source (Attract Modifier) example.
Adjust the Attract Modifier settings as needed. There are options to have the Attract Modifier triggered OnStart, OnTrigger, OnCollision, and with a custom call. Ensure you have a rigidbody component on your game object if your Attract Modifier will be using OnTrigger or OnCollision.
- Version 3.0 Upgrade Guide
- Creating an AI through the Setup Manager
- Setting up an AI's Animations
- Creating Attack Animation Events
- Creating an AI Ability Object
- Applying an AI's Head Transform
- Applying an AI's Ranged Attack Transform
- Setting up an AI's Factions
- Setting up an AI's Layers and Tags
- Using the Combat Text System
- Setting up an AI's Optimization Settings
- Setting up an AI with Ragdoll Deaths
- Creating a Shooter AI
- Creating a Floating or Hovering AI
- Using Emerald AI's Built in Object Pool
- Using the Emerald AI Needs System
- Using Emerald AI with Crux Spawner
- Using Location Based Damage
- Using the Emerald AI Camera Shake System
- Setting up an Equippable and Unequippable Weapon
- Setting up Ranged Weapon Hand IK
- Using the Target Position Modifier
- Using the Built-in IK System
- Setting up Non-AI Targets
- Setting up Custom Damage with Emerald AI
- Using the Sound Detector System
- Setting up the Built in Health Bars and Name Text
- Behaviors and Confidence Levels
- Wander Types and Movement
- Using Factions and Faction Manager
- Detection Type and Target Picking
- Adjusting an AI Hit's Transform
- Enabling an AI's Debugging Tools