Search Unity

Eliot AI - NEXT GENERATION of AI tools [NOW RELEASED]

Discussion in 'Assets and Asset Store' started by eliot-ai, Oct 18, 2018.

?

What would be the best thing to add to Eliot next?

  1. New type of Nodes based on machine learning

    45 vote(s)
    28.0%
  2. Eliot Hub - place to share your Eliot Behaviours and Skills

    35 vote(s)
    21.7%
  3. Copypasting parts of Behaviours

    5 vote(s)
    3.1%
  4. Embedded UI system for displaying Agent's stats

    13 vote(s)
    8.1%
  5. Support of 2D Sprite-based worlds

    17 vote(s)
    10.6%
  6. Groups and formations of Agents with a single goal

    30 vote(s)
    18.6%
  7. Agent's stats system that can affect the power and other settings of the Skills

    16 vote(s)
    9.9%
  1. psych77

    psych77

    Joined:
    Mar 1, 2017
    Posts:
    55
    Well took some time.... but i managed to get a fix.

    Issue is that unityeditor somehow is interfering with windows.
    Adding this script fixed it the node issues for me:


    Code (CSharp):
    1. using System.Globalization;
    2. using UnityEditor;
    3. using System.Threading;
    4. using UnityEngine;
    5. #if UNITY_EDITOR
    6. #endif
    7. #if UNITY_EDITOR
    8. [InitializeOnLoad]
    9. public static class FixCultureEditor
    10. {
    11.     static FixCultureEditor()
    12.     {
    13.         Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
    14.     }
    15. }
    16. #endif
    17. public static class FixCultureRuntime
    18. {
    19.     [RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
    20.     static void FixCulture()
    21.     {
    22.         Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
    23.     }
    24. }
     
    xoodZ, Subliminum and eliot-ai like this.
  2. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    In your Skill's settings, do you have only "On Apply FX On Target" filled in with the particles prefab or is the field "On Apply FX" filled in as well? It should be empty.

    How is your skeleton ragdoll configured? If it has a unit component attached and its type is Agent, the dragon will still see that as enemy.
     
  3. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    Thank you so much for sharing it, Sir!
    So it fixes all the problems with that shifted nodes and black transitions?
     
    psych77 likes this.
  4. psych77

    psych77

    Joined:
    Mar 1, 2017
    Posts:
    55
    Yeah did for me =) Fixed it 100% even in .NET 4x. Tested in multiple versions.
     
    Mark_01, eliot-ai and Subliminum like this.
  5. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    Thanks again Sir! :)
     
    Mark_01 likes this.
  6. MastermindInteractive

    MastermindInteractive

    Joined:
    Jun 13, 2014
    Posts:
    89
    @eliot-ai - If we are using our own controller for the "target" / player. How do we send a notification to the enemy that they are being aimed, that we are fleeing, or that we are loading an attack?
     
  7. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    The most straightforward solution I see is finding the code responsible for that functions and using it as a template.
     
  8. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    I picked this up on sale today and look forward to giving it a try. I'm going to be trying with Action Starter RPG Kit and also Dialogue System. I see that you have integration with one of Pixel Crusher's other assets. Will you also be doing Dialogue System integration?
     
    lightwaterjohn likes this.
  9. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    I wanted to keep it a secret until the update :D but I am in fact planning to add a node type for that. Not sure how it will be implemented, but it will be of a great utility, obviously.
     
  10. SpyrosUn

    SpyrosUn

    Joined:
    Nov 20, 2016
    Posts:
    144
    Hi there, I already have Behavior Designer but I was really thinking of getting Eliot, looks like it would be a good addition to my coding arsenal :D

    It seems that Behavior Designer and Eliot are basically similar assets, but I am seeing that Eliot may have some premade behaviors that i could probably use. I was wondering, can the two assets combine ? Would it be beneficial to use both in a single project ?

    Thanks!
     
  11. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    Hi there. There's been a post that describes the basic difference. In a nutshell, Eliot has its behaviour designer + agent controller. Behaviour Designer doesn't have a built-in agent controller. That's the basic difference.
     
  12. ramtamir

    ramtamir

    Joined:
    Feb 23, 2019
    Posts:
    18
    I'm interested in a system where the player can define his own skills based on a point distribution system - something along the lines of creating a character in D&D games. Since skills are saved in files in eliot ai, this seems doable. Do you have any documentation regarding how the save skill system works?
     
  13. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    @eliot-ai I just went through the tutorial on making a skeleton, but I have 2 issues. The first issue is that when I duplicate one of the skeletons and change its team, even though they attack each other, they never do any damage. Second, I can't find integration instructions for Invector. In this forum someone said just add a Unit component to the Invector player, but that doesn't seem to work. The skeleton just ignores the player.
     
  14. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    There is a chapter in the manual devoted to Skills. That might be a good place to start - understanding of how it works and then modifying it. It doesn't explain the code but describes the system in general.
     
  15. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    You need to add the Unit component and set the team of that Unit component to something different from the eliot agent's team so that they are registered as enemies.
     
  16. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    Yes, I did that already. It isn't working. Where are the integration instructions? Even if I get the AI to attack Invector, how does the Invector damage the AI?
     
  17. ramtamir

    ramtamir

    Joined:
    Feb 23, 2019
    Posts:
    18
    Yeah, I went over the manual. Can you tell me what are the relevant scripts that handle saving the skills?

    I've gone over the manual. Can you point me at the right scripts to look at?
     
  18. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    You need to add a few lines as it is said in the EliotIntegration.pdf
    upload_2019-5-21_17-21-34.png
     
  19. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    What do you mean by saving the Skills? Skills are scriptable objects, so you just create and modify them in Edit mode. What kind of modifications do you want to save?
     
  20. ramtamir

    ramtamir

    Joined:
    Feb 23, 2019
    Posts:
    18
    I want the players to set up their own skills during runtime. Since the skills are saved in files this seems quite feasible, although I can't be sure about it. Say the players get 10 points they can distribute among different categories like spending points to increase damage/heal, to decrease energy cost, decrease the cooldown etc. Each point invested in damage would increase the skill's damage but that would be one point less they can invest in other aspects of the skill. Something like the way you set up a character in D&D where you distribute a certain amount of points among different stats.
     
  21. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    To do that, you would need to use the Unity's API for working with the Scriptable Objects. AssetDatabase is what you use to perform things like that.
     
  22. xoodZ

    xoodZ

    Joined:
    Jan 8, 2018
    Posts:
    17
    Can you please tell when about waiting for a next update? 1 month, half a year?
    I plan to start preparing characters in my project. If need wait 3-5 weeks - I will wait for the future not to redo my npc.
     
  23. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    I really wish I could give an exact answer, but I believe it will be there within 5-8 weeks.
     
  24. psych77

    psych77

    Joined:
    Mar 1, 2017
    Posts:
    55
    Does pooling work on build? For me it seems only to work in editor.
     
  25. BalazsJozsef

    BalazsJozsef

    Joined:
    Jun 8, 2016
    Posts:
    9
    Hello!
    I have started using Eliot for my game, but the behaviour editor acting strangely!
    Left is when NOT in Play mode, the right is when in play mode.
    upload_2019-6-3_11-7-22.png

    Also, after stoping play mode, the behavior remains like the right side image.

    I'm using Unity 2019.2.0b2 (personal)
     
  26. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    Does it work in the Play mode?
     
  27. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
  28. BalazsJozsef

    BalazsJozsef

    Joined:
    Jun 8, 2016
    Posts:
    9
  29. xoodZ

    xoodZ

    Joined:
    Jan 8, 2018
    Posts:
    17
    Hello!
    Faced a small problem. I create an agent, in the fields "perception / origin" and "General / shoot origin" I link origin point objects from the __graphics__ (head and left wrist) respectively, so that the projectile will fly out of the hand during the animation of the skill. But after launching the game in the agent, each time new objects __look__ and __shoot__ are created, which are registered in the fields "perception / origin" and "General / shoot origin". Because of this, the projectile flies from another place.
    Can I specify as a "perception / origin" the head from the skeleton, and as the shoot origin - the hand?
     
  30. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    Hi, simply rename the object that you want to be the Skills' origin to "__shoot__"
     
  31. chrisk

    chrisk

    Joined:
    Jan 23, 2009
    Posts:
    704
    Hi, I really like the behavior system but in my opinion, it's just too simplistic and it will never be as good as other behavior system like NodeCanvas. I don't mean to be negative but NodeCanvas has been in development for years and it will be very difficult to top it.
    NodeCanvas has both BehaviorTree and FSM with live debugging and much more. I really Eliot to support NodeCanvas in addition to its own behavior system.
    It will make Eliot very powerful system immediately.
    I hope you provide some interface at least so that we can hook NodeCanvas into it.
    Many thanks.
     
  32. chrisk

    chrisk

    Joined:
    Jan 23, 2009
    Posts:
    704
    They are not the same thing and I don't know if you used NodeCanvas before. It is light years ahead of Eliot in its behavior system. It just that NC doesn't have Agent system and it makes it difficult to work with basic Character AI Agent. To me, replicating Behaviour system that is already pretty much the best out there is the waiting time.
    Anyway, please check NC out if you are not familiar. It can change your mind if you realize how powerful/versatile it is.

    BTW, I hacked NC and Eliot so that it can work together. Together, they can now provide a really super powerful system.
     
  33. xoodZ

    xoodZ

    Joined:
    Jan 8, 2018
    Posts:
    17
    Hello!
    Thank. That helped.
    One more question. I need the turret to attack the enemies, but the enemies do not attack the turret. How to do it right?
    I tried to turn off HP in the resources of the turret, but there is no result. I think that doing it through behavior is too cumbersome.
     
  34. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    Hi, you basically need to make sure that the enemies' perception rays can hit the turret's collider and to make sure the team (int he Unit component) of the turret is different from the enemies'
     
    Mark_01 likes this.
  35. BalazsJozsef

    BalazsJozsef

    Joined:
    Jun 8, 2016
    Posts:
    9
    Hello!​

    I have started to work with Eliot AI now, and I have noticed a huge performance drop during the Agent Instantiation process.
    I have found out the method at:

    public static class CoresPool - public static BehaviourCore GetCore
    causing my processor to drop from 13.55 ms to 83.43 ms (amd x2600). And it's only 1 agent! (Which have a simplier tree than a demo - "soldier" tree).

    I don't know exacly what's causing this issue in the method mentioned before, but please consider a fix on this JSON magic ASAP. This drastic fps drop is realy ruining the experience of my game!
     
  36. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    I've decided to abandon the JSON magic at all and in the next version objects will be used directly. This should improve the performance on the Initialization.
     
    Mark_01 likes this.
  37. BalazsJozsef

    BalazsJozsef

    Joined:
    Jun 8, 2016
    Posts:
    9
    Sounds great!

    Can we get an estimation about the next version release date?
     
    Subliminum likes this.
  38. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    I hope to wrap it up by the middle of July
     
    BalazsJozsef, Mark_01 and Subliminum like this.
  39. Notso

    Notso

    Joined:
    Oct 25, 2015
    Posts:
    44
    I seem to have encountered a StackOverflow issue (and it is running REALLY slow!)
    I went over this and it is identical to the documentation (well, as far as I could tell...just a little more organized to my liking).
    upload_2019-7-5_19-28-40.png upload_2019-7-5_19-29-4.png
     
  40. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    I'm a little confused to see that because the exception points to the TargetInFarRange method which is not present in the behaviour the screenshot of which you have shown. Is it possible that the exception is thrown by a different behaviour?
     
  41. Notso

    Notso

    Joined:
    Oct 25, 2015
    Posts:
    44
    OK so I had the car, skeletons and the dragon in 1 scene (just deactivated after each one was done).
    I deleted all but the skeleton and skeleton heal. The skeletonG2 is a copy with just team changed and the skeleton heal is also a copy with the proper(I think) changes and set to skeletonG2 team as well...this scene does work though. they fight, he gets healed. but I also get these errors as below.

    EDIT:
    Nevermind on this initial one for the skeletons. I figured it out, I had the wrong connection from the healer, I didn't have the Friendnotfullyhealthy observer to Idle transition.....
    Will try the fdragon next, have it set up but it doesn't seem the Dragon is doing any damage to the skeles (which do work with each other)

    Edit Again!:
    I got the Dragon scene working as well, I didn't lower the look far enough and moved it forward a little, saw that the skeles were not within the close range of the skill to activate the claw attack.
    Only issue (as another mentioned) is the Pink flame graphic. Seems your prefab is messed up.
     

    Attached Files:

    Last edited: Jul 6, 2019
  42. Notso

    Notso

    Joined:
    Oct 25, 2015
    Posts:
    44
    On another note...
    Is there a way to freeze the enemy for a specified length of time? (Like being hit with a freeze ray)
    Or slow them down (in slow motions like seriously cold or coming out of frozen state)?
    Also...how would I handle, say, go to cover (like behind a wall) or shoot from around the corner? I guess the shoot around corner can be an animation once he gets to cover use that specific animation.....

    Edit:
    I used a cube, added Unit, set it as block, then got it to see enemy, check if it sees block, then run to target. But he seems to stop running once out of view of the enemy...(Very crude but this sort of works...) Is there a method to maybe crate a pool of waypoints and have it run to the closest ? That way I can put waypoints at the corners of the walls etc.. and make only those available when an enemy is spotted.
     
    Last edited: Jul 7, 2019
  43. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    Regarding the freeze ray, I would start with getting the LockTime variable of the Agent's resources under control. You would need to create a property for it or simply make it public. This variable controls the time agent's movement is frozen after getting hit. Preventing the agent from using any skills, unfortunately, would take adding new variable that would control the execution of the Skill in the "public Action Skill(string skillName, bool execute)" in the Agent class.
    Regarding shooting from around the corner, I would agree on you and it can be done simply with an animation. I would mark the corner with some kind of an object with the unit component just so that the agent can identify it.
     
  44. Notso

    Notso

    Joined:
    Oct 25, 2015
    Posts:
    44
    Thanks for the reply....
    I was trying to get it to go to a wall(block) and it sort of works, he stops halfway there, or goes to a random spot behind the wall when it does work so it is not ideal..... I would love the idea of setting waypoints and letting the agent go to the closest waypoint on seeing the player or on getting hit. and with that in effect, we could then use the health status of the agent to get it to move to another point/runaway etc...

    Have you thought of Discord? (I know someone else mentioned it).
    It is free, and some Devs use a Bot to verify the purchase and allow access to the support channel of their discord server (Helps prevent support to those that have pirated it). This way users can help each other as well. Also can create a channel to share behaviours too.
     
    eliot-ai likes this.
  45. SpyrosUn

    SpyrosUn

    Joined:
    Nov 20, 2016
    Posts:
    144
    Are you by any chance planning an integration with the Top Down Engine of More Mountains ?
     
  46. Notso

    Notso

    Joined:
    Oct 25, 2015
    Posts:
    44
  47. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    You can create a new condition for the observer to check if the condition is very close to the wall block. If it is, stop, otherwise go to the wall block.
    If discord allows that, I have to look into it, thanks for explaining in more details.
    I am not planning to do so but iam sure it's not going to be hard to build the bridge as long as it's possible to access the agent's actions like walking and hitting through api.
     
  48. Notso

    Notso

    Joined:
    Oct 25, 2015
    Posts:
    44


    No problem. Discord is great for this stuff. (You might have to write the bot to check validation yourself but the API is open).


    Back to my original. The behaviour is simple. I have seeenemy->yes->seeblock->yes->runtotarget but he still goes halfway or to a different point. I need to specify what point to go to (left or right side) and which side (front or back)...(like to run and hide)
     
  49. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    Could I take a look at your Behaviour?
     
  50. Notso

    Notso

    Joined:
    Oct 25, 2015
    Posts:
    44
    Yeah, give me a day, but as I said, it is really simple, just a few blocks to make him move.
    (Work and school got in the way)