Search Unity

Apex Utility AI

Discussion in 'Assets and Asset Store' started by Apex Game Tools, Dec 22, 2015.

  1. Geminior

    Geminior

    Joined:
    Feb 12, 2014
    Posts:
    322
    I am not sure what the point of your post is, however we are more than happy to provide answers to any questions you may have about Apex Utility AI.
    I would recommend that you visit the forums instead of this thread.
     
  2. vertigostudios

    vertigostudios

    Joined:
    Oct 1, 2012
    Posts:
    101
    Hi guys, Ive just downloaded the RTS demo to try out. When importing into unity I get the following error :

    Assets/RTS Demo/Demo/Scripts/AI/Unit/Workers/SetBestResourceTarget.cs(4,16): error CS0234: The type or namespace name `AI' does not exist in the namespace `Apex'. Are you missing an assembly reference?

    Could you please explain to me how I'm able to correct the issue.

     
  3. Geminior

    Geminior

    Joined:
    Feb 12, 2014
    Posts:
    322
    You need to import the Apex Utility AI into the project.
     
  4. Sovogal

    Sovogal

    Joined:
    Oct 15, 2016
    Posts:
    100
    Got a quick question about a use-case:

    I have an AI that's determining the best target for an AI to attack. So far so good. I use an ActionWithOptions taking an Entity class using a few OptionScorerBase<EntityBase> classes to determine the entity's proximity to self, proximity to allies, health, etcetera.

    One of the options is an AbilityExpedienceScorer. This examines the AI's abilities and scores them based on things like availability, resource cost, and range. So I have all of this logic inside of a single OptionScorerBase. Seems to work decently enough. However, I will be repeating much of this logic in the ActivateBestAttack action, which I imagine will be another ActionWithOptions using OptionScorerBase<Ability> to check all of these ability-specific values again.

    I feel like one of two things is going on here.

    1) I'm mis-using the framework.
    2) The framework is missing some kind of sub-OptionScorer which an option scorer could use to GetBest of sub values.

    Could you please advise? And thanks for taking the time!
     
  5. Rami_Ahmed

    Rami_Ahmed

    Joined:
    Apr 14, 2016
    Posts:
    25
    Hi Sovogal,

    Thanks for your post.

    As far as I understand, you basically have two different ActionWithOptions with different option types, but you would like to re-use logic in both option scorers (of different types). Please correct me if I misunderstood.

    There are quite a few ways of achieving this using standard coding principles, which I can think of.

    The most obvious and simple suggestion would be to implement the desired functionality through a function in the Context object. E.g. a function that takes an 'Ability' and returns the calculated/evaluated score. Assuming the same Context object is used in both instances, the two Action(WithOption)s can simply call that same method, passing the relevant data in (perhaps even the Context object itself, if need be).

    Another option is to provide a reference to a unit class or interface through the context, e.g. an IUnit reference in the Context could have a method similar to the aforementioned, e.g. taking an 'Ability' and returning a calculated score. Again, assuming the same context object, both actions can call that same method through the "unit" reference.

    A different option is to go with a static helper method, perhaps even in the form of an extension method. Since static functionality can always be invoked in C#, a static method would take the necessary parameters and then return a score. Thus avoiding code repetition. Such a static method could be an extension method for nicer code readability. The ActionWithOptions class itself could be extended, since it is just a normal C# class, or e.g. the Context object could be extended.

    You could also re-think your approach entirely. While your current approach is completely fine, you could also have gone with a more modularized option-scorer approach. Rather than having a single "AbilityExpedienceScorer" which does everything, you can split up its calculations into multiple option scorers, which operate on the same data type, e.g. 'Ability' in this case. If you still need two different data types for your option scorers, but they share some traits, you can use abstraction in the form of a common base-class or interface.

    I hope this provides some guidance in regards to solving your use-case.

    For the future I recommend posting on our forums or sending a mail to our support email, since we are usually faster at responding through those channels, compared to this thread.
     
  6. Sovogal

    Sovogal

    Joined:
    Oct 15, 2016
    Posts:
    100
    Thanks for your reply, Rami. I did end up simply encapsulating the re-used scorers in a static class. Kind of a repository pattern. It's not something I'm crazy about, but coming from 20 years of web development, it's what I know.

    I'm curious how you might implement your re-thought approach, as I'd love to use the framework to achieve this result rather than writing custom scoring wrappers. I'm trying to work through it logically, but I can't see how I can get away with option scoring abilities inside an option scorer for entities without writing custom code to express this new type option scorer.

    I wrote up some suggestions and posted it on the Apex forums prior to writing this, so one of those suggestions may be moot.
     
  7. basmith

    basmith

    Joined:
    Nov 10, 2011
    Posts:
    17
    Hi - are there any public plans or a roadmap for PS4, XBox and WiiU/NX support?
     
  8. Rami_Ahmed

    Rami_Ahmed

    Joined:
    Apr 14, 2016
    Posts:
    25
    Hey @Sovogal

    Happy to hear that you found a way to deal with your situation.

    A simple example of the last approach I mentioned would be e.g. to implement an interface on entities and on abilities, which exposes the needed properties and methods. I imagine in this example that entities posses abilities, in which case the entities could theoretically just pass methods and properties on to e.g. the correct type of ability, and the ability would simply expose the methods it already has.

    This may sound a bit abstract, but it really is not. You can simply utilize normal C# inheritance to share common implementations, or common declarations (interfaces), in order to be able to treat different types equally. This approach can also be applied to context objects.

    Hope that clarified a bit, otherwise feel free to make a post on our forums or send us a support email.
     
  9. Rami_Ahmed

    Rami_Ahmed

    Joined:
    Apr 14, 2016
    Posts:
    25
    Hey @basmith

    Thanks for your post.

    Although untested, as far as we know, Apex Utility AI supports PS4. Please let us know if this is not the case.

    In regards to Wii U/NX - I honestly don't know. They are not platforms that we have tested on explicitely, but the general assumption is that Unity should ensure that most functionality works similarly across all platforms. Again, if you find that one or more of our products do not support a platform, please let us know.

    There is no Xbox support for Apex Utility AI, currently, however.
     
  10. EvilGremlin

    EvilGremlin

    Joined:
    Aug 12, 2016
    Posts:
    231
    So I have been silently watching this thread forever it feels like. I was just about to settle on behavior designer for my ai then I thought I would come back and check Apex again. With the non-sub personal edition you have made at least one more sale. I'll have to wait until after Christmas, but I just wanted to post letting you know. I would also be interested in a procedural animation system.
     
  11. EvilGremlin

    EvilGremlin

    Joined:
    Aug 12, 2016
    Posts:
    231
    I would think an FPS template for UFPS would sell like the last bottle of water in the Sahara. Just a thought.
     
  12. Rami_Ahmed

    Rami_Ahmed

    Joined:
    Apr 14, 2016
    Posts:
    25
    Hi @EvilGremlin

    Happy to hear that you decided to give Apex Utility AI a go! I hope you will enjoy using it for many years to come.

    Remember to check out our quite extensive documentation for the Apex Utility AI, when you get to the relevant point, and feel free to browse or post on our forums when you face challenges.

    Also, thanks for the suggestion for a FPS demo based on UFPS, I have logged this in our backlog. However, I cannot say for sure when or even if such a demo will see the light of day.
     
  13. Nition

    Nition

    Joined:
    Jul 4, 2012
    Posts:
    781
    Hi guys, just thought I'd report a couple of small errors in the tutorial code.

    From this page: http://apexgametools.com/learn/apex...arted/apex-utility-ai-getting-started-demo-01

    Code (CSharp):
    1. public override float Score(AINavMeshContext context)
    2. {
    3.     if (context.navAgent.velocity.sqrMagnitude > 0f && navAgent.hasPath)
    4.     {
    5.         return 0f;
    6.     }
    7.     return this.score;
    8. }
    Score can't be passed an implementer of IAIContext directly - the context passed in needs to be an IAIContext, then cast later to AINavMeshContext. Secondly, the second use of navAgent is missing context.

    The next piece of code on the page has the same issue with the input parameter.

    Actually, is there any reason why you couldn't let ActionBase take a generic parameter where T : IAIContext, so subclasses could do code like the above and we wouldn't need to cast?
     
    Last edited: Dec 6, 2016
  14. Rami_Ahmed

    Rami_Ahmed

    Joined:
    Apr 14, 2016
    Posts:
    25
    Hi @Nition

    Thanks for posting and thank you for the feedback!

    Actually, if you download the Getting Started demo project, you will notice that we do in fact have an ActionBase<T>, which is the base class actually utilized in the Getting Started demos, since we thought this would be simpler for users to utilize and understand. So that is no error.

    The error with the missing context for navAgent is correct. Thank you. It was an unfortunate typo when setting up the documentation pages. I apologize for the inconvenience, it has been fixed now.
     
  15. Nition

    Nition

    Joined:
    Jul 4, 2012
    Posts:
    781
    Ah, there is an ActionBase<T>! Sorry, I obviously didn't check very well. I was just looking at the example project zip that comes with Apex and those ones are all cast.

    It might be helpful if that tutorial page showed the whole class rather than just the Execute method. It doesn't say what the class should look like which is why I ended up copying the example zip.
     
    Last edited: Dec 6, 2016
  16. Rami_Ahmed

    Rami_Ahmed

    Joined:
    Apr 14, 2016
    Posts:
    25
    Hi @Nition

    Thank you for the suggestion, we will update the tutorials as soon as possible with full classes.

    The Getting Started demos are a separate project, so you do not get them as a part of the Apex Utility AI itself.
     
  17. Nition

    Nition

    Joined:
    Jul 4, 2012
    Posts:
    781
    Yeah, there is a zipped project that comes with the base Apex import though, in Apex AI Examples and Tutorials Project.zip. That's just the first thing I was looking at.

    Hey, that's minor stuff though. Apex is great. I've found it really easy to work with especially in comparison to Behaviour Tree-based AI. Managed to get what I wanted up and running very quickly with no issues, seems like a great product.
     
  18. Rami_Ahmed

    Rami_Ahmed

    Joined:
    Apr 14, 2016
    Posts:
    25
    Thanks for the positive critique @Nition

    I hope you will enjoy using our products for many years to come.
     
  19. Cartoon-Mania

    Cartoon-Mania

    Joined:
    Mar 23, 2015
    Posts:
    320
    I know Apex stop the sims-like-demo-project

    By the way, you are talking about Planned Example Tutorials on the homepage.

    Dynamic Game Worlds with Apex Utility AI

    I'm not pushing, I just want to know.

    Is this project going on?

    If so, when you can release it?
     
  20. Rami_Ahmed

    Rami_Ahmed

    Joined:
    Apr 14, 2016
    Posts:
    25
    Hi @Cartoon-Mania

    Thanks for your post and interest.

    The 'Dynamic Game Worlds' planned example tutorial is not currently in development. While it is still planned, I cannot say when it will be released, but at least not in the near future.

    In the meantime, I refer to the other demos we have released: Survival Shooter (with and without Apex Path), RTS demo and Getting Started.
     
  21. MehO

    MehO

    Joined:
    Apr 23, 2016
    Posts:
    16
    Hi guys, it's been a few months since my last visit on this topic.

    It seems like a lot of people who still wonder if they're gonna buy or not, expect UtilityAI to be a magical plug-and-play or drag'n'drop AI...

    You should see it more as what it really is : a design pattern which helps you implement a strong decision-making process for your AI, in a clean and efficient way. On top of that, the UtilityAI library provided here by ApexGameTools comes with a visual interface to ease the building and debuging phases, and some useful core classes already set to get you jumpstarted even more quickly. So you could consider it as a framework, a foundation for your work.

    But be advised you still have to know how to code. The AI won't build itself !
    Well in fact you're lucky because the demos are shipped with a goldmine of good programming examples ready to copy-paste, if you still have no clue where to begin.

    At this point if you still have doubts on how to work with the ApexGameTools UtilityAI, please check their videos on Youtube and their documentation, it should answer all your pre-sale questions. At least each one I saw in this topic.

    Hope that helped.
     
    Last edited: Dec 19, 2016
  22. Rami_Ahmed

    Rami_Ahmed

    Joined:
    Apr 14, 2016
    Posts:
    25
    Hi MehO,

    Thanks a lot for your kind words!

    You are exactly correct in that Apex Utility AI is a foundation upon which to build a decision making process based on the Utility AI Theory.

    It is meant for programmers. Not necessarily very experienced or talented programmers, it is supposed to be usable by developers starting out with programming. This is especially facilitated through our demo projects (see my previous post for links), which provide a collection of AI classes which can be used as-is or with minor adjustments (e.g. changing Context type).
     
  23. MehO

    MehO

    Joined:
    Apr 23, 2016
    Posts:
    16
    My post was a little scary but you're right, I forgot to mention that most of the time Actions and Scorers are straightforward, modular, and thus easy to understand/re-use/expand. Usually you write less than 50 lines of code for each, and some are as simple as 3 to 5 lines.

    One more note for those wondering if it's gonna work with their game or not. Well, it's C# script so basically, once the decision-making is done, you can call any method in your game. So yeah you can plug the AI to whatever script you already done.
    Code (CSharp):
    1. Player. Move();
    2. Enemy.ReceiveDamage();
    3. // or work with your NavMesh...
    4. // or update scores...
    5. // and so on.... ANYTHING
    I won't explain further as you can see that in videos and doc, just pointing it out here to reassure people.

    @Rami_Ahmed and others at Apex, you often ask how you could improve the docs. In my opinion there's plenty and more than enough to begin and even go beyond. However the problem seems to be how people find the getting started docs, rather than how many there are or what they cover.

    Hope that helps.
     
  24. basmith

    basmith

    Joined:
    Nov 10, 2011
    Posts:
    17
    Hi - thanks for the response. Can you expand on this slightly? Is there a blocking issue that prevents it from working, or can it be supported with some amount of work?

    Is source available such that I could get it up and running (depending on the issue of course)?

    Cheers.
     
  25. Cartoon-Mania

    Cartoon-Mania

    Joined:
    Mar 23, 2015
    Posts:
    320
    I studied for a long time. And I could understand a bit about this tool.

    Honestly, this tool is really hard, compared to other assets.

    In fact, APEX Utility AI is not difficult.

    The problem is the utility AI itself.

    Utility AI is just a tool.

    But it's hard to actually apply it to games.

    Utility AI is a game development philosophy.

    You should approach design rather than technology.

    So it is not suitable for simple action game AI.

    Good for complex AI like the Sims.

    Here is the problem.

    Honestly, who can make a Sims-like AI?

    APEX had to provide AI examples like the Sims.

    It was a good guide and would have shown the power of utility AI.

    Utility AI is just one tool.

    If you are a great and excellent programmer, you can make the best AI with the help of APEX Utility.

    But it is not recommended for beginners. Until they show an example like The Sims.

    Beginners like me can modify it if they show us a good example.

    In fact, good programmers will find it difficult to use them properly. Utility AI must understand the very profound game design philosophy.
     
  26. Nition

    Nition

    Joined:
    Jul 4, 2012
    Posts:
    781
    I have to disagree with the previous post here. I'm what I'd call an intermediate programmer but I hadn't done any AI work before apart from some stuff a long time ago with basic state machines. I tried out a behaviour tree asset (Behaviour Designer) and Apex Utility AI and found Apex a lot more intuitive to work with. I set up a little city experiment and had characters and cops walking to random destinations, with characters fleeing cops when they saw them, within a day or so of work.

    A basic Sims-like AI is definitely doable with utility AI. It'd require coding a bunch of custom actions, but so would any other AI that doesn't exactly match the examples really. I'm thinking just something like looking at all their desires (hunger, social etc), scoring them, and acting on the highest scoring one (find a path to the closest thing that'd help).

    Re Apex/Utility AI not being suitable for simple action games, check out the survival shooter demo they released. It's a pretty nice simple example of an action game AI.

    Being a framework much more than a complete solution, Apex definitely requires a bunch of programming though, I agree with that. But I don't think you'd ever find a solution for a Sims-like game that didn't require a lot of custom work unless it was highly targeted specifically at that genre. There are just too many things that you might want AI to do and too many different ways to set things up. So you've just got to think a lot about what exactly your AI needs to do, starting simple, and try coding it up.
     
    Last edited: Jan 11, 2017
  27. Alex-3D

    Alex-3D

    Joined:
    May 21, 2013
    Posts:
    79
    I've downloaded trial version from the site. Console permanently shows a lot of error messages like

    ArgumentOutOfRangeException: Argument is out of range.
    Parameter name: index
    System.Collections.Generic.List`1[UnityEditor.EditorWindow].get_Item (Int32 index) (at /Users/builduser/buildslave/mono/build/mcs/class/corlib/System.Collections.Generic/List.cs:633)
    UnityEditor.DockArea.OnGUI () (at C:/buildslave/unity/build/Editor/Mono/GUI/DockArea.cs:332)

    Unity 5.5.0p1 (64 bit)
     
  28. Rami_Ahmed

    Rami_Ahmed

    Joined:
    Apr 14, 2016
    Posts:
    25
    Hi guys,

    @MehO Thank you for the elaboration and advice for others. We appreciate it! I agree with your notion that finding our docs has been the issue for some, rather than the docs themselves. Recently we have tried to make the docs easier to find by including them in the navbar menus & on the 'learning' page for the Utility AI on our website. We hope that this will help and make it easier to find our portfolio of documentation.

    @basmith The reason why Apex Utility AI does not support Xbox currently, is due to the use of certain Reflection libraries which are not supported by Xbox inherently. It is certainly something which can be added, however our standard licensing models do not provide you with source code. You will need to contact us specifically if you need source code access. Therefore, you would not easily be able to support the Xbox platform on your own currently. However, if this is a priority for you, please contact us and we can discuss how to work out a solution.

    @Cartoon-Mania As always, we thank you for taking the time to provide your feedback. We always appreciate receiving feedback. We know that you really wanted the 'Sims-like demo' and you have been requesting it for a while. Unfortunately, we cannot provide this demo in the near future, and I cannot say when or even if we will get around to releasing such a demo. However, as I have mentioned for you previously, we can help you with guidance and/or consultancy if that is desirable.

    @Nition Thank you for your feedback and elaborations. I completely agree with you and the impression you have matches what we think ourselves. For some, Utility AI as a concept may be challenging to grasp. We found however that as soon as the concept is understood, it can be very easy and powerful to work with.

    @Alex-3D Thanks for reporting your issue. First of, I want to mention that we recommend contacting us through our forums or our support mail, since we can provide much more rapid reponses through those channels. Secondly, the error you are seeing does not appear to be related to Apex Utility AI, are you sure that Apex code is the culprit? Also, is it a recurring error or something that you get e.g. when Unity starts?
     
  29. MehO

    MehO

    Joined:
    Apr 23, 2016
    Posts:
    16
    Yep looks like your usual C# issue.
    Code is trying to access an element outside of the range of a list. Maybe make sure you put things in the list before working with them, or check if not empty/null at that index before executing instructions.
     
  30. T2RKUS

    T2RKUS

    Joined:
    Jul 13, 2015
    Posts:
    4
    Is Apex Utility AI dependent upon the Unity3d classes or is it just the editor DLL which contains the bindings/wrapping to hook into Unity meaning I can run it on a server as well without unity in a pure C# project?
     
  31. Rami_Ahmed

    Rami_Ahmed

    Joined:
    Apr 14, 2016
    Posts:
    25
    Hi @T2RKUS

    Thank you for your interest in Apex Utility AI.

    Apex Utility AI can be said to consist of two parts: An AI engine for executing Utility AI Clients, and an AI Editor for designing, tweaking and debugging AIs.

    The AI Editor is tighly coupled with Unity, so it cannot work outside of Unity without basically a complete rewrite.

    The AI Engine however is roughly speaking only tightly coupled with C#/.NET. However, there are a few parts included in the DLLs that rely on Unity types, e.g. MonoBehaviour. Additionally, the provided Utility AI Client components rely on the Apex Load Balancer, which in turn relies on Unity. However, with access to the source code these Unity-specific parts could be taken out of the codebase. We don't have a complete overview of exactly where code would need to be rewritten or removed, and in-depth support in this regard for free is out of scope, but it definitely is not a majority of the AI Engine codebase. The last 'but' is that Apex Utility AI is not normally sold as a source-code asset currently. You can of course purchase it as such, but you will need to contact us directly (support{at}apexgametools{dot}com) and work out an exclusive deal.
     
  32. peresumko

    peresumko

    Joined:
    Feb 9, 2017
    Posts:
    1
    I've tried this (https://theldoctor.github.io/CrystalAI/) for my game and it works well. Problem is the license is GPL but I talked with author and he said that a comercial version will be available at the store soon.
     
  33. noanoa

    noanoa

    Joined:
    Apr 17, 2014
    Posts:
    225
    I'm using the trial version right now. A very promising asset but could you possibly add a button or context menu to items(Qualifier, Selector, Action) on the AI editor/inspector to directly open/select the script a selected item refers to? It is awkward to search for the referred script every time I have to modify.
     
    Last edited: Feb 9, 2017
  34. noanoa

    noanoa

    Joined:
    Apr 17, 2014
    Posts:
    225
    Also the manual says you could make youry own implementation of UtilityAiClient but it seems the framework exposes so little that you can't do anything with it. It would be nice if you can get/add/remove/execute AIs from script.
     
  35. Rami_Ahmed

    Rami_Ahmed

    Joined:
    Apr 14, 2016
    Posts:
    25
    Hi @noanoa

    Thanks for posting.

    The suggestion to open associated script file has been given before - and while we do agree that it would be a nice feature, it is no trivial task to implement due to the way that the framework works. So we have a task in our backlog to implement such a feature, but I cannot say when or if it will be implemented in a future update.

    If you do implement your own UtilityAIClient, you can expose special methods to get, add, remove, execute or any other feature you might want. The default provided UtilityAIComponent and LoadBalancedUtilityAIClient are limited to certain use-cases.

    However, you can actually get clients from the UtilityAIComponent, you can pause, start, and execute AIs as well. There is a 'clients' property for getting clients, as well as a GetClient method. Pause and Resume methods, and an extension method for Executing an arbitrary AI from the AI ID. See the following signature definition (abbreviated):

    Code (csharp):
    1.  
    2.   public class UtilityAIComponent : ExtendedMonoBehaviour
    3.     {
    4.         //     Gets all the AI clients.
    5.         public IUtilityAIClient[] clients { get; }
    6.  
    7.         //     Gets the actual AI client for a specific AI.
    8.         public IUtilityAIClient GetClient(Guid aiId);
    9.  
    10.         //     Pauses all AI clients.
    11.         public void Pause();
    12.  
    13.         //     Resumes all previously paused AI clients.
    14.         public void Resume();
    15.     }
    16.  
     
  36. noanoa

    noanoa

    Joined:
    Apr 17, 2014
    Posts:
    225
    Thank you for the response. By looking at it I noticed I had actually misunderstood that UtilityAIClient would hold multiple UtilityAI. Simply having a list of derived clients would solve my case.
     
  37. Fera_KM

    Fera_KM

    Joined:
    Nov 7, 2013
    Posts:
    307
    Hey,

    How did it go with the Playmaker integration?

    What I'm actually asking is, if there is any way, at all, for apex utility can talk to playmaker and vice versa.
    Get/Set Variable, send event, etc...
     
  38. Rami_Ahmed

    Rami_Ahmed

    Joined:
    Apr 14, 2016
    Posts:
    25
    Hi @Kemonono

    Thanks for posting.

    There is no news currently on Playmaker integration. It is not something that we will be providing in the near future. It is however in our backlog as a task for the future, but obviously I cannot say when or if it will be realized.
     
  39. mikeNspired

    mikeNspired

    Joined:
    Jan 13, 2016
    Posts:
    82
    (First off I am a lead unity developer/computer scientist as my day job, just to show that I do know how to code....not expecting this to magically work)

    I am coming from creating AI in Unreal with visual behavior trees so I am looking for a tool to create AI in Unity. I bought IceCreatureControl thinking it was something it was not....but what I am looking for in this is just a tool to help me create AI more quickly, cleaner, and be easily debugged. I am sure we all know how difficult debugging AI can be.

    I want to create Darksouls/Zelda type AI for melee combat. Guarding, blocking, strafing, crowd control. Is this a tool to do the job? Or is it geared towards something else. I didnt feel your into videos did justice to what this tool actually is, maybe I should watch your keynote I think you guys did. Thanks!
     
  40. Rami_Ahmed

    Rami_Ahmed

    Joined:
    Apr 14, 2016
    Posts:
    25
    Hi @mikeNspired

    Thank you for your post.

    The Apex Utility AI is a completely generic and any-purpose tool for Utility-based decision making in Unity. You can use it for any type of decision making, including any melee combat you can dream up.

    Basically, the only limitation is your own coding skills and AI designing skills.

    It is however important to note that the Apex Utility AI does not 'give' you an AI, it is an engine and editor for executing, debugging and designing AIs, but the actual implementation of AI decision making is up to you.

    We do provide a range of demo projects for free on the Asset Store, but since you say that you know how to code they may not be necessary for you to utilize.

    Personally, I would say that it sounds to me like the Apex Utility AI could be exactly what you are looking for. We do provide a free one month trial, so you can even try it out, with no strings attached, before deciding whether to purchase it or not.
     
  41. giraffe1

    giraffe1

    Joined:
    Nov 1, 2014
    Posts:
    302
    Is there going to be any more updates for this asset beyond bug fixes?

    Haven't seen or heard any news on anything for a while. No new videos, example scenes or new features in the works.

    There were some good suggestions for features on the apex forum but seems like nothing panned out.
     
  42. Geminior

    Geminior

    Joined:
    Feb 12, 2014
    Posts:
    322
    We currently have no planned releases.
    All suggested features have been logged, but we have not had the time to address any of them so far.
     
  43. jabevan

    jabevan

    Joined:
    Apr 2, 2016
    Posts:
    72
    I've been trying to figure out exactly what Apex Utility AI is and was going to ask (given @Geminior 's last post and that the website itself is incomplete with "This is an Feature List Item that is part of an Feature List. Notice the connector between the three graphics to show that they are related." for every feature) whether this product has been abandoned, but noticed you just pushed an update yesterday.

    Apex Utility AI sounds amazing, but the consensus seems that it is not for newbie programmers and absolutely not for non-programmers - despite the node based editor. There's also been a lot of frustration voiced about documentation and incomplete tutorials.

    This is why that concerns me. I've just spent dozens and dozens of wrist cuttingly frustrating hours trying and failing at another AI system until I got a very basic group of characters moving together as a herd (nothing else, no other triggers, missions, or goals) only to find that the AI system completely saturates the CPU and GPU with only a few dozen characters. Even optimization doesn't make it remotely usable in a game.

    So now I'm looking at Apex Utility AI, which seems like a well developed product, but I can't be really sure, and the feedback about the "onboarding experience" (if you will) seems on the poor side with a consensus seeming that it's very difficult. That sounds to me like dozens more wrist cuttingly frustrating hours just to determine whether I'm a fit for it and it's a fit for me.

    I'd like to know Apex's response. What are you doing with Apex Utility AI? Company posts above indicate that no more tutorials are in the works and that incomplete tutorials aren't going to be finished, and Geminior's response indicates Apex is no longer working on the product at all.

    Why should I buy Apex Utility AI? Why is it a better fit for me than other options?
     
  44. Geminior

    Geminior

    Joined:
    Feb 12, 2014
    Posts:
    322
    We see the product as complete and we are not currently working on new features.
    If you want a simple way to define and set up advanced utility based AI, that is what you get with Apex Utility AI.
    If you just want a Behaviour Tree, then you can achieve the same results with Apex Utility AI but you may find alternatives as well.
    If you are not a programmer, don't bother with Apex Utility AI, programming is not optional. The graphical editor is for building the AI, but the building blocks themselves you write yourself using the AI API.
     
    jabevan and one_one like this.
  45. jabevan

    jabevan

    Joined:
    Apr 2, 2016
    Posts:
    72
    This clarifies a lot, thank you.
     
  46. Pratik_Jadhav

    Pratik_Jadhav

    Joined:
    Dec 18, 2017
    Posts:
    4
    Hello,

    I had a question regarding Apex utility Ai and the latest ML-agent that unity has released.

    My question goes this way, is there any way with which we can use them both together? as in if i do the AI part in the Apex utility and train my model using the ML agent.

    Any slight help will be appreciated.
    Sorry if the question asked wasn't appropriate to this thread.
     
  47. Geminior

    Geminior

    Joined:
    Feb 12, 2014
    Posts:
    322
    There should be nothing preventing the two from operating together. However since we haven't experimented with it ourselves at this time, I cannot bring more details to the table.
     
  48. icepick912

    icepick912

    Joined:
    Jul 8, 2010
    Posts:
    58
    Trying to use UtilityAI with the assembly definitions used in unity 2017.3.0f3 but the editor cant find any actions or qualifiers within the separate assemblies. Tried moving the binaries around a bit to get them to see, but i suspect that moving binaries into an assembly defined folder has no effect. Been using UtilityAI and my scripts for it in the plugins folder to separate it from my assembly defined compilation to still gain the benefit of compile time reduction. However being able to use the definition files would be preferable, now that i use the definition files, i want all my pretty assemblies to have pretty names.

    Maybe i am just missing something.
     
  49. Geminior

    Geminior

    Joined:
    Feb 12, 2014
    Posts:
    322
    If you compile types used in the AI, you need to be aware of two things.
    1. You need to mark the assembly as having types relevant to AI by applying the ApexRelevantAssemblyAttribute in e.g. AssemblyInfo.cs
    2. All your AIs will need to be repaired (Tools -> Apex -> AI Repair), as the assembly references will be wrong.

    For future support, please use our forums as they are monitored and will be useful to more people.
     
  50. henkjan

    henkjan

    Joined:
    Aug 1, 2013
    Posts:
    146
    After updating from 1.0.7.1 to 1.0.7.2 it breaks.

    The component: Utility AI Component on my prefab is not found anymore. And when I try to add it there are no AIs. And I can't add the AI's because it isn't in the list anymore. I had to revert because of this.

    Any clou how to update? I'm working in Unity version 2017.3.1f1