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. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    Create high quality AI in a matter of minutes with the help of visual programming and a library of algorithms that are ready to provide your Agents with almost any type of interaction you might want in your game!

    Eliot is a set of tools that focus on letting you prototype and build characters (AI) in your games with as little distraction as possible. Focus on what is truly important to achieve the goal faster!
    upload_2018-10-18_11-49-3.png

    Watch a short video that briefly shows what is Eliot about:


    What makes Eliot outstanding? The amount of time you need to put into prototyping and/or building AI for your projects and the ability to think about WHAT you want to create and not HOW to create it.
    How is that achieved? By unique set of features that include built-in Visual Scripting, Skills, Waypoints and a rich system of simulation of a physical body of your Agents.

    FEATURES
    • Visual Scripting: Build complex behaviours within minutes. Take advantage of the power of visual scripting to edit behaviours on a human-language level as fast as you can verbalise it.

    • Perception: Eliot Agents use rays to understand the world around them, being able to support Stealth genre as well as classical RPG style perception.

    • Motion: Agents can move around using a system built with Unity NavMesh. Includes a library of algorithms ready to provide you with almost any type of motion you might need in your game, such as walking, running, dodging, patrolling etc. Also includes turret mode.
    • Inventory: Agents can pickup, use, wield and drop items. Items can be treated as weapons, potions, coins, resources etc.

    • Resources: Agents live, die, use energy for actions. Take advantage of a system that lets Agents use resources, such as Health and Energy, to interact with each other and with the world by adding or subtracting these resources.

    • Skills: Attack, heal, cast spells... you name it. Encapsulate almost any type of interaction in a file to later call it by name when it is necessary or desired.

    • Waypoints: Spawn, pool, follow path, define territories. Eliot's Waypoints system lets you create a group of waypoints by simply clicking on a surface where you want a new Waypoint to be. You can use it to spawn prefabs inside the defined area in the Editor as well as in the Play mode or as a path with an option to change an Agent's Behaviour after it has reached a specific Waypoint.

    • Optimization: Eliot can handle more than you probably need. Eliot Agents have multiple properties that let you optimize the performance if necessary by simply changing a value.

    • Dynamic 'smartness' of AI: Difficulty of the game can be configured with just a few parameters on agents even without the reconfiguration of an Agent's HP or skills.

    • Animation: Seamlessly integrate the system with the work of your designer. Eliot supports Mecanim as well as Legacy animations.

    • Experiment-friendly: Copy and edit files of Skills and Behaviours without the need to worry about breaking anything.

    • Audio: Just set desired audio clips for pretty much any of an Agent's actions.


    ✔️ Manual: Detailed description of all of Eliot's subsystems.
    ✔️ Tutorials: A series of tutorials that feature possible real-world applications.
    ✔️ Demos: Try out 2 projects made with the help of Eliot!
    ✔️ Example Project: See an example of applying Eliot for a rapid creation of AI in a project, which is included in the package.



    ROADMAP

    • A new type of nodes to the Behaviour Editor that will choose its output based on Agent's observations and experience it learned

    • Eliot Hub - a place where everyone can share their Behaviours and Skills and find the ones they need for their projects

    • New tools to Behaviour Editor, like the ability to copy and paste parts of Behaviours

    The work on video tutorials is currently in progress. Here is the first tutorial of the series:


    You can find the package itself here!
     
    Last edited: Oct 18, 2018
  2. StevenPicard

    StevenPicard

    Joined:
    Mar 7, 2016
    Posts:
    859
    This is truly an awesome asset. Really great for a first version. I'll be back on here with some feedback and ideas soon.
     
  3. LostPhilosopher

    LostPhilosopher

    Joined:
    Feb 25, 2018
    Posts:
    23
    Mobile Optimisation?FPS rate? 2D game support available?
     
  4. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    Hi, unity_Kc3Eex_3WLj4Kg.
    Eliot does not depend on any specific platform, so yes, it can be built for mobile.
    FPS rate barely notices the presence of Eliot, unless you start spamming Agents all around. You don't have to trust me about that. Instead you can just run demos which you can download for free from the official website ("Try" buttons after features) and see if FPS satisfies you.
    2D game support depends on what kind of 2D you want in your game. Anything that works with NavMesh is supported by Eliot, like top-down shooters, roguelike etc. Unfortunately, platformer genre is currently not directly supported but still can be integrated into visual scripting. However it would take an additional amount of effort as it is currently not a part of Eliot's "standard library".
     
    Kennth and Mark_01 like this.
  5. Mark_01

    Mark_01

    Joined:
    Mar 31, 2016
    Posts:
    634
    I just got Eliot late yesterday afternoon, got through the first tutorial and
    half way tho the second as of now.

    All I can say is WOW WOW WOW !!!

    Eliot Ai is going to be huge! The potential is there, the base very solid, easy to understand.

    @eliot-ai Congratulations on fist release.
     
    eaque and StevenPicard like this.
  6. Cartoon-Mania

    Cartoon-Mania

    Joined:
    Mar 23, 2015
    Posts:
    320
    I have been looking for a solution for an automatic battle for a long time. Could this asset be a good alternative? Do you plan to provide examples for automatic battles?
     
  7. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    Hi, Cartoon-Mania
    Can you please specify in more details what do you mean by saying "automatic battles"?
    Eliot can make Agents fight against each other, teams versus teams with as many teams and as many members of each team as you wish. Eliot's Skills, by which Agents interact with each other and with the world, are highly customizable. With that being said, I believe you can use Eliot in your project as long as your creatures use NavMesh to navigate.
    You can see example of one type of Agents fighting with another type in FPS demo, which you can download for free from the official website. Lions hunt zebras in this example.
     
    Mark_01 likes this.
  8. StevenPicard

    StevenPicard

    Joined:
    Mar 7, 2016
    Posts:
    859
    Doing video tutorials of the written tutorials would be very helpful.
     
    Mark_01 likes this.
  9. StevenPicard

    StevenPicard

    Joined:
    Mar 7, 2016
    Posts:
    859
    Will you ever include A* navigation for situations where navmesh doesn't fit?
     
  10. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    Hi StevenPicard,
    I am working on it at the moment :). Takes some time.
    The first video is already available:
     
    Mark_01 and StevenPicard like this.
  11. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    I am planning to make it work for 2D platformers and to make usage of NavMesh not mandatory in the future.
    Do you have in mind integration with some specific asset for A*?
     
  12. StevenPicard

    StevenPicard

    Joined:
    Mar 7, 2016
    Posts:
    859
    I am not sure off hand which is the best but I have heard a lot of talk of Aron's "A* Pathfinding Project Pro" (pricey at a $100) but I may need to try out the cheaper asset "Open World PathFinding System" (only $14.99 but looks capable.) Since some of my projects (especially the main one) rely on dynamic terrain generation dynamic navmesh's can be a big challenge so A* path finding would make sense.

    For me, the biggest thing is really the need for navmesh. It's okay for some of my scenes but not my outdoor ones. Perhaps your plans for making the navmesh optional could fulfill my needs?
     
  13. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    You can check out this free asset made by Unity that allows to build NavMesh dynamically. Eliot is totally compatible with it without any additional code.
     
    Mark_01 likes this.
  14. StevenPicard

    StevenPicard

    Joined:
    Mar 7, 2016
    Posts:
    859
    Thanks but, unless I'm mistaken, that doesn't work well with terrains.
     
  15. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    I have good news for you. Support of A* Pathfinding is the main feature of the upcoming update which is going to be released within a couple of days :)
     
    recon0303, Mark_01 and StevenPicard like this.
  16. StevenPicard

    StevenPicard

    Joined:
    Mar 7, 2016
    Posts:
    859
    Awesome news!
     
    Mark_01 likes this.
  17. ScourgeGames

    ScourgeGames

    Joined:
    Aug 22, 2017
    Posts:
    239
    Howdy @eliot-ai,

    I just purchased and I'm having some difficulty in getting it to compile in 2017.4.10f1. I'm guessing the errors are simply cascading due to some minor issue, but I have no idea what. Any ideas?

    I get the following warnings first:

    Script 'Behaviour' has the same name as built-in Unity component.
    AddComponent and GetComponent will not work with this script.

    Script 'Component' has the same name as built-in Unity component.
    AddComponent and GetComponent will not work with this script.

    Script 'Animation' has the same name as built-in Unity component.
    AddComponent and GetComponent will not work with this script.
    Then I get a series of errors:

    Assets/Eliot AI/Eliot/AgentComponents/ActionInterfaces/InventoryActionInterface.cs(39,14): error CS0019: Operator `&&' cannot be applied to operands of type `Item' and `bool'

    Assets/Eliot AI/Eliot/AgentComponents/ActionInterfaces/InventoryActionInterface.cs(43,32): error CS1061: Type `Item' does not contain a definition for `AddToInventory' and no extension method `AddToInventory' of type `Item' could be found. Are you missing an assembly reference?

    Assets/Eliot AI/Eliot/AgentComponents/ActionInterfaces/InventoryActionInterface.cs(52,80): error CS1061: Type `Item' does not contain a definition for `Wield' and no extension method `Wield' of type `Item' could be found. Are you missing an assembly reference?

    Assets/Eliot AI/Eliot/AgentComponents/ConditionIntarfaces/InventoryConditionInterface.cs(35,14): error CS1061: Type `Item' does not contain a definition for `Type' and no extension method `Type' of type `Item' could be found. Are you missing an assembly reference?

    Assets/Eliot AI/Eliot/AgentComponents/ConditionIntarfaces/PerceptionConditionInterface.cs(251,67): error CS1061: Type `Item' does not contain a definition for `Type' and no extension method `Type' of type `Item' could be found. Are you missing an assembly reference?

    Assets/Eliot AI/Eliot/AgentComponents/Inventory.cs(129,10): error CS1061: Type `Item' does not contain a definition for `AddToInventory' and no extension method `AddToInventory' of type `Item' could be found. Are you missing an assembly reference?

    Assets/Eliot AI/Eliot/AgentComponents/Inventory.cs(139,13): error CS0029: Cannot implicitly convert type `Item' to `bool'

    Assets/Eliot AI/Eliot/AgentComponents/Inventory.cs(140,32): error CS1061: Type `Item' does not contain a definition for `AddToInventory' and no extension method `AddToInventory' of type `Item' could be found. Are you missing an assembly reference?

    Assets/Eliot AI/Eliot/AgentComponents/Inventory.cs(151,17): error CS1061: Type `Item' does not contain a definition for `Weight' and no extension method `Weight' of type `Item' could be found. Are you missing an assembly reference?

    Assets/Eliot AI/Eliot/AgentComponents/Inventory.cs(163,32): error CS1061: Type `Item' does not contain a definition for `Weight' and no extension method `Weight' of type `Item' could be found. Are you missing an assembly reference?

    Assets/Eliot AI/Eliot/AgentComponents/Inventory.cs(178,19): error CS1061: Type `Item' does not contain a definition for `Value' and no extension method `Value' of type `Item' could be found. Are you missing `Newtonsoft.Json.Linq' using directive?

    Assets/Eliot AI/Eliot/AgentComponents/Inventory.cs(180,27): error CS1061: Type `Item' does not contain a definition for `Value' and no extension method `Value' of type `Item' could be found. Are you missing `Newtonsoft.Json.Linq' using directive?

    Assets/Eliot AI/Eliot/AgentComponents/Inventory.cs(197,19): error CS1061: Type `Item' does not contain a definition for `Type' and no extension method `Type' of type `Item' could be found. Are you missing an assembly reference?

    Assets/Eliot AI/Eliot/AgentComponents/Inventory.cs(199,27): error CS1061: Type `Item' does not contain a definition for `Value' and no extension method `Value' of type `Item' could be found. Are you missing `Newtonsoft.Json.Linq' using directive?

    Assets/Eliot AI/Eliot/AgentComponents/Inventory.cs(214,9): error CS1061: Type `Item' does not contain a definition for `GetDropped' and no extension method `GetDropped' of type `Item' could be found. Are you missing an assembly reference?

    Assets/Eliot AI/Eliot/AgentComponents/Inventory.cs(216,10): error CS1061: Type `Item' does not contain a definition for `Unwield' and no extension method `Unwield' of type `Item' could be found. Are you missing an assembly reference?

    Assets/Eliot AI/Eliot/AgentComponents/Inventory.cs(235,8): error CS0023: The `!' operator cannot be applied to operand of type `Item'

    Assets/Eliot AI/Eliot/AgentComponents/Inventory.cs(236,16): error CS1061: Type `Item' does not contain a definition for `Value' and no extension method `Value' of type `Item' could be found. Are you missing `Newtonsoft.Json.Linq' using directive?

    Assets/Eliot AI/Eliot/AgentComponents/Inventory.cs(247,15): error CS1061: Type `Item' does not contain a definition for `GetDropped' and no extension method `GetDropped' of type `Item' could be found. Are you missing an assembly reference?

    Assets/Eliot AI/Eliot/AgentComponents/Inventory.cs(249,16): error CS1061: Type `Item' does not contain a definition for `Unwield' and no extension method `Unwield' of type `Item' could be found. Are you missing an assembly reference?

    Assets/Eliot AI/Eliot/Environment/Item.cs(102,14): error CS1061: Type `Inventory' does not contain a definition for `AddItem' and no extension method `AddItem' of type `Inventory' could be found. Are you missing an assembly reference?

    Assets/Eliot AI/Eliot/Environment/Item.cs(104,33): error CS1061: Type `Inventory' does not contain a definition for `ItemsContainer' and no extension method `ItemsContainer' of type `Inventory' could be found. Are you missing an assembly reference?

    Assets/Eliot AI/Eliot/Environment/Item.cs(142,25): error CS1061: Type `Inventory' does not contain a definition for `WieldedItem' and no extension method `WieldedItem' of type `Inventory' could be found. Are you missing an assembly reference?

    Assets/Eliot AI/Eliot/Environment/Item.cs(143,23): error CS1061: Type `Inventory' does not contain a definition for `WieldedItem' and no extension method `WieldedItem' of type `Inventory' could be found. Are you missing an assembly reference?

    Assets/Eliot AI/Eliot/Environment/Item.cs(145,22): error CS1061: Type `Inventory' does not contain a definition for `WieldedItem' and no extension method `WieldedItem' of type `Inventory' could be found. Are you missing an assembly reference?

    Can you help me to get this to compile?

    Thanks!

     
  18. ScourgeGames

    ScourgeGames

    Joined:
    Aug 22, 2017
    Posts:
    239
    I figured it out. I have another asset that was improperly namespaced (was a real stew), but after bit of refactoring, I was able to get everything to compile. I didn't need to change anything in the Eliot code.
     
  19. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    Hi @GamifyTheWorld
    I am glad you have figured it out!
    There is also another way to get around this if you don't want to rename your components. You can use preprocessor directive "using Item= Eliot.Environment.Item". This will let compiler know what exactly you mean by "Item" so it will remove ambiguity.
     
  20. Gatskop_Software

    Gatskop_Software

    Joined:
    Sep 21, 2014
    Posts:
    86
    Question is there a cover and shoots action?
     
  21. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    Hi @Gatskop_Software
    You can definitely create both of them using Skill (no code required).
    Cover without even the Skill, but as a part of Motion, will be added to Eliot in one of the next updates along with jumping.
     
    recon0303, StevenPicard and Mark_01 like this.
  22. Gatskop_Software

    Gatskop_Software

    Joined:
    Sep 21, 2014
    Posts:
    86
    Sorry for all the questions just want to ask some stuff before buying. Have you play xcom and if yes would it be possible to do something like that with your asset
     
  23. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    Eliot is designed for real-time games and xcom is turn-based. Eliot would definitely help with making many things simpler but you would still have to write a lot of code.
     
    Gatskop_Software likes this.
  24. ScourgeGames

    ScourgeGames

    Joined:
    Aug 22, 2017
    Posts:
    239
    I had thought about that, but the code needed to be fixed up in the other asset. The namespaces were a mess. Some things were namespaced, some were not. And, there were redundant types created (identical) in separate namespaces and so forth. It just needed cleaning up.
     
  25. ScourgeGames

    ScourgeGames

    Joined:
    Aug 22, 2017
    Posts:
    239
    I just got deep into the second tutorial and noticed after creating the agent that the skeleton is scaled wrong. Looking at the import scale, it was set to 0.01. All attempts to scale it now are fubar. I must have missed something... what scale did you import the skeleton as when you created the tutorial?
     
  26. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    Hi @GamifyTheWorld

    My Skeletons also have an import scale of 0.01. Looks like I have not mentioned that in a written tutorial. I apologize for that. What I should have mentioned is that you can just scale Skeletons (graphics) up in the scene.
    Thank you for pointing out that mistake in the tutorial. I will fix it ASAP.
     
  27. ScourgeGames

    ScourgeGames

    Joined:
    Aug 22, 2017
    Posts:
    239
    No worries. I just re-imported and scaled them up a little. I made it through the tutorial with only a few minor issues. The animations for those skeletons are a bit janky (walk loop is jerking, not sure why).

    Edit: I'll finish the healer part of that tutorial tomorrow. I do have some suggestions that I'll make note of for your tutorial document. So far, I'm pretty pleased with what I've seen. Looks like there is a lot more for me to discover. Good job.
     
  28. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    Just set "Add Loop Frame" to true in the animation settings for Walk and Run animations and it will be perfectly smooth.
    upload_2018-10-29_11-27-47.png
     
  29. pushingpandas

    pushingpandas

    Joined:
    Jan 12, 2013
    Posts:
    1,419
    hmm is your AI asset compatible to ootii controller? That would be awesome!
     
  30. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    Hi, @Devision4

    It is very easy to intergate it with any character controller. You can check out the demo games made with the Eliot here. ("Try" buttons right under the list of features).
    It took just a few lines of code to integrate it with UFPS, and I guess it would be just as easy to do with any other character controller.
     
  31. ScourgeGames

    ScourgeGames

    Joined:
    Aug 22, 2017
    Posts:
    239
    I did that. Also had to change the wrap mode to "loop", otherwise it still has a jerking step to it.
     
  32. ScourgeGames

    ScourgeGames

    Joined:
    Aug 22, 2017
    Posts:
    239
    One more item to make note of in the first part of the skeleton tutorial. You had us create the extra the check in the observer for low health, and set it to run away when the health is low, but the low health setting was set to 0 (zero). Might want to make mention of where to set that.
     
  33. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    ScourgeGames likes this.
  34. ScourgeGames

    ScourgeGames

    Joined:
    Aug 22, 2017
    Posts:
    239
    OK, so I'm only just a bit into this and already starting to tweak the behavior. One thing that is needed is a "Time" condition group, or something that simply idles the agent based on time values. There should be a random time (between two floats) and one that just waits a preset float value. Creating randomness in a behavior where it is shared across multiple agents in a scene (like the skeletons) breaks up the way the animations all synchronize together and makes it more life like.

    I imagine I could code something like this (and will definitely create custom invokers soon), but I'm just getting my feet wet with this. So far, I like the simplicity of it. And with many new types of nodes, this could be far more productive than the work I've been doing with behavior trees.


    Edit: Or is that what the probability during transition is for?
     
    Last edited: Oct 29, 2018
  35. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    Time Condition Group is indeed a good idea! Now though you can create a method that initializes a variable T to a current time and checks if current time is less than T + desired delta. And you can check that method with a While Node in the Behaviour Editor. This way you can invoke any activity for a desired amount of time.
     
  36. ScourgeGames

    ScourgeGames

    Joined:
    Aug 22, 2017
    Posts:
    239
    I would love to see the integration code you did with UFPS, or integration even with the simple Unity FPS controller in standard assets. Something that shows the bare minimum of what needs to be added to the controller to allow it to be a target of the NPC agents, and the ability to affect NPCs from a simple user driven controller. This could go a long way towards integrating it with various popular controllers.
     
  37. RonnyDance

    RonnyDance

    Joined:
    Aug 17, 2015
    Posts:
    557
    Hey Eliot first of all very nice AI System and affordable also.Congratz.
    As I worked with ICE and Emerald AI I have some specific questions regarding your hub / copy paste idea.
    Since I am also coming from WoW AI based scripts some questions regarding Boss AI and templates are important for me right now:

    • You are talking about your Hub and Copy and paste features. For me that would be mostly the same, since you need to offer a template system and well later on a storage like Github somethin like that. Are you considering creating "templates" where everyone could share there Creature AI like lets say something like a Boss Illidan or also simply generic creatures like creatures_undead etc which can easily changed by other users? This would be really needed. In the WoW PServer scene there was the Scriptdev2 AI System which did exactly that. Here an example for the Azuregos script which is really easy and simple. I would have something like this in mind. Is this also your idea? https://github.com/scriptdev2/scriptdev2/blob/master/scripts/kalimdor/boss_azuregos.cpp.
    • I saw that you have Observer Checks like Health_Low etc. Can't you define exactly Health Percentnumbers? Like GetHealthPercent <= 40 or somethin like that? That would be pretty important if you ask be to being able to have more options and create different phases on different health.
    • What about random Attack Timers for skills. In the Azuregos script you see random cast timers somethin like 10-20 seconds. Is this possible with your system?
    • Do you also have Meele / Casting Range systems already implemented? Like mages which cast spells until the player is in meele range?
    • Does your system supports root motion and is there any networking support yet? Like Mirror?
    Ok thats for the beginning. Really interested to see what you have planed and if I understood your hub / copy paste idea right.

    Cheers
    Ronny
     
    Last edited: Oct 29, 2018
  38. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    Basically you just need to add Unit component on a character controller and if that Unit's team is different than your Agent's then that character controller will be treated as an enemy. How exactly Agents react to enemies is defined by their Behaviours.
    When Agents use a Skill to interact with their targets, they can invoke given methods by name using Unity's SendMessage() so you can send message about damage and pass Skill power as a parameter (which is done automatically).
    Code is needed only if there is some runtime initialization of objects like in UFPS. Code there helped to get around reconfiguring components and/or their parameters on Start.
     
  39. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    Hi Ronny,

    Regarding Eliot hub: In Eliot every Behaviour is stored in a separate file. It is not a script, it is a readable by human json file that contains all the necessary information about the Behaviour. So you can just apply downloaded file to your Agents and use it instantly. I want to make a place where enyone will be able to share their Behaviours along with the Skills that that Behaviours invoke and find what they need there for their projects.

    Skills are also stored in separate files and they describe a wide range of interactions, on any distance, with custom special effects, with invocation of animations on the caster (Legacy and Mecanim), with time settings, like delay, invokation time, cool down etc. It can be an instant interaction like a hit or a bullet or a fireball or it can be a channeled skill like breathing fire for some time. About randomness not sure but it is easy to implement, maybe will add to roadmap sometime.

    Health percent numbers are defined for each Agent separately in its Inspector, so you can apply same Behaviours to different Agents and they might behave differently and even use completely different pathfinding engines.

    I have not tested it with root motion yet. Definitely will look into it.
    Networking is definitely doable, as you just need to pass animations, position and FX prefabs to client to recreate events on server, but there is no native support of multiplayer plugins at the current version.
     
  40. ScourgeGames

    ScourgeGames

    Joined:
    Aug 22, 2017
    Posts:
    239

    Thanks. When I get through my learning time, I'll give it a whirl. I have a custom controller that I've built that I'd like to try it on. This might be a good subject for a future tutorial (perhaps a scene setup that uses the Standard Assets controller and receives/gives damage).


    I see the update up on the Asset store. Thanks for that. You are making great progress.
     
  41. RonnyDance

    RonnyDance

    Joined:
    Aug 17, 2015
    Posts:
    557
    JSon?!? Wow thats so much better than. The Hub would be really great. Like having a big place where everyone can share there easy or complex AIs, like mentioned before.
    Would be pretty cool to get more randomness to a boss fight for example. It's always pretty odd if the creature does the same stuff in fixed XX seconds or that on specific health. Random Phases or timers would be a great feature in my opinion.

    Ok just saw your prefedined "Health Full", "Health Half" etc variables. So I thought that it's not possible to say something like enrage when health <= 10%.

    I am planing to use ummorpg (which uses Mirror) with better AI solutions like yours for example. So Networking would be really important and cool. It does not have to come out of the box but anyway a tutorial or documentation would be great in the future.

    Two questions though:
    • Do you support animation on waypoint reach? Like letting a creature sit or talk when a waypoint is reached for specific time? Perhaps also adding a list of random animation if reaching a waypoint so the creature plays a random animation on waypoint reach with defined stay timer.
    • Is there a Animation Limit how many animations you can define for attack types? Or are the animations bound to a skill and for every skill I can define an animation besides normal meele attacking animations?

    Thanks so much for your time.
     
  42. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    Waypoints can change Agent's Behaviour at runtime. This way you can create sequences of different tasks for your Agents to make it not only play sit or talk, but also do quests.
    However, I have to admit that if you want to make them talk, such functionality is not included in Eliot 1.1. You would need to extend it with your own code or use some visual scripting system.


    You can create as many Skills as you wish and each Skill can make Agent play any given animation. Legacy or Macanim.
     
    Mark_01 and RonnyDance like this.
  43. cheesee09

    cheesee09

    Joined:
    Mar 30, 2018
    Posts:
    35
    Is it compatible with Invector third person controller?
     
  44. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    Hi @cheesee09,

    If Invector controller can receive damage by calling a method with a parameter, it would be very easy to integrate.
     
  45. cheesee09

    cheesee09

    Joined:
    Mar 30, 2018
    Posts:
    35
    Can you help me how to add that script? I'll post a code with the integration of emerald ai and Invector
     
  46. cheesee09

    cheesee09

    Joined:
    Mar 30, 2018
    Posts:
    35
    This code is used to make emerald si damage the Invector player

    public void DamagePlayer(){
    if (CurrentTarget != null && CurrentTarget.GetComponent<Invector.vCharacterController.vCharacter>())
    {
    var PlayerInput = CurrentTarget.GetComponent<Invector.vCharacterController.vMeleeCombatInput>();

    if (!PlayerInput.blockInput.GetButton())
    {
    var _Damage = new Invector.vDamage(CurrentDamageAmount);
    _Damage.sender = CurrentTarget;
    _Damage.hitPosition = CurrentTarget.position;
    CurrentTarget.GetComponent<Invector.vCharacterController.vCharacter>().TakeDamage(_Damage);
    }
    }
    }

    This is used for invector ranged attacks to damage emerald ai

    onCastCollider.Invoke(hitInfo);
    if (hitInfo.collider.gameObject.GetComponent<Emerald_AI>() != null){
    damage.damageValue = maxDamage;
    hitInfo.collider.gameObject.GetComponent<Emerald_AI> ().Damage (Random.Range(minDamage, maxDamage), Emerald_AI.TargetType.Player);
    }

    This is used for invector melee attacks to damage emerald ai

    onDamageHit.Invoke(hitInfo);
    if (hitInfo.targetCollider.gameObject.GetComponent<Emerald_AI> ()){
    hitInfo.targetCollider.gameObject.GetComponent<Emerald_AI> ().Damage (hitInfo.attackObject.damage.damageValue, Emerald_AI.TargetType.Player);
    }

    I'm not much of a coder can you help me integrate Eliot ai with the Invector controller?
     
  47. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    Select the Skill that your Agents use to attack the player. Find "On Apply Message To Target" field and set its value to "TakeDamage". This way Eliot Agents will invoke the method called TakeDamage on the target and will pass a random value between "Min Power" and "Max Power" as a parameter.
    upload_2018-11-17_6-52-13.png
    Make sure Eliot Agents can reach the player's collider.
     
  48. cheesee09

    cheesee09

    Joined:
    Mar 30, 2018
    Posts:
    35
    I'll try it but how can I damage Eliot ai using the Invector controller?
     
  49. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    163
    Just add the following code:
    if (hitInfo.collider.gameObject.GetComponent<Eliot.AgentComponents.Agent>() != null)
    {
    damage.damageValue = maxDamage;
    hitInfo.collider.gameObject.GetComponent<Eliot.AgentComponents.Agent>().Resources(Random.Range(minDamage, maxDamage));
    }

    right after
    onCastCollider.Invoke(hitInfo);
    if (hitInfo.collider.gameObject.GetComponent<Emerald_AI>() != null){
    damage.damageValue = maxDamage;
    hitInfo.collider.gameObject.GetComponent<Emerald_AI> ().Damage (Random.Range(minDamage, maxDamage), Emerald_AI.TargetType.Player);
    }
     
    Mark_01 likes this.
  50. witcher101

    witcher101

    Joined:
    Sep 9, 2015
    Posts:
    516
    Will this help to create a AI for 2.5d Beat emup sidescroller game. Can this be used without navmesh?? for 2d games