Search Unity

  1. Unity 2019.2 is now released.
    Dismiss Notice

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

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

    29 vote(s)
    21.5%
  3. Copypasting parts of Behaviours

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

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

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

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

    12 vote(s)
    8.9%
  1. wood333

    wood333

    Joined:
    May 9, 2015
    Posts:
    642
    On the tutorial the dragon claw init skill by radius does not seem to be working. The claw animation plays, but push power is not applied to all Eliot agents within the radius. We do not understand how to get this working as expected. Are we missing colliders?
     
  2. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    144
    Maybe some of the agents are in the friend team. If so, they won't be pushed unless the skill can affect friends. Also, maybe some agents have too much weight (in the motion settings) - that will also reduce the push power. The skill power affects the push power as well, so if the random value of power turns out to be 0, the agent won't be pushed. If none of this helps, you can share your Skill's settings and I'll take a look.
     
  3. chrisk

    chrisk

    Joined:
    Jan 23, 2009
    Posts:
    508
    Hi, I just bought the asset because Eliot AI Behavior Editor looked very interesting.
    I also have Node Canvas but the NC is too generic and it requires quite a lot of work to set up a simple AI Agent system.
    Basically NC provides Behavior System and there is no concept of Agent System and you have to make your own.
    However, I think NC probably has the best Behavior System out there and it's hard to beat it.

    So, I've been looking for some AI system that both has Agent System and Behavior System and I thought Eliot AI is the perfect Asset I've been looking for.

    After testing Eliot AI for few hours, unfortunately, I find that it still lacks many features.
    Yeah it's relatively a new asset but it will take a quite a while until it becomes useful.

    I know you want to make the best AI system but making Behavior System alone will take a really long time and it will be very difficult to make better it than NC.

    So here is what I would like to ask.

    Instead of working both the Agent and Behavior system at the same time, why don't you focus on the Agent system and make the NC integration (possibly other Behavior system) as an option?

    This will make Eliot AI immediately useful and you can focus on Agent system until you feel that it's solid. And then you can work on the Behavior System that can possibly better than anything out there.

    Agent system will basically provides some cool APIs that external Behavior System such as NC can access.

    Please let me know what you think and I wish the very best.

    Cheers!
     
  4. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    144
    Hi @chrisk, thanks for sharing your thoughts! I am working on both behaviour and agent systems at the same time. My goal is to make it possible to achieve the desired result as quickly and comfortably as possible, in a predictable manner. Also I want it to be universally applicable. Just agent on itself will be of use only to people that can code already. I would greatly appreciate it if you could share what features you would like to see in the behaviour editor. Thanks.
     
  5. chrisk

    chrisk

    Joined:
    Jan 23, 2009
    Posts:
    508
    Hi, thanks for the quick reply.
    Actually, I don't have much request on Behavior System other than to make NC integration.
    I'll probably have more request on Agent system in the short term. ^^

    The first thing I would like to see the Agent Inspector to better organize using groups.
    It has tons of parameters and it's hard to Edit them. Perhaps tabify like the image below will help.
    upload_2019-5-8_21-16-36.png

    I'll let you know once I use more.
    Right now my first task is to set up a simple roaming animal system and I'm struggling a bit. ^^

    BTW, will you support Agent spawner with pooling system? I think it will be quite useful for Agents.

    Thanks.
     
  6. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    144
    I decided to make each agent component a separate monobehaviour. This way the Inspector stays cleaner and you don't need to use all of them at the same time. Furthermore it makes the system more extendable.
    Regarding the pooling, it is already available. Create the waypoints group and you'll see the settings for pooling. Currently it only works by destroying the agents and instantiating new ones, but with the next update it will also work without destroying any objects and reusing the ones that happen to be in the waypoints group already.
     
    Subliminum and StevenPicard like this.
  7. MLipscomb

    MLipscomb

    Joined:
    Oct 14, 2018
    Posts:
    2
    I am enjoying Eliot AI this week, but I just received a StackOverflow exception during runtime. I'll try to work around it, but thought I should post what I saw.

    upload_2019-5-8_17-40-36.png upload_2019-5-8_17-42-22.png

    StackOverflowException
    Eliot.AgentComponents.NavMeshMotionEngine.MoveTowards (System.Nullable`1[T] targetPosition, System.Single moveSpeed, Eliot.AgentComponents.MotionState motionState, Eliot.AgentComponents.AnimationState animationState, System.Single animationFadeSpeed, System.Int32 energyCost, System.Action actionOnNotEnoughEnergy, System.Single& updateTimeVariable, System.Action stopAction) (at Assets/Eliot AI/Eliot/AgentComponents/MotionEngines/NavMeshMotionEngine.cs:370)
    Eliot.AgentComponents.NavMeshMotionEngine.MoveTowards (UnityEngine.Transform targetTransform, System.Single moveSpeed, Eliot.AgentComponents.MotionState motionState, Eliot.AgentComponents.AnimationState animationState, System.Single animationFadeSpeed, System.Int32 energyCost, System.Action actionOnNotEnoughEnergy, System.Single& updateTimeVariable, System.Action stopAction) (at Assets/Eliot AI/Eliot/AgentComponents/MotionEngines/NavMeshMotionEngine.cs:348)
    Eliot.AgentComponents.NavMeshMotionEngine.WalkToTarget () (at Assets/Eliot AI/Eliot/AgentComponents/MotionEngines/NavMeshMotionEngine.cs:193)
    Eliot.AgentComponents.StandardMotionActionInterface.WalkToTarget () (at Assets/Eliot AI/Eliot/AgentComponents/StandardActions/StandardMotionActionInterface.cs:28)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:41)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:58)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:58)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:51)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:58)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:58)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:51)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:58)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:58)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:51)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:58)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:58)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:51)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:58)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:58)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:51)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:58)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:58)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:51)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:58)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:58)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:51)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:58)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:58)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:51)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:58)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:58)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:51)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:58)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:58)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:51)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:58)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:58)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:51)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:58)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:58)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:51)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Observer.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Observer.cs:58)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Transition.cs:90)
    Eliot.BehaviourEngine.Invoker.Update () (at Assets/Eliot AI/Eliot/BehaviourEngine/Invoker.cs:45)
    Eliot.BehaviourEngine.Transition.Update () (at Assets/Eliot AI/Eliot/BehaviourE<message truncated>
     
  8. Subliminum

    Subliminum

    Joined:
    Nov 9, 2017
    Posts:
    92
    Try removing your transition from WalkToTarget-SeeEnemy?, my guess is thats whats causing the recursion.
     
    eliot-ai likes this.
  9. wood333

    wood333

    Joined:
    May 9, 2015
    Posts:
    642
    The knock back issue was resolved by increasing the Area Range on the Dragon Claws skill. However, I have one final other issue.

    When I first hit play, one spot of Dragon Fire DoT flame appears on the ground behind the dragon. Thereafter the Fire works correctly, but I always get that one spot of fire on the ground when I hit play.
     
  10. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    144
    That probably has something to do with your fire prefab settings. Could you please upload a screenshot of what that one extra spot looks like?
     
  11. wood333

    wood333

    Joined:
    May 9, 2015
    Posts:
    642
    DoT Flame spot.JPG

    It's exactly the same as the other flame DoT particles. My particles do not display the flame particle texture, but I am not worried about that.
     
  12. wood333

    wood333

    Joined:
    May 9, 2015
    Posts:
    642
    Quick question: Why is the dragon attacking dead skeletons?
     
  13. psych77

    psych77

    Joined:
    Mar 1, 2017
    Posts:
    51
    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.
  14. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    144
    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.
     
  15. eliot-ai

    eliot-ai

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

    psych77

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

    eliot-ai

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

    MastermindInteractive

    Joined:
    Jun 13, 2014
    Posts:
    86
    @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?
     
  19. eliot-ai

    eliot-ai

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

    magique

    Joined:
    May 2, 2014
    Posts:
    3,632
    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.
  21. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    144
    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.
     
  22. SpyrosUn

    SpyrosUn

    Joined:
    Nov 20, 2016
    Posts:
    83
    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!
     
  23. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    144
    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.
     
  24. ramtamir

    ramtamir

    Joined:
    Feb 23, 2019
    Posts:
    11
    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?
     
  25. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    3,632
    @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.
     
  26. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    144
    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.
     
  27. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    144
    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.
     
  28. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    3,632
    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?
     
  29. ramtamir

    ramtamir

    Joined:
    Feb 23, 2019
    Posts:
    11
    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?
     
  30. eliot-ai

    eliot-ai

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

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    144
    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?
     
  32. ramtamir

    ramtamir

    Joined:
    Feb 23, 2019
    Posts:
    11
    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.
     
  33. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    144
    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.
     
  34. xoodZ

    xoodZ

    Joined:
    Jan 8, 2018
    Posts:
    11
    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.
     
  35. eliot-ai

    eliot-ai

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

    psych77

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

    BalazsJozsef

    Joined:
    Jun 8, 2016
    Posts:
    4
    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)
     
  38. eliot-ai

    eliot-ai

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

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    144
  40. BalazsJozsef

    BalazsJozsef

    Joined:
    Jun 8, 2016
    Posts:
    4
  41. xoodZ

    xoodZ

    Joined:
    Jan 8, 2018
    Posts:
    11
    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?
     
  42. eliot-ai

    eliot-ai

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

    chrisk

    Joined:
    Jan 23, 2009
    Posts:
    508
    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.
     
  44. Subliminum

    Subliminum

    Joined:
    Nov 9, 2017
    Posts:
    92
    What would be the point? NodeCanvas and Eliot do essentially the same things and are basically competing Assets, if you prefer NodeCanvas over Eliot then just use it instead. Making a integration would be a pointless waste of time for the dev IMO...similar to Unreal Engine having a plugin to use Unity, or Itunes having a WMP plugin. If there are elements of the NodeCanvas system that you would like to see in Eliot specifically (IE: Live Debugging) Suggest them here and perhaps Eliot AI will be able to add them in future updates!
     
    eliot-ai likes this.
  45. chrisk

    chrisk

    Joined:
    Jan 23, 2009
    Posts:
    508
    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.
     
  46. Subliminum

    Subliminum

    Joined:
    Nov 9, 2017
    Posts:
    92
    Im familar with NodeCanvas and stand by my comment, Nice work on getting them to work together though, im sure some other users might be interested.
     
  47. xoodZ

    xoodZ

    Joined:
    Jan 8, 2018
    Posts:
    11
    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.
     
  48. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    144
    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.
  49. BalazsJozsef

    BalazsJozsef

    Joined:
    Jun 8, 2016
    Posts:
    4
    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!
     
  50. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    144
    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.