Release Notes
Release Notes
This section shows every release note from every update as the Asset Store has a limit with how many characters can be used within the Release Notes section.
1.2.5
General
Added VR support for the Combat Text System. This is done through the Combat Text Manager and enabling the VR Support toggle.
Improved the included camera control by no longer capping the mouse movement when at the edges of the screen.
Fixed a bug that sometimes caused the backup state to get stuck in a state that caused it to not trigger again.
Fixed a bug that would sometimes cause an AI to ignore an Ability's Distance Condition.
Fixed a bug that didn't allow NavMesh Links to work. While animations for NavMesh Links still aren't implemented, this fix allows an AI to at least use NavMesh Links. Users can use an AI's Emote Animation, with NavMesh Links, until this feature is properly implemented.
Fixed a bug that caused an error wtih some abilities that used a Condition and Cooldown Module with a certain combination of settings.
Sound Detector Improvements
Removed the Frequency Check setting entirely. This made the sound detection feel inconsistent and a bit clunky. Sound is now calculated across all frames (only when a target is with an AI’s detection radius). This allows for a smooth and consistent sound gains and falloffs.
Reworked how the Current Threat Level is calculated. This now flows much smoother and consistently. This also takes into account the player’s current velocity, allowing sound gains to tally quicker the faster the player is moving. Mitigation has also been factored in allowing sound gains to tally quicker the closer the player is to a sound detecting AI.
Added a setting to called Target Velocity Factor which controls how much the player’s velocity is factored in with sound gains.
Added a setting to called Target Distance Factor which controls how much the player’s distance mitigation is factored in with sound gains.
Added a setting to called Falloff Delay which controls the amount of seconds that need to pass, after the player has stopped moving, to start having the Current Threat Level start falling off.
Added a new Reaction Type called "Set Loudest Target As Combat Target" that sets the loudest target as the AI's current combat target and puts the AI into Combat Mode. This bypasses the AI needing to see the target and will move to their position to attack them.
Improved the logic that happens when an AI has no detected targets, but still has a Current Threat Amount greater than 0.
Fixed a bug that caused an error when using the Look At Loudest Target reaction event. This now allows the AI to properly turn towards the loudest detected target's position.
Fixed a bug that didn’t allow sound to falloff (if it was greater than 0) and an AI had no detectable targets.
1.2.0
Added a healing ability that can heal the caster, group heal allies within a radius of the caster, or heal a nearby individual ally with the lowest health. This also has the option to heal over time.
Added a summoning ability that allows the caster to summon allies from a list of AI prefabs to help them fight. Users can control how many AI will spawn at once, how long the AI will fight before being unsummoned, and various effects.
Added a Condition Module to abilities that allows certain conditions that need to be met before the ability can trigger (such as the caster having low health or being a certain distance away from the current target). Abilities that have a Condition Module enabled are clearly indicated through an AI’s attack/abilities list. There’s an option to allow these abilities to have high priority, which allows them to be picked before any other abilities. Condition abilities that do not have High Priority will follow their Pick Type. If their condition is not met, the ability will be skipped. This module is completely optional.
Added the ability for AI to detect friendly targets that are within their detection radius both in and out of combat. These are put into a list called NearbyFriendlies located within the Detection Component. The newly added healing ability utilizes this allowing AI to heal nearby allies that are low on health.
Added a Copy Animation Profile button to the Animation Profile. This allows users to easily create a copy of an Animation Profile (keeping all of the applied animations) and clearing the Animator Controller. This should be used instead of manually duplicating an Animation Profile as there will then be two Animation Profiles with the same Animator Controller reference (given the user forgets to clear the Animator Controller on the manually duplicated Animation Profile).
Added new demo scene called Healing Demo showing AI using the new healing ability.
Added new demo scene called Summon AI Demo showing AI using the new summon ability.
Improved the KillAI API function by setting the health to 0 and initializing the death state directly. This allows an AI to die more seamlessly and bypass a lot of the unneeded and undesired code within the Damage function. This also allows an AI to bypass visible damage numbers when KillAI is called.
Improved the Cooldown Module by allowing it to work with the Order Pick Type. If an ability is on cooldown while using this Pick Type, it will skip that ability and go to the next index.
Improved how hit effects work by making a toggle option that controls whether or not hit effects are attached to the AI when they are damaged.
Increased the cap of Cooldown Length in the Cooldown Module to 60 (up from 30).
Increased the cap of the Hit Animation Cooldown in the Animation Profile editor to 4 (up from 1). This helps AI like bosses not get interrupted as often as 1 second wasn’t often enough for some users.
Improved the Melee Ability by adding a max allowed attack height setting. If an AI’s current target exceeds this height, the AI will not attack.
Improved performance with how line of sight detection works.
Improved field of view target detection by allowing it to only be used during initial target detection (when not in an active combat state). When an AI is in combat, it will have 360° target detection as using its user set field of view could allow it to miss targets directly behind it (or outside of its field of view). Targets that are obstructed will still not be considered as valid targets.
Changed the StartHealing function within EmeraldHealth to RecoverHealth.
Changed the StartHealingInternal coroutine within EmeraldHealth to RecoverHealthInternal.
Fixed bug with Items Component that caused reused AI (through Object Pooling) to not have the proper item/weapon enabled.
Fixed a bug that allowed friendly targets to be damaged or stunned by Aerial Projectile Abilities.
Fixed a bug that allowed Combat Actions to trigger before an AI was fully initialized (such as summing an AI and having it immediately engage in combat). If an AI was using the Items Component, this could bypass them properly enabling their item/weapon object.
Fixed a bug that didn’t sometimes didn’t allow reused AI (through Object Pooling) to attack their target.
Fixed an invalid cast exception that could sometimes happen on the Weapon Collision Component.
Fixed a bug that didn’t allow death animations to copy when using the Copy Non-Combat Animations to (Type 1 and Type 2) Combat Animations button through the Animation Profile.
Fixed a bug that caused an AI to not reappear from teleporting if the target died while they were waiting to reappear.
Fixed a bug that sometimes allowed AI to melee attack when they shouldn’t have been able to reach their target.
1.1.2
Added integrated FPS Engine support (more character controllers will be integrated soon). A detailed guide for this can be found here: https://black-horizon-studios.gitbook.io/emerald-ai-wiki/integrations/integrations/fps-engine
Added an integration menu for all available integrations through Window>Emerald AI>Integrations. This includes FPS Engine, Invector, Final IK, Dialogue System, Quest Machine, and Love/Hate. More will be added soon.
Fixed an error that would happen with abilities that use the damage over time module when damaging through scripts derived from the EmeraldPlayerBridge class. This fix also allows damage over time to work properly.
Fixed an issue that didn't allow Location Based Damage to calculate correctly when using the default multiplier value of 1.
Fixed a rare NavMesh SetDestination error that would happen after an AI was killed.
Fixed a few issues that could happen when an AI was damaged and the AttackerTransform parameter (from the Damage function) was null.
1.1.1
Added a new component called Emerald Footsteps gives AI the ability to play footstep sounds and effects based on the detected surfaces. Surfaces can be customized through Footstep Surface Objects. Both textures from Unity Terrains and tags from game objects can be used. Note: Using an Emerald Footstep component will ignore the Sound Profile's Footstep Sounds and the ones set through Footstep Surface Objects will be used instead.
Added the Footstep Component to the Setup Manager and the AI Duplicator.
Added Footstep Surface Objects that allow users to customize the needed textures and tags on surfaces. This also allows the customization of footstep effects, sounds, and footprints for the detected surface. A new Footstep Surface Object can be created with Create>Emerald AI>Footstep Surface Object.
Added debugging footstep options to the Emerald Debugger that displays an AI's footstep collision positions and displays the collision objects to the Unity Console.
Added a new demo scene called Footsteps Demo that showcases the new Footsteps Component.
Added a setting to control how quickly the Bullet Ability will despawn (previously used an internal value of 0.1). This allows users to adjust the value in case they need more time for bullet trails to fade.
Improved the Bullet Ability by only allowing 1 fire sound and muzzle flash to play if the Time Between Bullets was set to 0. This allows weapons like shotguns to shoot multiple bullets with a single shot without having a sound and muzzle flash for each bullet created.
Improved the AI Duplicator by caching the Avatar component and assigning it back to an AI that was being copied to. This ensures that the proper Avatar is always assigned, in case the reference AI's Avatar was different.
Improved the Play Run Sound and Play Walk Sound Animation events (through the Animation Viewer) by simplifying the name to be a single Animation Event that works for both run and walk. The new event name is now called "Footstep" and is accessible through the Animation Viewer.
Removed the previous Animation Events Play Walk Sound and Play Run Sound from the Animation Viewer (due to these events being combined with the above Footstep event).
Fixed an error that would happen if an AI was killed, was using ragdoll deaths, and they didn't have a rigidbody on the AI's head transform.
Fixed an issue that didn't allow the Follower Settings to display for the Passive Behavior Type.
1.1.0
Added a new Grenade Ability that allows AI to use grenades driven by physics. Grenades can explode and affect rigid bodies within their explosion radius. AI can automatically detect the throwing force needed to allow the grenade to make it to the desired target.
Improved the Bullet Ability by having it move over time which allows it to work with bullet trails.
Added customizable spread option to the Bullet Ability. The higher the spread, the lower the AI’s accuracy.
Added the option to add an Attack Transform to the position source of the Area of Effect Ability.
Added Final IK support. This is handled through an external script. A tutorial is available on the Emerald AI Wiki (or through Emerald AI Wiki>Integrations>Final IK) within Unity.
Added the ability for AI to align themselves to the angle of the ground on death when using death animations, even if the alignment feature is disabled.
Greatly improved how dodge and block work by allowing AI to better detect attacks.
Improved dodge by allowing it to use the direction of strafe, given that it was active right before the dodge was triggered.
Improved the Location Based Damage component by making the LBD Layer and LBD Tag optional.
Improved the Location Based Damage component so it no longer will grab colliders that already exist within the Colliders List after pressing the Get Colliders button.
Improved Location Based Damage script by allowing users to change the layer of its colliders on death.
Updated the Shooter AI Demo with the new bullet ability features.
Added a new scene to showcase the new grenade ability (called Grenade Demo).
Updated the muzzle flash effect (through the bullet ability) to be spawned based off of the passed Attack Transform.
Fixed various sound events (through the Emerald Sound component) that would sometimes be skipped if an AI was using too many sound events at a time.
Fixed a bug that didn’t allow 100% damage mitigation (through dodge and block) to fully mitigate damage.
1.0.7.1
Made improvements to the obstruction action to not allow an AI to generate a waypoint around their current target if the path to it was inaccessible.
Made improvements to how an AI aims when turning or a target is out of the angle limit (when using the Inverse Kinematics component).
1.0.7
Added a message to the Setup Manager that's displayed if the user assigns a non-scene object to the Object to Setup slot.
Fixed a bug that allowed users to open the Animation Viewer while in prefab editing mode that caused an error. A message is also displayed that notifies users they need to exit the prefab edit mode to open the Animation Viewer.
Fixed a bug that could cause an error for some character controllers when they would respawn after being killed by an AI.
Updated the EmeraldGeneralTargetBridge's help text boxes to display the correct information.
1.0.6.1
Quick patch to fix the following issues:
Fixed a bug (NullReferenceException) related to the addition of the improved movement mechanics when a target becomes obstructed.
Fixed a bug that caused an AI to not have a proper default IK look at point when an AI's current target exceeded an AI's Detection Radius (when using the Inverse Kinematics component).
1.0.6
Added integrated Invector support (more character controllers will be integrated soon). Users need to import the UnityPackage file, depending on the Invector asset (melee or shooter). A detailed guide for this can be found here: https://black-horizon-studios.gitbook.io/emerald-ai-wiki/integrations/invector
Made various internal improvements to the EmeraldPlayerBridge script.
Improved the movement functionality that happens when an AI's target becomes obstructed by environmental objects.
Removed restriction that didn't allow emote animations (both single and looping) to play while an AI was in combat. *Users who have created their own Animation Profiles need to press the Regenerate Animator Controller button (on their Animation Profiles) to have their Animator Controllers regenerate with the changes. This only needs to be done once.
Fixed a bug with the Optimization component that caused an error on death.
Fixed a bug that could stop an AI from attacking after they dodged, if they weren't using an Inverse Kinematics component.
Fixed a bug that didn't allow the Type 2 Equippable Weapons list to be displayed within the Items Component.
Fixed a bug that didn't allow the Animation Viewer to display the Event Settings on certain displays/resolutions.
Fixed a bug that caused an AI who was using death animations to freeze while being stunned on death.
Fixed a bug that didn't allow AI (using the Inverse Kinematics component) to have a proper default look at position after an AI saw a look at target.
Fixed a bug that didn't allow AI who were not using an equipping animation to properly switch weapon types. *Users who need this functionality will need to regenerate their AI's Animator Controllers which can be done by pressing the Regenerate Animator Controller button within an Animation Profile. This only needs to be done once.
1.0.5
Improved the Animation Viewer so it can't be opened from within the Project tab. A message was also added to notify the user that the Animation Viewer can only be opened if the AI is within the scene and in the Hierarchy tab.
Fixed an issue that didn't allow an AI to draw and enable their weapon object if they were attacked from a target outside of their detection radius. Users who have created their own Animation Profiles need to press the Regenerate Animator Controller button (on their Animation Profiles) to have their Animator Controllers regenerate with the changes. All included example AI have had their Animator Controllers regenerated with these changes.
Fixed the StopMovement API. AI should now properly stop their movement and play their idle animation.
Fixed the ResumeMovement API. AI should now properly resume their movement and return to their destination prior to being stopped.
1.0.4
Improved how weapon collisions are handled through the Weapon Collisions Component.
Simplified the preset animation events (EnableWeaponCollider and DisableWeaponCollider) through the Animation Viewer.
Fixed a bug that didn't allow weapon collisions to be enabled when using the type 2 Weapon Type.
1.0.3
Increased the minimum size on the Animation Viewer Manager as it was not quite big enough for some users.
Fixed a bug that didn't allow an AI to switch its weapon type when using the Distance Switch Weapon Type.
Updated impact effects from bullets to align to the normal of the impact position.
While everything is covered through Emerald AI's wiki, YouTube tutorial videos are currently being worked on and will be updated soon!
1.0.2
Fixed an issue that didn't allow the NavMesh Driven Movement Type to use walk animations.
Fixed an issue that allowed AI using the NavMesh Driven Movement Type to briefly move right when entering play mode.
Fixed a bug that didn't allow Animation Profiles and Sound Profiles to assigned through the Setup Manager, given the profile slots weren't empty.
Improved the Auto Find Head Transform feature to better automatically find an AI's head transform.
Added an option to copy non-combat animations to the Combat Type 2 animations (previously this was only available to the Combat Type 1 animations).
Updated the included Emerald AI define to be EMERALD_AI_2024_PRESENT the previous version EMERALD_AI_PRESENT can be removed.
Last updated