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

    BalazsJozsef

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

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

    eliot-ai

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

    Notso

    Joined:
    Oct 25, 2015
    Posts:
    18
    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
     
  4. eliot-ai

    eliot-ai

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

    Notso

    Joined:
    Oct 25, 2015
    Posts:
    18
    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
  6. Notso

    Notso

    Joined:
    Oct 25, 2015
    Posts:
    18
    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
  7. eliot-ai

    eliot-ai

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

    Notso

    Joined:
    Oct 25, 2015
    Posts:
    18
    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.
  9. SpyrosUn

    SpyrosUn

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

    Notso

    Joined:
    Oct 25, 2015
    Posts:
    18
  11. eliot-ai

    eliot-ai

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

    Notso

    Joined:
    Oct 25, 2015
    Posts:
    18


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

    eliot-ai

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

    Notso

    Joined:
    Oct 25, 2015
    Posts:
    18
    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)
     
  15. Censureret

    Censureret

    Joined:
    Jan 3, 2017
    Posts:
    215
    Hey guys. I am considering using the Eliot AI however I have a few questions:

    I am using the ootii motion controller and all of its packs i saw that there is an integration with this so my questions are as follow:

    1. How can I make sure that the agent (Eliot) can damage my character
    2. How do I affect agents (Eliot ai) with my spells and effects? (is that even possible) (these spells are used using ootiis spell pack
    I really hope that this is possible :)

    Thank you in advance
     
  16. Censureret

    Censureret

    Joined:
    Jan 3, 2017
    Posts:
    215
    Hey guys i am slo getting an error when trying to open the behaviour windows:

    upload_2019-7-13_16-12-29.png
     
  17. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    144
    Looks like some of the textures aren't imported properly or were damaged/moved after importing the project. Try reimporting the package.


    You can find instructions for this in the EliotIntegration.pdf document in the root folder. I haven't explored using the ottii's skills but I'm sure that's possible, however will definitely require some modifications to the code.
     
  18. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    144
    Hello everyone, hope you are doing well! Today I have an announcement for you. As you might have already known, I have been working on a new big update and I have been planning to finish working on it by the middle of July (today). A lot of what I've planned is complete but there are some major things that are yet to be done.

    So today I want to share the biggest changes/improvements that are already there. I'll start with the biggest one and it's probably the Utility Node. As many of you may have already heard of, there's this approach called "Utility AI" used to program NPCs for games and I am happy to announce that now you'll be able to make use of it.
    upload_2019-7-15_13-13-51.png
    (Note that this particular behaviour is for the display purposes only and doesn't make any sense in terms of real logic.)

    Next big feature is the ability to mix a finite state machine in the same graph. So now it's going to be a behaviour tree/graph, state machine and utility AI at the same time! :D
    upload_2019-7-15_13-17-46.png
    (again, no useful logic here, just for display purposes)

    The Agent inspector is made cleaner and there's no need to use all the components at the same time anymore
    upload_2019-7-15_13-25-47.png

    There are many more subtle changes to share but I don't want this post to get too long.

    Also I have two options regarding the deployment atm. The first one is to deploy what is currently there (after some testing and debugging) and to complete the other planned features in the follow-up updates. The second option is to deploy the update after all the changes and tests are done (this is going to take less time strategically but the update is going to be delayed significantly further).

    Please, share your thoughts and have a great day! :)
     
    psych77, Mark_01, Brian-Ryer and 3 others like this.
  19. Censureret

    Censureret

    Joined:
    Jan 3, 2017
    Posts:
    215
    Could this has something to do with the fact that i am using the HDRP?
     
  20. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    3,632
    @eliot-ai You mentioned some changes regarding use of Json. I was deep profiling the Tutorial 3 skeleton scene and I see regular spikes of 19ms due to some Json operations. If I duplicate the AI then there will be more spikes and much larger ones. Are you going to address these Json issues? I also see that there is a GC Alloc associated with these spikes of 126.9KB. Will you be reducing or eliminating these allocations? I'd like to give Eliot another try, but the performance and allocations are a killer and make it unusable.
     
    Subliminum likes this.
  21. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    144
    Json parsing will be abandoned completely with a single exception of converting the existing behaviours to the new format. All the other operations are going to be done by building the objects directly, without parsing the strings. Some allocation is inevitable since the objects that operate delegates need to be built from the visual representation and it needs to be done for all the agents. Throwing away json should make it a lot faster though.
     
    magique likes this.
  22. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    144
    Highly unlikely. It seems to have something to do with the assets which might be damaged or moved. I had an issue once with an asset that cleans the project automatically and it decided that the textures that Eliot uses in the editor are redundant so it deleted them. I had similar errors as a result of that. Simply reimporting the project solved everything.
     
  23. xoodZ

    xoodZ

    Joined:
    Jan 8, 2018
    Posts:
    11
    Hello!
    I think it is better to receive updates (new features) as soon as possible so that we (the developers) can use new things in our current projects. It will also help reduce the number of rework in the future and allow us to think about new things in advance.
     
    Subliminum and eliot-ai like this.
  24. SOSolacex

    SOSolacex

    Joined:
    Jan 10, 2018
    Posts:
    3
    I second that. If things might be unstable, you have a bigger amount of people testing things for you and whatnot as well.
     
    eliot-ai likes this.
  25. Devision4

    Devision4

    Joined:
    Jan 12, 2013
    Posts:
    1,310
    Hello, do you have a tutorial how the integration with GKC works??? thanks!
     
  26. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    144
    It is described in the "Eliot Integration" document that comes with the package. You can find it in the rest folder of the asset.
     
  27. bradbecker

    bradbecker

    Joined:
    Dec 26, 2014
    Posts:
    97
    did you end up releasing the Utility node? Also, how does that work? I'm assuming the node can lead to many different other nodes based on the decision/weighting in it.
     
  28. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    144
    I haven't released it yet, but it is a complete feature and it will be included in the next update which I am wrapping up. Utility node works by evaluating the current utility of 2 or more functions and activates the transition associated with the function with the highest utility. The functions are user defined and can be any c# methods that return a float.
     
    magique likes this.
  29. psych77

    psych77

    Joined:
    Mar 1, 2017
    Posts:
    51
    Having some issues with pooling and initiating AIs to game, these two referances seem to spike performance it alot.

    public static class CoresPool and :
    public static BehaviourCore GetCore

    Is there any way to improve this? Tried alot but with no luck :)
     
    Last edited: Aug 15, 2019
  30. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    144
    Hi psych77. I believe the reason for the spikes is parsing the json string to tokenise it and then build proper behaviour objects. I have improved it in the new version by getting rid of that extra json layer. The spikes should go down.
     
  31. xoodZ

    xoodZ

    Joined:
    Jan 8, 2018
    Posts:
    11
    Hello!
    I want to share my decision on how to transfer damage to my character (agent/Inert).
    1. The delegate and event added to the Resources.cs script:
            public delegate void OnDamageHandlers(int value);
    public event OnDamageHandlers DamageTaken;

    2. Added an event call to the method "public void Damage(int value)" to the Resources.cs script:
    DamageTaken?.Invoke(value);

    3. In my own script (PlayerController) I added method:
    public void DamageToPlayer(int power) {....myCurrentHP -= power;....}

    4. In my own script, I subscribe to an event this way (in method Start):
    GetComponent<Agent>().Resources.DamageTaken += DamageToPlayer;


    Eliot, please add such a solution to your Resources.cs class - this will allow all developers to process the damage of the main character from the eliot agents in their code. And with subsequent updates, we don’t need to add similar lines to your code.

    ps. When is planned an update? I setup 2 enemy npc characters (agent), and 23 other characters need to be set up. Given the separation of the agent component into separate blocks - will I need to reconfigure the characters?
    pps. sorry for my English ).
     
    eliot-ai likes this.
  32. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    144
    Thanks for sharing. I am planning to replace the resources component entirely and make it generic. So that one can add any number of different resources and affect them in a variety of ways. I will add delegates to it. BUT I will not include the new resources component into the following update. Otherwise it would take too long to complete the update. It has taken a lot of time already and of course, I want to share the complete piece of work as soon as possible. It is nearly complete. I had to redo many things from scratch so it isn't stable yet and I won't share an unstable version. The components will mostly stay the same, except for the perception which now just has a few more features like 2d raycasting and seeing without raycasting at all (based on distance). Therefore updating your agents shouldn't take too much effort.
     
    Subliminum, StevenPicard and xoodZ like this.
  33. bradbecker

    bradbecker

    Joined:
    Dec 26, 2014
    Posts:
    97
    @eliot-ai Are you going to beta test the new version or just release it to the store when you've tested it more? How close would you say you are?
     
  34. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    144
    Features to complete:
    - ability to reuse Agent object upon death instead of destroying it and instatiating a new one
    - update Unit Factory
    - backward compatibility
    - build the library for the new type of nodes (Utility)
    - integrations with third party assets
    I am beta testing it right now but it's a closed beta. It's not ready to get published yet. Also I'll have to update the manual and make new tutorials but I'll make that after making the beta public.
     
  35. SOSolacex

    SOSolacex

    Joined:
    Jan 10, 2018
    Posts:
    3
    Hey man! You've probably heard it a couple of times already, but it'd be great if you'd have a discord server. Would also be a great way of users of Eliot AI to help each other solve issues that doesn't necessarily require you so you can focus more on developing the asset.

    Aside from that, I am personally having some issues regarding mecanim animations where it just loops the Idle animation. I am not exactly sure how to shoot the trigger to change animation states in the animator.

    Either way, been having quite some fun with the asset. Thanks for your work.
     
    Subliminum likes this.
  36. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    144
    Hi SOSolacex! I will make the discord server as soon as I'm done working on the update. In case you're wondering about its progress, all the features are implemented and I am testing it out actively.
    Regarding the animations issue, you got to set up the transitions between the animation states so that they get activated when the triggers get shot. I suggest you start with this short tutorial from Unity. It features a transition based on float parameter but a trigger one is very similar, it should be easy to figure out the way to use that as well.
     
  37. Cartoon-Mania

    Cartoon-Mania

    Joined:
    Mar 23, 2015
    Posts:
    305
    I heard that you add utility ai. Do you intend to add demos like the Sims using Utility AI? I hope it contains simple actions like eating, sleeping, working and playing.
     
  38. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    144
    The next update that'll feature utility AI will be considered beta because I still need to add a few planned features like procedural attributes, like hunger etc. When that's ready, I'll make an example project with that. Probably I'll record making that and will make a tutorial out of it as well. By the way, I am planning to move the example project from the package to a discord channel.
     
    Subliminum likes this.
  39. p_hergott

    p_hergott

    Joined:
    May 7, 2018
    Posts:
    276
    Is there a node or action or something to give a dynamic waypoint at run time? Like eg. 5 meters behind target?

    When a AI. Attacks, is there a message or something to tap into easy? Im assuming there is a health component you can put on things to receive the damage? Such as the player, doors,
    Ect. Whats type of actions are in the playmaker integration (anyone have a screenshot?). How do AI detect their targets? Is it by tag or components? With having the team setting im guessing components that define identity?

    In one of the videos, it has a bool for can dodge. Is the dodging a calculated action or a animation that the AI plays? On AI receiving damage is there a option to play a hit animation? Videos just show push back. Is there a action for random event? Such as skeleton is going to attack, maybe he will attack will melee attack 1, or maybe he will attack with melee attack 2?

    Oh and, the spawn i. Waypoint thing, shown in video, mass spawning... in run time, is it set up that the spawn is disabled until you call it to spawn? Such as the player is close enough.
     
    Last edited: Sep 17, 2019
  40. p_hergott

    p_hergott

    Joined:
    May 7, 2018
    Posts:
    276
  41. eliot-ai

    eliot-ai

    Joined:
    Oct 3, 2018
    Posts:
    144
    There's no node for that but you can do that with a few nodes together or you can create your own node. Getting behind the target would require some additional set up but here's an example of keeping the same distance from a target:
    upload_2019-9-20_8-24-49.png

    There's a resources component that has health and energy and it works together with motion and animation components.

    upload_2019-9-20_8-37-44.png
    It is basically what you need to get your player or another AI implemented with PlayMaker interact with Eliot agents.

    Agents have perception and they see all the objects that have Unit component on them. Perception works by casting rays but in the new version a range perception will also be available. Teams define relationships between agents or objects. E.g. different teams are enemies, same team is friends. However you can set up friendly teams.

    Dodging is calculated.

    Yes

    You can use probability on the transitions to achieve that

    It is set to spawn all the time, but it's a good idea for the future updates
     
  42. p_hergott

    p_hergott

    Joined:
    May 7, 2018
    Posts:
    276
    Right On Thanks
     
  43. p_hergott

    p_hergott

    Joined:
    May 7, 2018
    Posts:
    276
    I cant seem to get projectiles to work right, It shoots, all good. but the accuracy of the shot is horrendous. probably some little thing im missing.... the missiles arc upwards and slowly coming down and go about 100 units away, when the target is like 10 feet away. Nm i figured most of it out, still is there a way to control the accuracy at all? Like if a gun shoots for example, a noise system for bullet projection?
     
    Last edited: Sep 21, 2019
  44. p_hergott

    p_hergott

    Joined:
    May 7, 2018
    Posts:
    276
    So playing with eliot, my initial thoughts, seems like a toy version of node canvas or behavior designer. Which granted eliot isn't as powerful, but behavior designer and node canvas do more than just ai, but after playing with it, Elliot is a pretty powerful little system. It doesn't have the ease as a system like emerald ai, but its very flexible, so thats a huge benefit. Its still fairly easy to set up though. The thing that i really find is done very well, is the behavior editor. Its very simplified, easy to read easy to do, yet powerful. Its actual fun designing AI with it. Being a younger AI system for unity it lacks some of the advance nodes that would be great to have in the future. Id love to seem some tactical nodes like, target position off set. To have ai be able to attack from behind, or flank. And a node to evaluate the number of enemies in close vicinity. Able to send messages to allies (which can be done with skills mind you). A option to configure the stats and number of stats would be cool. Being able to view the AIs graph during play time would be nice for debugging. Having the set the animator up manually is nice, little more work, but it adds a whole level of variety and flexibility. The message system used to apply damage i love, makes it very versatile. And i from what ive played with, a reliable system. Which is awesome. Overall, i think eliot is a really good AI system.
    So i hope to see some advanced nodes in the future, tactical, mainly.
     
  45. p_hergott

    p_hergott

    Joined:
    May 7, 2018
    Posts:
    276
    The concept of the ai inventory is pretty cool. Is there a way to have the AI pick a better weapon, for the situation? Like melee vs ranged? AoE if there is a larger number of enemies nearby.
     
  46. Subliminum

    Subliminum

    Joined:
    Nov 9, 2017
    Posts:
    94
    What do you mean by "a noise system for bullet projection"?

    In my opinion this system is better then Emerald AI, its more extensible and has more features...with some UI/Editor improvements that are planned, a more streamlined approach to Agents and engine reworking, hopefully we can change your opinion on the versatility and performance of this system :)

    As far as tactical nodes, i would absolutely love to expand the demo examples that come with this Framework to include more group orientated behaviors. Tactical behaviors like flanking, taking cover, strategic battle goals (ie: defend xLocation until zConditions are met, then retreat to yLocation unless attackers have taken it over etc.), skirmish evaluation (risk/priority) can be built with this system but are not included yet. With the addition of the upcoming Utility node, creating advanced behaviors like this will be fun and reasonably achievable for most users. If we're lucky, we might be able to include them in the upcoming or future update...depending on how many users are looking for this feature specifically.

    There is a SeeBetterWeapon node included with the current package. Depending on how you want to evaluate the usefulness of weapons, it may need to be modified. For example; should the Agent prioritize damage > range or weapon integrity > damage?
    A few of the elements involved in this process are being updated currently by the developer, so when the new update hits the Unity Store, how you can address these issues may be approached differently. There isn't a built in battle/skirmish evaluation feature would determine something like 'AoE if there is a larger number of enemies nearby.'
    At the moment i recommend taking a look at how the current node works with the system and modifying it or creating a variant node depending on what you want to do.

    All the best!,

    Subliminum.
     
  47. p_hergott

    p_hergott

    Joined:
    May 7, 2018
    Posts:
    276
    The noise on projectiles, just to add a touch of controllable randomness. If i tell a AI to shoot right now, he is very accurate. Would be nice to see the bullets veer off to the left right up or down just a little, each bullet. Giving the projectile a “spread”. I believe there is a plan to change perception to a range style instead of the raycast, which is great, recast can be costly on cpu. And in reality right now the veiw is only really functional if the terrain is flat.
     
    StevenPicard likes this.
  48. Subliminum

    Subliminum

    Joined:
    Nov 9, 2017
    Posts:
    94
    The perception component is being updated with 2D/3D variants that can be extended and customized as needed. Ray-casting is arguably the most effective technique for an AI to determine what its surroundings are. Ideally, the update will come with different modules/approaches to perception.
    For example, in my modified Eliot version, i use a Physics Overlap Sphere to determine all the nearby entities that an agent can interact with. Raycasts are done to determine the visibility of the target, before they are added to the Agents memory and tracked until lost. This works well on multi-height levels or terrains.

    Regarding projectile "noise," i would add a random vector or offset when the projectiles are instantiated, depending on what types of controls you want to have(eg; which weapons are effected and by how much, shotgun pellets generation etc) Features like these are not directly AI related and depend a lot on the type of game you're trying to make.
     
  49. p_hergott

    p_hergott

    Joined:
    May 7, 2018
    Posts:
    276
    idk, running profile on AI the highest cost, by far, is the raycasting. from what I see. but idk. don't get me wrong, its fun creating AI with this system no doubt, probably one of my favorites at the moment. im just hoping to see some... enhancements. optimization is a big thing for like, everyone. so options are great, when a AI is instantiated, there is a major FPS drop, on the method of Agent Start. but I believe that has already been notified and plans are in place I believe? for the noise, its a small easy option to add. the best part of this AI system, is how flexible it is, and how versatile it is. skipping over little things like noise on the projectile may seem little, insignificant, can be added by anyone. but its those little things, that would take this AI well beyond others. imo.
     
  50. Subliminum

    Subliminum

    Joined:
    Nov 9, 2017
    Posts:
    94
    Ah, i understand more what you mean regarding the raycasting now. The way that the raycasts are used needs to be optimized further. Partly why the performance hit is so bad is that the raycasting should be happening asynchronously, that way if you have 40 agents, they aren't all performing their ray casts simultaneously. On top of that further reducing the number of needed raycasts will increase efficiency tremendously whilst still retaining the most accurate environment data. At the moment some features of the perception/memory component do not scale well and needs to be addressed.

    The poor performance when instantiating Agents has been mainly fixed already and will be present in the upcoming update.
    I doubt that the projectile control/system will be updated much in the main package anytime soon, so when the Discord goes public I'd be happy to help you out through there. Otherwise you can contact me at benjamin.erwin@subliminumindustries.com with more detailed information on what you are aiming for and we can try and come up with a solution :)