Emerald AI Wiki
  • Home
  • Getting Started
    • Included Demo Scenes
      • Shooter AI Demo
      • Melee Combat Demo
      • Ranged Combat Demo
      • Summoning AI Demo
      • Healing Demo
      • Patrolling Demo
      • Inverse Kinematics Demo
      • Ragdoll Demo
      • Grenade Demo
      • Footsteps Demo
      • Random Waypoints Demo
      • Dynamic Wandering Demo
      • Health Bar Demo
      • Alignment Demo
      • Explosion Damage Demo
      • Sound Detection Demo
      • Fleeing Demo
      • Mouse Movement Demo
      • Companion Demo
      • Equippable Weapon Demo
      • Optimization Demo
      • Working Villager Demo
      • Debugging Demo Scene
    • Getting Started
    • Baking NavMesh
    • Setting up a Player with Emerald AI
    • Upgrading to URP and HDRP
    • Difference Between Emerald AI 3.0 and Emerald AI 2025
  • Help
    • Solutions to Possible Issues
    • Using the Wiki Search Tool
    • Release Notes
    • Support
  • Emerald Components (Required)
    • Animation Component
      • Creating an Animation Profile
      • Opening the Animation Viewer
    • Behaviors Component
      • Creating an Aggressive AI
      • Creating a Companion AI
      • Creating a Cautious AI
      • Creating a Coward AI
      • Creating a Passive AI
      • Creating a Pet AI
      • Creating Custom AI Behaviors
    • Combat Component
      • Assigning Combat Actions
      • Assigning Attack Transforms
      • Assigning Ability Objects
      • Weapon Type Amounts
    • Detection Component
      • Applying a Head Transform
      • Setting up the Detection Layers and Player Tag
      • Faction Relations
    • Movement Component
      • Using the Align AI Settings
      • Using the Dynamic Wander Type
      • Using the Waypoints Wander Type
      • Using the Stationary Wander Type
      • Using the Destination Wander Type
    • Health Component
      • Setting up an AI's Health
      • Setting up an AI's Hit Effects
    • Sounds Component
      • Creating an AI's Sound Profile
  • Emerald Components (Optional)
    • Adding and Removing Optional Components
    • Cover Component
      • Applying the Cover Component
      • Setting up the Cover Component
      • Setting up Cover Nodes
    • Debugger Component
      • Applying the Debugger Component
      • Drawing an AI's Path
      • Drawing an AI's Destination
      • Drawing an AI's Line of Sight
      • Drawing an AI's Undetected Targets Line
      • Debug Log Targets
      • Debug Log Current Obstruction
    • Decal Component
      • Applying the Decals Component
      • Setting up the Decals Component
    • Events Component
      • Applying the Events Component
      • Creating an Event Through the Editor
      • Creating an Event Through Code
    • Footsteps Component
      • Applying the Footsteps Component
      • Setting up the Footsteps Component
    • Inverse Kinematics Component
      • Applying the IK Component
      • Creating an Animation Rig and Multi-Aim Constraint
      • More Info on the Animation Rigging Package
    • Items Component
      • Applying the Items Component
      • Creating Equippable Weapons
    • Location Based Damage Component
      • Applying the LBD Component
      • Assigning Colliders to the LBD Component
      • Damaging the LBD Component
    • Optimization Component
      • Applying the Optimization Component
      • Setting up the Optimization Component
    • Sound Detector Component
      • Applying the Sound Detector Component
      • Understanding the Sound Detector Settings
      • Using an Attract Modifier
    • Target Position Modifier Component
      • Setting up the TPM Component on an AI
      • Setting up the TPM Component on a Player
    • UI Component
      • Applying the UI Component
      • Setting up the UI Component
    • Weapon Collision Component
      • Applying the Weapon Collision Component
      • Setting up the Weapon Collision Component
  • API
    • Accessing the EmeraldAPI Script
    • Available API
      • Movement API
      • Combat API
      • Faction API
      • Sound API
      • Animation API
      • UI API
      • Detection API
      • Behaviors API
      • Health API
      • Items API
    • Damaging an AI
    • Damaging a Custom Character Controller
    • Using the Built-in Object Pooling
  • Emerald Profiles & Objects
    • Ability Object
      • Bullet Projectile Ability
      • Grenade Ability
      • General Projectile Ability
      • Ground Projectile Ability
      • Aerial Projectile Ability
      • Arrow Projectile Ability
      • Melee Ability
      • Teleport Ability
      • Summon Ability
      • Healing Ability
      • Area of Effect Ability
      • The Collider Module
      • The Damage Module
    • Combat Action Object
      • Blocking Combat Action
      • Dodge Combat Action
      • Strafe Combat Action
      • Random Movement Combat Action
      • Switch Target Combat Action
      • Creating Custom Combat Actions Through Code
    • Reaction Object
      • Creating a Reaction Object
      • Included Reaction Objects
    • Animation Profile
      • Creating an Animator Controller
      • Applying Animations
      • Regenerate Animator Controllers
      • Copying Animation Profiles
    • Sound Profile
      • Creating an AI's Sound Profile
      • Setting up Footstep Sounds
      • Setting up Attack Sounds
      • Setting up Warning Sounds
      • Setting up Death Sounds
    • Waypoint Profile
    • Footstep Surface Object
      • Creating a new Footstep Surface Object
      • Setting up a Footstep Surface Object
  • Emerald Managers
    • Setup Manager
      • Setting up an AI with the Setup Manager
    • AI Duplicator Manager
      • Duplicating an AI
    • Animation Viewer Manager
      • Opening the Animation Viewer
      • Previewing Animations
      • Creating and Applying Animation Events
      • Creating Attack Animation Events
    • Faction Manager
      • Modifying Factions Through the Faction Manager
    • Combat Text Manager
      • Adjusting the Combat Text Settings
      • Accessing the Combat Text System Through Code
  • Integrations
    • Integrations
      • Final IK
      • Invector
      • FPS Engine
      • Dialogue System
      • Quest Machine
      • Love/Hate
Powered by GitBook
On this page
  • Importing the Integration Package
  • FPS Engine Integration Demo
  • Setting up your own AI with FPS Engine
  • FPSEngineAIBridge
  • Setting up an AI's Tags and Layers
  • FPSEnginePlayerBridge
  • Adding the Player Layer

Was this helpful?

  1. Integrations
  2. Integrations

FPS Engine

Last updated 11 months ago

Was this helpful?

Important: Emerald AI 2024 v1.1.2 or higher is required for FPS Engine support.

Importing the Integration Package

(FPS Engine 1.1 or Lower Only) To add support for FPS Engine, users will need to import the FPS Engine Integration package. This can be found under Emerald AI>Integrations>FPS Engine.

Important: If you are using FPS Engine version 1.2 or higher, you will need to use the UnityPackage file below. If you do not use the proper version, you will have errors.

FPS Engine Integration Demo

After you have imported, you will have a scene to test with an example FPS Engine player. This is located under Integrations>FPS Engine>Demo Scenes>FPS Engine Integration. This scene will have an Emerald AI demo AI that will attempt to fight an example FPS Engine player. You will be able to target, damage, and kill the demo AI. It will also be able to damage and attack the FPS Engine player. There will be a pistol weapon the player can use to fight the demo AI.

Note: The included FPS Engine example player uses the TransparentFX layer as there's no included Player layer. It is recommended you follow the below "Setting up your own AI with FPS Engine" when setting up your own player and AI. This tutorial will provide info on setting up the project and player with the Player layer.

Setting up your own AI with FPS Engine

Included with the integration packages are two scripts. These scripts are bridge scripts that allow Emerald AI and FPS Engine to send damage to each other.

FPSEngineAIBridge

The FPSEngineAIBridge script should go on your AI, if you want it to receive damage from an FPS Engine player. It will automatically take the health values from your AI's Emerald Health Component. You can do this by searching for the FPSEngineAIBridge script and dragging it onto your AI.

Important: If you do not have a FPSEngineAIBridge script on your Emerald AI agent, it will not be able to receive damage from the FPS Engine Player.

Setting up an AI's Tags and Layers

It is important that you properly setup your AI's Tag and Layer. For this tutorial, and the example FPS Engine integration scene, the Enemy Tag and Enemy Layer was used. These are the tags and layers included with FPS Engine. However, you are free to use the ones for your project, just make sure that you have set these up through your AI's Detection Component.

Since the AI are using the Enemy layer, the Enemy layer needs to be added to every AI's Detection Component to allow them to be properly detected.

Important: Not properly setting up your AI's Tags and Layers, as well as setting their layer to the AI's Detection Layer, can cause AI to not be properly detected. Also, ensure you set your Player Unity Tag to Player, which is the default tag that FPS Engine Players come with.

FPSEnginePlayerBridge

The FPSEnginePlayerBridge script should go on your Player (within the FPS Controller), if you want it to receive damage from an Emerald AI agent. It will automatically take the health values from your FPS Engine player. You can do this by searching for the FPSEnginePlayerBridge script and dragging it onto the FPS Controller>Player>Player object.

Important: Not assigning the FPSEnginePlayerBridge script or not assigning it to the proper object will cause issues with the FPS Engine player receiving damage. Ensure this is done correctly. This should be the Player object with all of the FPS Engine scripts on it.

Adding the Player Layer

Until FPS Engine adds the Player layer to its included layers, it is recommended that you add the Player layer to your project's layers. Next, assign the Player layer to your FPS Engine's Player object.

Next, add the Player layer to every AI's Detection Layers within the Detection Component.

Important: Not properly assigning the Player layer to each AI's Detection Layers can cause detection issues. Ensure you do this step and ensure that the Player does not use the Default layer (which is done by FPS Engine on the included demo player).

This concludes the tutorial. Test your FPS Engine Player and AI to ensure everything works correctly. If something doesn't work, go through the tutorial to ensure no steps were missed. You can also test the included FPS Engine example scene to see how everything was set up. Feel free to reach out on if you need assistance.

Discord or via email
87KB
FPS Engine Integration v1.2.unitypackage