Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

[RELEASED] Emerald AI 3.2 (New Sound Detection) - The Ultimate Universal AAA Quality AI Solution

Discussion in 'Assets and Asset Store' started by BHS, Jun 26, 2015.

  1. Pandur1982

    Pandur1982

    Joined:
    Jun 16, 2015
    Posts:
    275
    I have a question, at the moment i work on a archery system for my player, thats work good, i have a script how can stuck the arrow in a wall and send the damage information to my enemy ai, the Problem is the arrow stuck on the emerald ai collider, i will create some box collider as hitbox on the bones so my arrow can stuck in head,arms or waht ever on the enemy.So i work with playmaker but for this i use a c# script so see here :
    Code (CSharp):
    1. using UnityEngine;
    2. using System.Collections;
    3.  
    4. public class ArrowStuck : MonoBehaviour {
    5.  
    6.     RaycastHit hit;
    7.     public AudioClip hitSound; //sound to play when arrow hits a surface
    8.     public LayerMask layerMask;
    9.     public bool m_AlreadyHitSomething = false;
    10.     public int Damage;
    11.     // Update is called once per frame
    12.     void Update () {
    13.         //Only check for obstacles to stick to if the arrow is moving
    14.         if(GetComponent<Rigidbody>().velocity.magnitude > 0.5) {
    15.             CheckForObstacles();
    16.         }
    17.         else {
    18.             enabled = false;
    19.         }
    20.  
    21.     }
    22.  
    23.     void CheckForObstacles() {
    24.         //the length of the raycast needs to be greater the faster the arrow is traveling, in order for it to register
    25.         float myVelocity = GetComponent<Rigidbody>().velocity.magnitude;
    26.         //get length of raycast based on velocity of arrow | based on this, arrows with too little of a velocity will not stick
    27.         float raycastLength = myVelocity * 0.03f;
    28.        
    29.         if(Physics.Raycast(transform.position, transform.forward, out hit, raycastLength, layerMask)) {
    30.             GetComponent<AudioSource>().Stop();
    31.             GetComponent<AudioSource>().clip = hitSound;
    32.             GetComponent<AudioSource>().Play();
    33.            
    34.             //since we need to disable the boxCollider and freeze the rigidbody for the arrow to stick,
    35.             //we must add our own force to any moveable objects (objects with rigidbodies) that the arrow hits
    36.             if(hit.transform.GetComponent<Rigidbody>()) {
    37.                 //add force to object hit
    38.                 hit.transform.GetComponent<Rigidbody>().AddForce(transform.forward * myVelocity * 10);
    39.             }
    40.  
    41.            
    42.             //disable arrow's collider | if you leave the arrow's collider on, while inside another object, it may have strange effects
    43.             GetComponent<BoxCollider>().enabled = false;
    44.  
    45.             //if you require the boxCollider to remain active, say for picking up the arrow, you can instead set the collider to trigger:
    46.             //GetComponent(BoxCollider).isTrigger = true;
    47.            
    48.             //freeze rigidbody
    49.             GetComponent<Rigidbody>().constraints = RigidbodyConstraints.FreezeAll;
    50.             //position arrow
    51.             transform.position = hit.point;
    52.             //parent arrow to object | if the object the arrow hits moves, this will make the arrow move with it
    53.             transform.parent = hit.transform;
    54.            
    55.             //once the arrow is stuck, disable this script
    56.             enabled = false;
    57.         }
    58.         else {
    59.             //make arrows top-heavy | on arrows with little velocity (when the bow is not drawn back very far) the arrows will rotated toward the ground
    60.             Quaternion newRot = transform.rotation;
    61.             newRot.SetLookRotation(GetComponent<Rigidbody>().velocity);
    62.             transform.rotation = newRot;
    63.         }
    64.     }
    65.  
    66.     void OnCollisionEnter(Collision collision)
    67.     {
    68.         if (m_AlreadyHitSomething)
    69.             return;
    70.         m_AlreadyHitSomething = true;
    71.  
    72.      
    73.  
    74.         //Damage Emerald AI object
    75.         if (collision.collider.gameObject.tag == "Enemy")
    76.         {
    77.             if (collision.collider.gameObject.GetComponent<Emerald_AI>() != null)
    78.             {
    79.                 Emerald_AI EmeraldComponent = collision.collider.gameObject.GetComponent<Emerald_AI>();
    80.                 EmeraldComponent.Damage((int)Damage, Emerald_AI.TargetType.Player);
    81.             }
    82.         }
    83.         {
    84.         if(GetComponent<Rigidbody>().velocity.magnitude > 5) {
    85.             if(collision.transform.tag != "Player") {
    86.                 if(collision.transform.gameObject.layer != LayerMask.NameToLayer("Player")) {
    87.                     GetComponent<BoxCollider>().enabled = false;
    88.  
    89.                     //freeze rigidbody
    90.                     GetComponent<Rigidbody>().constraints = RigidbodyConstraints.FreezeAll;
    91.                     //position arrow
    92.                     foreach(ContactPoint contact in collision.contacts) {
    93.                         Vector3 pos = contact.point;
    94.                         transform.position = pos;
    95.                     }
    96.                     //parent arrow to object | if the object the arrow hits moves, this will make the arrow move with it
    97.                     transform.parent = collision.transform;
    98.                    
    99.                     enabled = false;
    100.                 }
    101.             }
    102.         }
    103.     }
    104. }
    105. }
    ok thats my script, so how can i send the damage from the bone with collider to emerald ai? thx for helping
     
    Polyland and hessex like this.
  2. GWStudio

    GWStudio

    Joined:
    Sep 27, 2016
    Posts:
    109
    hi every one ...
    what about cover system!!??
     
  3. RonnyDance

    RonnyDance

    Joined:
    Aug 17, 2015
    Posts:
    557
    As stated before by BHL: This feature is planed after 2.2. So not until 2.3
     
    Last edited: Jan 21, 2019
  4. Snownebula

    Snownebula

    Joined:
    Nov 29, 2013
    Posts:
    174
    What tags and layers do we need to have set up for this to work?

    What is an eta for version 2.2?
     
  5. OZAV

    OZAV

    Joined:
    Aug 9, 2013
    Posts:
    298
    ... these extra "Emerald" tags / layers are creating a lot of confusion, it's not too clear how they relate to Unity original tags, and the instructions in the scripts do not really hit the target ...everything else is just great, with the new features to come, exited to see the new version, when is due,
    A QUESTION, PLEASE:
    Can we have some flying & wall climbing abilities soon, eg wasps, of a flying type drones, etc, or the wall climbing enemies - such as spiders and the ants, that can walk on the walls ? A non-Navmesh ability in this sense (for such options of enemies / creatures will be a cool new addition, period).
    It will put Emerald way-ahead of anything else out there, since we are the fans / supporters of Emerald, from the day one, due to it's simplicity :).
     
    Mark_01 likes this.
  6. SickaGames1

    SickaGames1

    Joined:
    Jan 15, 2018
    Posts:
    1,268
    @BHS Any new to update on 2.2?
     
  7. Davood_Kharmanzar

    Davood_Kharmanzar

    Joined:
    Sep 20, 2017
    Posts:
    411
    @BHS
    it would be great if all of Emerald AI scripts include in separate namespace ...
    i hope to see that on 2.2 update ...
     
  8. BHS

    BHS

    Joined:
    Dec 21, 2009
    Posts:
    4,760
    This feature is coming with version 2.2. Most functionality like this will be handled through Animation Events to ensure things are timed correctly and consistently.


    Yes, this feature is coming with version 2.2. Dynamic way points will be recalculated to be on the NavMesh as needed. If you are placed by hand, I would recommend using the Random Waypoint feature coming with version 2.2. It will allow you to set a series of waypoints that the AI can randomly move between. This is better for having more control where you AI wanders in smaller areas.

    AI can have issues recognizing other AI for a couple reasons:

    1) Your AI's collider isn't properly fitted to your AI's model. If your AI collider is too high, the raycast can miss the AI making the target not "visible". This has been fixed with version 2.2, but you should double check this for now.

    2) Ensure that both of your AI have the proper Current Faction as well as the proper Layers and tags on the actual game object.



    Emerald AI's Animator Controllers are required because this is what allows Emerald AI to control the AI's animations and animations states. The Animator Controller with version 2.2 is much better and should allow users to utilize most of an AI's animations as well as blend trees for smooth movement blending.


    Something like this should work, given that the transform root contains your Emerald AI script.

    Code (CSharp):
    1. //Damage Emerald AI object
    2. if (collision.collider.gameObject.tag == "Enemy")
    3. {
    4.    if (collision.collider.transform.root.GetComponent<Emerald_AI>() != null)
    5.    {
    6.       Emerald_AI EmeraldComponent = collision.collider.transform.root.GetComponent<Emerald_AI>();
    7.       EmeraldComponent.Damage((int)Damage, Emerald_AI.TargetType.Player);
    8.    }
    9. }

    You can use any tags and layers your project needs, if that's what you are asking. The default Emerald AI system will work using Unity's built-in tags and layers.

    ETA is soon, but I cannot give an exact date. I will post here when the update has been submitted.


    One single Unity tag and Layer are used to define which game objects are Emerald AI objects. The Unity layer also allows a huge performance boost because it allows Emerald AI's searching function to only search for relevant game objects rather than sifting through 100's of irrelevant objects. The Faction isn't really a Emerald tag. This is what defines an AI's "type" and whether it's considered a enemy or not.

    Climbing on walls and flying would require completely different code to make work and I don't want to add too many features to a systems that's mostly for ground based AI. Simple flying AI are possible now by making the NavMesh Agent's Base Off set above the ground. I have a few ideas for an addon/system for this that I will discuss at a later date though. :)


    Yes, it will be very soon, but I don't have an exact date. I'm just finalizing a few things.


    Yes, I have already added separate namespaces to all Emerald AI scripts with version 2.2.
     
    Mark_01, Pandur1982 and RonnyDance like this.
  9. Cosmas

    Cosmas

    Joined:
    Jan 9, 2010
    Posts:
    133
    @BHS - Sorry if this been discussed but is there a way to lock characters to the Z axis for use in a 2.5D context?
     
  10. Davood_Kharmanzar

    Davood_Kharmanzar

    Joined:
    Sep 20, 2017
    Posts:
    411
    @BHS
    hello,
    i want to using CurrentEmeraldSystem.Pause();
    but got this error: The name `CurrentEmeraldSystem' does not exist in the current context

    does it needs to using something??
     
  11. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    There is no such thing as CurrentEmeraldSystem. Are you just trying to pause a particular Emerald_AI unit? If so, then you need to get a reference to its component and call Pause on that. It seems like you think that one particular AI would be the current one, though, so your understanding of how this works is not correct.
     
  12. JW86

    JW86

    Joined:
    Jan 11, 2019
    Posts:
    13
    What reference from EAI would I want to use to get other weapon/damage assets to impact on the Emerald AI health system?

    Also I'm wondering if EAI will have behaviours for strafing/dodging within the AI. So many good animations here that would really add versatility to AIs to include in their behaviour.
     
    Last edited: Jan 26, 2019
  13. noname2u2

    noname2u2

    Joined:
    Jul 11, 2017
    Posts:
    4
    I have Emerald AI and Crux. Everything works fine BUT the animals I kill just pile up and don't despawn. Is there no despawn after death? (coding impaired due to stroke and memory loss)
     
    erichey likes this.
  14. mattis89

    mattis89

    Joined:
    Jan 10, 2017
    Posts:
    1,151
  15. BHS

    BHS

    Joined:
    Dec 21, 2009
    Posts:
    4,760
    Not that I know of as Emerald AI uses Unity's NavMesh.


    You need a reference to the AI you would like to control. You can do this a few different ways, but an easy solution could be to use a Raycast: https://docs.unity3d.com/ScriptReference/Physics.Raycast.html

    Once you hit the object with the raycast, you will have a reference to the AI you would like to control. This can be done using the following:
    Code (CSharp):
    1. if (hit.transform.GetComponent<Emerald_AI>() != null)
    2. {
    3.    hit.transform.GetComponent<Emerald_AI>().Pause();
    4. }

    YourEmeraldAIReference.Damage((int)YourDamageAmount, Emerald_AI.TargetType.Player);

    Emerald AI doesn't currently support dodging, but with the 2.2 update, it will support blocking.


    This is a little bug with Crux and Emerald AI. I have fixed it with Emerald AI version 2.2 and Crux's 2.0 version. The Crux 2.0 update will also have a global call for despawning an object back to Crux's object pool which will make things much easier. The new version of Crux should be out shortly after Emerald AI version 2.2 is released.
     
    Mark_01 and noname2u2 like this.
  16. MorpheusXI

    MorpheusXI

    Joined:
    Jan 18, 2018
    Posts:
    71
    Is it possible to add feature were a passive NPC will play audio (speech in this case) upon seeing player within radius. Added bonus would be to have random delay before speaking. This will just add some additional immersion to scenes. It seems to be a holy grail feature as there's nothing out the box anywhere for this that I can find.
     
  17. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    You could certainly add this fairly easily by using a trigger collider and your own script to play audio if Player tag triggers it. However, I would recommend that you look at solutions like Dialog System by Pixel Crushers that does all this and more out of the box.
     
  18. MorpheusXI

    MorpheusXI

    Joined:
    Jan 18, 2018
    Posts:
    71
    Thanks Magique, I was aware of Dialogue System but thought that was for PopUp text bubble's etc. rather than audio playback. I'll have another look at that in case I've missed something. I'm also a none coder at the moment.....

    So I checked it out and it's heavily geared for text based adventures, it does have Barks which can play audio. However I would prefer rather than buying another asset just for a "Bark feature" that Emerald AI had this in. The territorial EmAI has a warning audio it plays, could the passive AI be adapted to have this with a list of multiple audio slots that play as set in inspector (Random, Sequentially or Rotary. Hope that makes sense and would be great feature for creating a more immersive world.

    I do have Playmaker which not got around to using, but reading up on this it also seemed weak on audio. I also have Master Audio (unused) which checking seemed weak on or none existent on providing such a feature, even combined with Playmaker. I have multiple controllers Invector Shooter, GKC, will probably use one of these.

    Unfortunately I have a busy IT day job so time is limited. Hope this feature can be added - multiple barks from Passive AI - in fact why not expand to all AI as an option - enable / disable if it causes CPU time if enabled with checkbox....
     
    Last edited: Jan 29, 2019
  19. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    It has the pop-up bubbles, but I'm fairly positive it can do audio as well. It's extremely versatile. Drop by their forums and ask Tony, he will answer quickly.
     
  20. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,670
    Thanks @magique! Yes, @MorpheusXI - it doesn't require coding, and it can do audio with or without text, animation, and more. It also integrates with assets such as SALSA and LipSync Pro for lipsync, RT-Voice for text-to-speech, etc. Here's the forum thread.
     
    MorpheusXI and magique like this.
  21. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    MorpheusXI likes this.
  22. Davood_Kharmanzar

    Davood_Kharmanzar

    Joined:
    Sep 20, 2017
    Posts:
    411
    nice ... but what about if decided to using Emerald on network ... like as UNET?
    fo example i want to pause ai on client scenes and start only on server ...
     
  23. MorpheusXI

    MorpheusXI

    Joined:
    Jan 18, 2018
    Posts:
    71
    - LOL very fast :)
     
  24. MorpheusXI

    MorpheusXI

    Joined:
    Jan 18, 2018
    Posts:
    71
    Thanks Tony, so I've looked at Salsa in the past and will look to use this with Dialogue System as an option as I build out my game.
     
    TonyLi likes this.
  25. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    @BHS I found a bug. If the Player has a companion and the Player object is a child of another object in the Scene hierarchy then the companion doesn't follow the Player properly. He'll run off across the map. I traced the issue to the following code in the Update() function:

    Code (CSharp):
    1. Destination(CurrentFollowTarget.localPosition + RandomOffset);
    It uses localPosition, which would be incorrect if the Player is a child of another object.

    It should be:

    Code (CSharp):
    1. Destination(CurrentFollowTarget.position + RandomOffset);
     
  26. p_hergott

    p_hergott

    Joined:
    May 7, 2018
    Posts:
    414
    Playmaker would quite easily do what you need with audio. Like how your describing.
     
    MorpheusXI likes this.
  27. erichris2902

    erichris2902

    Joined:
    Nov 24, 2017
    Posts:
    7
    Any news on 2.2 update?? I read a time ago that it will release on january
     
  28. ZGoodwin

    ZGoodwin

    Joined:
    Jul 14, 2017
    Posts:
    31
    Is there an ETA on 2.2 release?
     
  29. SickaGames1

    SickaGames1

    Joined:
    Jan 15, 2018
    Posts:
    1,268
    Not yet. Maybe April of 2020?
     
  30. micuccio

    micuccio

    Joined:
    Jan 26, 2014
    Posts:
    143
    Please, guys, let him work! we saw the videos and it's really cool. I prefer to have a good update later than a bugged one now
     
    BHS and RonnyDance like this.
  31. gr1m5h4d0w

    gr1m5h4d0w

    Joined:
    Dec 5, 2014
    Posts:
    3
    Hey
    I been searching the net today but i cant seem to find a way to make a Hunter Type AI ( Searches The Map For The Player) or a way to set the Ai to Have Line of Sight and Attack the Player Tag When Damaged. Is It possible To Have These With The Built in or Have To Code It In?
     
  32. SickaGames1

    SickaGames1

    Joined:
    Jan 15, 2018
    Posts:
    1,268
    I totally get it however I am not wanting to recreate every character controller related on my game. I am on hold until @BHS can get his update done. A lot of us are excited and anxious to starting using his update.
     
  33. OkeanixTR

    OkeanixTR

    Joined:
    Jan 28, 2017
    Posts:
    46
    This not work as intended.

    AI can't simply achieve simple job find player and kill him.

    I want Dumb Zombies which only follow player entire map and try to kill him but this AI not helpful at all. Even I'm adding attack distance zombie try to run inside player and make colliders hit each other. Sometimes zombies not walk into players but random areas even i set target to Player. (It's like zombies chasing invisible object)

    They stepback and circle around Player. This is not i want to do because a zombie can't circle player only run towards and attack them.

    Only thing I wanted:
    -AI not have chase&distance limit. Follow entire map
    -Attack when player close enough not try to circle him or stepback!
     
    Endi24 likes this.
  34. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    @BHS Can you change the range for Health Level to Flee so that it can be set to 0? I would like some enemies to never flee.
     
    RonnyDance and SickaGames1 like this.
  35. JW86

    JW86

    Joined:
    Jan 11, 2019
    Posts:
    13
    I think this is accomplished by turning the confidence/behaviour up to Foolhardy.
     
  36. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    I don't think so because I already have it set to Foolhardy and they still flee.

    [EDIT]
    I was wrong. It was set to Brave. My apologies. Thanks for the advice.
     
    Last edited: Feb 5, 2019
  37. BHS

    BHS

    Joined:
    Dec 21, 2009
    Posts:
    4,760
    Thanks for the bug report. I'll ensure it's not present in version 2.2.


    I've been doing lots of bug and quality testing to ensure version 2.2 has a flawless release. The new Animator Controller is very complicated as well as the code to generate it. I was also able to improve the Animation Settings so it's now updated automatically as you apply changes instead of it being updated manually. I don't like giving ETAs because I can't guarantee them, but I do feel confident I should be able to submit it by the end of this week. I want to get this update finished as much as everyone else does. :)


    Thanks, I totally agree.


    It should be possible with the current version to have an AI search for a target after it has been hit. Searching the map isn't possible because the AI has limitations of how far out it can search for targets. If you want to assign the AI a target directly, try this:

    Code (CSharp):
    1. YourEmeraldComponent.CurrentTarget = YourCustomTarget;
    2. YourEmeraldComponent.CombatStateRef = Emerald_AI.CombatState.Active;
    3. YourEmeraldComponent.MaxChaseDistance = 3000;
    With version 2.2, it will be much easier to do tasks like this with Emerald AI's event system, but this should work for now.


    If you want your AI to stay more stationary as they fight, you need to disable Use Dynamic Movement which is located under AI's Settings>Combat>Combat Actions & Effect Settings. AI can't search for targets across the whole map because of performance limitations. However, you can assign a target directly so they AI can navigate through the level to find the assigned target. This can be done with this:

    Code (CSharp):
    1. YourEmeraldComponent.CurrentTarget = YourCustomTarget;
    2. YourEmeraldComponent.CombatStateRef = Emerald_AI.CombatState.Active;
    3. YourEmeraldComponent.MaxChaseDistance = 3000;
    This will be improved with version 2.2, but this will work for now.


    AI should only flee when using the Brave Confidence Type. If they are still fleeing when using Foolhardy, it may be a bug. I know it's working correctly with version 2.2 though.
     
    Weblox and RonnyDance like this.
  38. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    I will double check. I might be wrong about the Foolhardy setting.

    [EDIT]
    They were set to Brave. Sorry for the confusion. I will change to Foolhardy.
     
    Last edited: Feb 5, 2019
  39. Pandur1982

    Pandur1982

    Joined:
    Jun 16, 2015
    Posts:
    275
    For what Unity Version will 2.2 come out? I use at the moment the 2018.2 Version from Unity, 2018.3 bring with the New prefab System to many Problems for me and other asset, so i hope 2. 2 will come for 2018.2
     
  40. gr1m5h4d0w

    gr1m5h4d0w

    Joined:
    Dec 5, 2014
    Posts:
    3
    Thanks for the quick response BHS I look forward to seeing the new updates and I'll make a work around for what I needed for the hunter and I found The Settings Thanks For mentioning it. Thanks for the quality ai it's far more than I expected.
     
    Last edited: Feb 5, 2019
    BHS likes this.
  41. gr1m5h4d0w

    gr1m5h4d0w

    Joined:
    Dec 5, 2014
    Posts:
    3
    First I'm not a pro coder and this isn't my code just found it floating around. To destroy on death go to death events add a new event add in death code, set time to your preference. I use Magic Spawn so I can just destroy them and they re-spawn where I need them, Would not recommend Magic Spawn its outdated and i redid a lot of coding.
    Code (CSharp):
    1. using UnityEngine;
    2. using System.Collections;
    3.  
    4. public class DestoryAI : MonoBehaviour
    5. {
    6.     public float DestroyTime = 5;
    7.     void OnDeath()
    8.     {
    9.         StartCoroutine(Death());
    10.     }
    11.     IEnumerator Death()
    12.     {
    13.         yield return new WaitForSeconds(DestroyTime);
    14.         Destroy(gameObject);
    15.     }
    16. }
    17.  
     
  42. RobsonFMaciel

    RobsonFMaciel

    Joined:
    Jan 12, 2013
    Posts:
    187
    @BHS
    How are you? I have been following the evolution of some networking tools, and I saw that the best option (in my opinion) is Mirror, because it has a very active community and developers worried about its evolution.

    I've done several integrations/migrations for Mirror and they were all easy to do.
    I think Mirror is an extremely valid option as most developers are migrating their UNET projects to Mirror.

    Maybe you can think of this option.

    Thanks for the great work. I own Unistorm, Emerald and Crux, all excellent, thank you.
     
  43. Snownebula

    Snownebula

    Joined:
    Nov 29, 2013
    Posts:
    174
    Just a small request. You know how "Deer" are both a "Buck" and a "Doe", can you make spawning groups of animals (male and female, and babies) combine these in there spawning groups thing, and maybe some way to random the size and maybe even color. It would be great to do this.
     
  44. IsntCo

    IsntCo

    Joined:
    Apr 12, 2014
    Posts:
    146
    I am trying to decide on Eliot or Emerald AI for my AI solution. Any insight on why Emerald may be a better choice?

    Does Emerald support Ootii's Motion Controller/Actor Controller?

    Is it possible to have Passive AI? For example, allow a Farmer to play a farming animation when he gets to a Field, and after some time, return to a Windmill and then repeat the process - unless it is night time so he needs to go home? Just want to understand how complex you can be, without it getting messy.

    Can AI NPCs use both ranged and melee weapons? If the player gets close, they pull out a sword. If he is far, they use a bow and arrow.

    Can you change an NPC's confidence via code? For example, a guard sees you, goes to ring a town bell, so now everyone is on Alert and will fight or look for you.

    Does Emerald only support NavMesh? Does it allow for avoidance of other AI units/RVO?

    My world is procedurally generated (Map Magic) - does it use dynamic waypoints that aren't preset?

    Lastly, a few things mentioned in one review I saw that Emerald is lacking is a bit concerning:

    - No AI Home location to prevent AI to leave their zone
    (I wouldn't want my towns people to get pulled out of the town and then not return back)

    - Ranged AI can't switch to melee
    (Which is why I ask above is that's the case)

    - Random actions is not possible
    (Not a deal breaker, but would be nice for the AI to act more realistically)

    - No damage based on weapons stats
    (So an AI cannot equip a particular weapon and use that weapon's damage stats? Meaning all NPCs that use the "Soldier" AI, for example, would all have the same damage, regardless if you gave them a sword or axe or whatever


    Sorry for the random questions! I'm coming from the overly complex Behavior Designer, so want to make sure I understand this before deciding.

    Thanks!
     
    Last edited: Feb 7, 2019
  45. BHS

    BHS

    Joined:
    Dec 21, 2009
    Posts:
    4,760
    Good to hear that it was just the wrong setting and not a bug.


    I've tested version 2.2 all the way up to Unity 2018.3, but not with every feature. I'm not sure how the prefabs will work with the new prefab system. My guess is everything should be fine though. I will be doing some testing with the newer versions of Unity before I submit 2.2 to ensure everything is working correctly.


    If you want to access a custom function, it needs to be public, so change your void OnDeath() to pubic void OnDeath() and it should be visible with the OnDeathEvent.


    Hey there!

    Thanks for the network tool recommendation. I will certainly check it out when I'm ready to start looking into network solutions.

    You're welcome, it's great to hear you are enjoying my other systems.


    Are you referring to the upcoming breeding feature? Emerald AI is an AI system not a spawning system. That's more of a Crux feature. If you are a Crux user, I can certainly look into this for the upcoming version 2.0.


    Hey there,

    Emerald AI does support Ootii's Motion Controller with this simple tutorial. However, it will be updated to work with Emerald AI 2.2 very soon.

    Emerald AI agents (both Passive and Aggressive) can easily be manipulated through custom code and with events through the Emerald AI editor. I've drastically improved Emerald AI with version 2.2 which should be submitted within the next couple of days. Since the update is so close to being released, I will talk about the 2.2 version of Emerald AI.

    Altering an AI's destination is totally possible by calling the AI's API. You can have an AI go to a particular location, wander around using a certain idle animation, such as a working animation, and then go to another destination stay stationary and play another animation. This is all possible with a couple of lines of code. If an AI encounters another AI of an opposing faction while an AI is traveling to their destination, depending on their Temperament, will either flee or fight said AI.

    Emerald AI agents have the ability to use either ranged or melee combat. I plan on adding support for AI to switch between the two depending on certain conditions, such as distance, with the next update.

    Emerald AI's editor is very easy to use and is self documented. Animator Controllers can be generated without having to do anything manually and have nearly 50 usable animations. If you're interested in some videos showing Emerald AI's features and quality, you can see the Emerald AI playlist here: https://www.youtube.com/playlist?list=PLlyiPBj7Fznaf-vdNirfQwjAe4Zon-_fr

    Please let me know if you have anymore questions. :)
     
  46. dinaloraven234

    dinaloraven234

    Joined:
    Dec 20, 2018
    Posts:
    141
    Hi @BHS my invector player doesnt receive damage when I'm blocking even the defense rate is set to zero. How to fix that?
     
  47. SickaGames1

    SickaGames1

    Joined:
    Jan 15, 2018
    Posts:
    1,268
    Hopefully he releases 2.2 this weekend!
     
    erichey likes this.
  48. erichris2902

    erichris2902

    Joined:
    Nov 24, 2017
    Posts:
    7
  49. mastafoo69

    mastafoo69

    Joined:
    Oct 7, 2018
    Posts:
    2
    I have been working on a VR title using Emerald AI; and I have been having an issue that I dont quite know the solution to. The ai that i made has this big spherical collider around it; and if im outside of that sphere, my bullets hit the sphere and not the enemy. anyone have any ideas? thanks!!
     
  50. Oderus_Urungus

    Oderus_Urungus

    Joined:
    Jun 8, 2017
    Posts:
    96
    Try disabling the sphere collided nd see if that works. Does it still generate the box collider that takes damage?