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

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!

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.

:star: FEATURES :star:

  • 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.

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

:star: ROADMAP :star:

  • 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!

This is truly an awesome asset. Really great for a first version. I’ll be back on here with some feedback and ideas soon.

Mobile Optimisation?FPS rate? 2D game support available?

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”.

2 Likes

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.

2 Likes

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?

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.

1 Like

Doing video tutorials of the written tutorials would be very helpful.

1 Like

Will you ever include A* navigation for situations where navmesh doesn’t fit?

Hi StevenPicard,
I am working on it at the moment :). Takes some time.
The first video is already available:

https://www.youtube.com/watch?v=dT0YqoII0BU

2 Likes

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*?

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?

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.

1 Like

Thanks but, unless I’m mistaken, that doesn’t work well with terrains.

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 :slight_smile:

3 Likes

Awesome news!

1 Like

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!

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.

Hi @ScourgeGames
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.

Question is there a cover and shoots action?