Search Unity

Behavior Designer - Behavior Trees for Everyone

Discussion in 'Assets and Asset Store' started by opsive, Feb 10, 2014.

  1. mgmhunt

    mgmhunt

    Joined:
    Apr 1, 2013
    Posts:
    63
    Deprecated BehaviorTree.enableBehavior. Use BehaviorReference.EnableBehavior
    Deprecated BehaviorTree.disableBehavior. Use BehaviorTree.DisableBehavior

    These need to be updated in Movement Pack BTW.

    Once I've saved a Behavior Graph how can I attach it on to an object/prefab (other than editing/referencing it as an External Behavior)? Dragging it on object (ie attach as MonoBehaviour) doesn't seem to work?
     
  2. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,128
    For the movement pack, this file is the only one that should need updating: https://www.dropbox.com/s/8d4qvshc72p0usx/BehaviorSelection.cs. The latest movement pack updated has been submitted to the Asset Store and is waiting for approval.

    It looks like you are saving it out as a prefab, right? If so, it behaves like any other prefab so you won't be able to drag it onto another prefab. For this situation I would recommend saving it out as an external behavior tree (to a .asset file) and reference it using the behavior tree reference task or via code with the external behavior field on the behavior tree component.
     
    Last edited: May 2, 2014
  3. TonyLi

    TonyLi

    Joined:
    Apr 10, 2012
    Posts:
    12,706
    Just dropping a quick note to let Behavior Designer users know that the next version of the Dialogue System, coincidentally also version 1.2.2 (go figure!), is now on the Asset Store. Behavior Designer's new tasks make it super-easy to control conversations, barks, and cutscene sequences from within your behavior trees!
     
  4. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,128
    Thanks Tony, great to see that the Dialogue System update was approved quickly so there wasn't much of a gap.

    Behavior Designer 1.2.3 has also been released today. It contains the following:
    • Added over 215 basic tasks
    • Added a preference to open the task inspector on a task double click
    • Fields starting with “m_” will no longer show “M “ within the task inspector
    • Fixed linked tasks not synchronizing properly when referenced/dereferenced
    • Removed deprecated shared/synchronized attributes
    • Improved serialization: custom classes are now serialized
    • The editor now looks for tasks within the Assembly-UnityScript and Assembly-UnityScript-firstpass assemblies
    I will be adding more basic tasks as time goes on. In addition, the latest update to the Movement Pack was approved which will get rid of the deprecation warnings. If you didn't get the Movement Pack through the Asset Store you can get this update by downloading the following file: https://www.dropbox.com/s/8d4qvshc72p0usx/BehaviorSelection.cs.
     
  5. mgmhunt

    mgmhunt

    Joined:
    Apr 1, 2013
    Posts:
    63
    Yes I mean Saving the behavior as an .asset file via the Save button in editor. But I'm just trying to attach this behavior to a normal object so that the object picks up the behavior (which could then be customised for the object and saved back as prefab or a different behavior, doesn't link back to original asset file). Just as if I'd clicked on object, created behavior tree, added tasks.

    I have setup the other External Behavior Task but this requires a bit of setup. Surely easier if you drag the .asset file into Editor and it sets up the reference for you? or a choice of the above (ie copy Saved behavior tree to object OR add as reference back to .asset file as External Node)
     
  6. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,128
    It would be easy to make the behaviorTree.externalBehaviorTree field accessible from the inspector, but the part that would involve a little bit more work is getting the editor to recognize which tree to edit. I will add it as a feature for version 1.3.

    @frankrs -

    A couple of days ago you asked if it was possible to write tasks in UnityScript - this latest update should enable you to do so. I tested it out and it works great. I also wrote a little help topic on it so you would know which directories you have to change.
     
  7. agamedesigner

    agamedesigner

    Joined:
    Jul 21, 2012
    Posts:
    19
    Hi opsive,

    I bought Behavior Designer earlier and have been messing with it. Nice work!

    I was doing a small experiment to understand the behavior tree logic better and wrote a custom condition (WithinRange) and action EnableDisableGameObject, and I was wondering how to approach a situation where you may toggle something.

    For example, I move in range, and a light is activated, or I move out of range and it is deactivated.

    In code it is a simple if/else check but with behavior trees it seems that there is no code execution on fail states.

    What do you suggest?
     
    Last edited: May 4, 2014
  8. jcdenton2030

    jcdenton2030

    Joined:
    May 4, 2014
    Posts:
    4
    Hi Opsive,

    just downloaded the update - 1.2.3 - no movement pack, just straight from the asset store. I'm getting 2 errors -

    Assets/Behavior Designer/Runtime/Basic Tasks/Rigidbody2D/AddForce.cs(22,13): error CS0103: The name `rigidbody2D' does not exist in the current context

    Assets/Behavior Designer/Runtime/Basic Tasks/Rigidbody2D/AddForce.cs(17,17): error CS0103: The name `rigidbody2D' does not exist in the current context

    Any ideas?

    Cheers
    JCD
     
  9. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,128
    @agamedesigner -

    Most of the depth of your behavior tree is going to come from alternating sequence tasks and selector tasks. In your example, I would have a selector task as the parent and then place a sequence task below that checking the within range condition. If within range is true then it will move onto the next task which will activate the light. Activate light will then return true, causing the sequence task to return true, and the selector task to return true. If within range is false, then the sequence task will return false and the selector task will move onto the next task which will deactivate the light:

    $lgiht.PNG

    Another way you could approach this is to have just a sequence task and two action tasks. The first action task will set a variable which will indicate if the target is within range. The action task will then use that value to determine if the light should be activated or not. That tree would then look like:

    $range.PNG

    @jcdenton2030 -

    Did you completely remove the Behavior Designer folder before you updated? What version of Unity are you running? I am also betting that you extracted the Basic2DTasks package, right? Based on that error it looks like you are running Unity 4.3 but you are using the pre-4.3 runtime DLL. I think if you completely remove all of the Behavior Designer files and reimport it will start working again.
     
  10. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,128
    Behavior Designer 1.2.4 has been submitted to the Asset Store. If you purchased it via opsive.com you should have already received an email.

    This version is completely a bugfix release:
    • Prefabs now work correctly: instantiating, applying, and reverting will stay consistent with the Unity standard
    • Handles renamed/removed tasks better – will show an unknown task and preserve the children
    • Moved the composite and decorator categories to the top of the task list
    • Remembers which categories have been expanded after closing the window
    • Watched variables with a null value will no longer throw exceptions
    • Improved the handing of null values when they are serialized
     
  11. agamedesigner

    agamedesigner

    Joined:
    Jul 21, 2012
    Posts:
    19
    Thank you very much for a great reply!
     
  12. SteveFSP

    SteveFSP

    Joined:
    May 17, 2010
    Posts:
    8
    I've noticed a problem in v1.2.3. I've spent a good while trying to get accurate steps to repeat, but after an hour or so I can only get it to trigger often, but not consistently. When it triggers it will continue to trigger until Unity is restarted. But once Unity is restarted, the problem goes away until it somewhat randomly triggers again. Follows is the best information I can provide at this point.

    Example error message: The behavior "MySceneBehavior" on GameObject "MyGameObject" cannot find the referenced external task. This behavior will be disabled.

    The error only triggers when I play a scene after performing edits to a behavior tree that includes an external tree. (Either a tree that uses a Behavior Tree Reference task, or when the behavior tree is added via script and assigned an external behavior three.) Every so often recent edits to the external tree will be lost. So the core problem appears to be with serialization of changes to external behavior trees.

    My troubleshooting environment:

    1. Create a new Unity project and import the v1.2.3 Behavior Designer package.
    2. In a new scene, add a game object and name it "Foo".
    3. Add a behavior tree to Foo.
    4. Open the behavior designer and immediately save Foo's (empty) tree to an external tree called "ExternalThing".
    5. Select Foo and continue editing its behavior tree.
    6. Add a sequence composite with the following actions (in order): Wait, Behavior Tree Reference, Wait.
    7. Set the behavior tree reference to ExternalThing.
    8. Select ExternalThing to edit it.
    9. Add a Log action as the only node in ExternalThing. Give it some text.
    10. Play the scene. (Reference error may or may not occur.)

    I then start making various valid edits to both the Foo tree and ExternalThing, usually adding and removing tasks. I play the scene intermittently between changes. Eventually I get the reference error. If I do...

    1. Open the behavior editor and view ExternalThing. It will be completely empty, as if no tasks have ever been added. (Don't try to make any edits!)
    2. Shutdown Unity and bring it back up. Look at ExternalThing again. The tasks are back, sometimes with recent edits lost. The behavior can be run normally and the error won't trigger again until after more edits are made.

    A final note: In my main project the error is triggered on external tree's that had no problems before I upgraded to v1.2.3.
     
  13. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,128
    Thanks for the detailed repro steps. I actually may have already fixed that in version 1.2.4. I have been playing around with it and haven't been able to get that error. Of course, I also may not have given it enough time. I'll send you a PM with this version to see if you can get it to reoccur.
     
  14. S0ULART

    S0ULART

    Joined:
    Jun 14, 2011
    Posts:
    131
    Hello opsive,
    I'm considering to buy your package but I'm wondering whats the difference to Playmaker that I already got?
     
  15. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,128
  16. Andrige_

    Andrige_

    Joined:
    Oct 6, 2013
    Posts:
    12
    Hey opsive!

    I have to ask whether or not I can use Behaviour Designer to create 2D AI. The examples all seem to be using 3D environments and the only 2D example is of a dialogue system. I'm reasoning that 2D AI is probably fairly easy (not a very experienced programmer, thus my interest in your plugin), but if I can use BD for my current 2D project as well as future 3D ones I'd like to know. Sorry if I've missed some important feature bullet, but I've tried to look over your webpage for a while and still not certain.

    Thanks!
     
  17. Danirey

    Danirey

    Joined:
    Apr 3, 2013
    Posts:
    548
    Hi,

    I'm looking for an easy ai system for my turn based game.(forum here) Is it possible to make an ai agent "think" when is his turn and become idle when turn goes to the next agent? And is it possible to acces it from Unity script ?

    Cheers!
     
  18. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,128
    Hi Andrige_ -

    Yes, it can definitely work with 2D games. Behavior Designer doesn't really care if you are doing 3D or 2D, using a NavMesh or A*, etc. This starts to matter when you write your tasks (or use PlayMaker/uScript). In terms of if 2D AI is 'easy', that completely depends on the type of AI that you need for your game. The AI logic behind some 2D games is a lot more complicated than 3D games. I will add a bullet point to the feature list saying that it works with both 3D and 2D. To help you get started I've created a few 2D-specific basic tasks: http://www.opsive.com/assets/BehaviorDesigner/documentation.php?id=70. The reason why most of the sample scenes are 3D is simply because the ideas that I had in my head at the time could most easily be executed in 3D. The Dialogue System scene was the most recent scene that I've created and I did that in 2D just to show that 2D games benefit from behavior trees as well.

    Hi Danirey -

    Yes, you can definitely pause the behavior tree until it is the agent's turn. You could accomplish this in one of two ways. The first way is that you could write a conditional task that would return failure until it is the agents turn. When it returns success you then perform your AI logic. If it is not the agents turn then you don't run any logic. The other way you could accomplish this is to pause the behavior tree when it isn't the agents turn. With this scenario you won't need a conditional task to check if it is the agents turn. You can pause the behavior tree through the behavior tree component (link). As far as using UnityScript, yes, that is also possible. You'll have to move a couple of directories to allow UnityScript to find the C# scripts but that is documented here.
     
    Last edited: May 5, 2014
  19. Danirey

    Danirey

    Joined:
    Apr 3, 2013
    Posts:
    548
    Thanks a lot!! ;)

    You have a new user!

    cheers!
     
  20. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,128
    Appreciate it!

    Edit: I just reread my post to you. I made a mistake in the conditional task logic - take a look at the post again.
     
    Last edited: May 5, 2014
  21. Andrige_

    Andrige_

    Joined:
    Oct 6, 2013
    Posts:
    12
    Thanks for the answer. +1 purchase!
    I wasn't at first intending on doing something particularly advanced in terms of AI, but maybe this tool will help me get it better than if I had done it from scratch on my own. Thanks for putting it on sale as I was interested after seeing it mentioned in the blogpost for Ghost of a Tale some time ago. ^^
     
    Last edited: May 5, 2014
  22. SVGK

    SVGK

    Joined:
    Jan 25, 2014
    Posts:
    99
    Dangit, I'm looking at the thing right now, it's on sale, and that price is staring at me, but then I have a concern about Unity 5, I'm a bit worried that I'm going to need to buy another license of this thing for U5, and I wanted to ask, it's probably just paranoia (I don't think you're a soulless corporation, at least yet), but I wanted to be sure.

    So, my question is, to your knowledge, will this need to be repurchased for U5?, or is the license forever?.

    Also, I have a question #2, are there any conflicts with other assets that you know about?, any incompatibilities?.

    I have a couple more questions actually:

    1. Can this work with authoritative servers?, it's a bit of a nooby question, but still, it isn't code, so I'm not sure if it's controllable.

    2. Would this be supportive of mods?, I mean it in this sort of way.

    I know that both of these questions are highly advanced and that I probably won't need either, but it's good to know as much as possible.
     
    Last edited: May 5, 2014
  23. Danirey

    Danirey

    Joined:
    Apr 3, 2013
    Posts:
    548
    Ok, readed!

    Thanks for the correction!

    Cheers!
     
  24. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,128
    Thank you Andrige_!

    @SVGK -

    I can guarantee that you will not need to repurchase this for Unity 5, and it will be completely compatible with Unity 5. There are not any conflicts that I know about - the files are in a namespace so you should be safe. Also, this works on the mobile platforms including Windows Mobile so you are good to go.

    1. Honestly, I've never tried. Networking is on the roadmap for Behavior Designer but I think that there will be a couple more updates before I am able to get to network support.

    2. This is another one that I haven't tried. If PlayMaker works with mods than Behavior Designer should as well since the two have very similar setups.

    Sorry I wasn't able to give you better answers for those last two questions :)
     
  25. nixter

    nixter

    Joined:
    Mar 17, 2012
    Posts:
    320
  26. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,128
    Thanks for your purchase! Also thanks for letting me know about the broken link, it has been updated.
     
  27. SVGK

    SVGK

    Joined:
    Jan 25, 2014
    Posts:
    99
    Right, thanks for answering my questions, you just got yourself a purchase (not at the time of typing, probably sometime tomorrow).
     
  28. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,128
    Great to hear. You have a more than 10 days to get it at the current price (11 days seems like a really long time for a sale but I am happy that Behavior Designer is in it)
     
  29. red2blue

    red2blue

    Joined:
    Feb 26, 2013
    Posts:
    200
    Hi opsive,

    i have a question regarding your BT-System. I am currently building up some kind of RTS. I want to use a system like yours to build up the AI. Since I want some kind of variation in the behavior, i was wondering if there are some kind of actions that choose the next action by a percentage.

    Like i have a Soldier: He is spotting an enemy. 45% he uses the rifel; 35% he uses the pistol; 20% he uses a granade.
    I hope you understand what I mean.

    Btw. Your Asset looks really cool. Congrats on it ;-) .

    Cheers!
     
  30. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,128
    Hi red2blue -

    I appreciate it. There is such a task built in. Take a look at the Priority Selector task. It will look at all of its children and select the child with the highest priority. Your child task can return what its priority is by overriding the GetPriority method.
     
  31. TokyoDan

    TokyoDan

    Joined:
    Jun 16, 2012
    Posts:
    1,080
    Is that Movement Pack still free to people who bought the Behavior Designer (even at the Madness Sale)?
     
  32. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,128
    Hi TokyoDan,

    Unfortunately it is not. With the Madness Sale going on you will still be paying $22.50 less with both Behavior Designer and the Movement Pack than you would have yesterday.
     
  33. TokyoDan

    TokyoDan

    Joined:
    Jun 16, 2012
    Posts:
    1,080
    Cool. And that makes sense. I was almost embarrassed to ask. I just bought them both. With all the great support i've read here I couldn't resist.
     
  34. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,128
    :) Thank you!
     
  35. red2blue

    red2blue

    Joined:
    Feb 26, 2013
    Posts:
    200
    Hi opsive,

    thanks for your quick response. I forgot to mention an important aspekt. I don't want to choose the one with the highest percentage, but also have some kind of Random number / dice that gives a number or percentage (1 -100) and then the percentage counts.

    Like in my example above. Soldier AI has to make the decision. To not get the same result every time, i get a radom number / percentage and the result decides what branche of the behavior tree (x%, y%, z%) to go along.
    Hope this helps.

    Thanks a lot.
    Cheers!
     
  36. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,128
    There are two ways you could approach that. The easiest way would to still use the Priority Selector, and then when you override the GetPriority method you would multiple the priority by a random value. Keep in mind that GetPriority doesn't have to return a value between 0-1 (or 1-100), GetPriority returns a float so you can pretty much consider a priority to be within whatever range you define.

    The alternative method is to create a new composite task. It would be structured similar to the Priority Selector task but you would introduce your randomness in the OnStart method where it is determining the order based off of the priority.
     
  37. Crunch2600

    Crunch2600

    Joined:
    Mar 1, 2013
    Posts:
    5
    You probably don't get asked this a lot, but is there Boo support?

    What exactly does networking support mean for Behavior Designer? Let's say I have PlayMaker functions integrated with the behavior tree and managing networking through those, would that have the same effect as what you're planning?
    Also, could future updates, networking support or otherwise, break my current behavior trees?

    Does the Movement Pack logic support movement on all three axes (X, Y, Z)? This is a pretty vague question but, how well do you think would the Movement Pack logic work alongside PlayMaker functions?
     
  38. red2blue

    red2blue

    Joined:
    Feb 26, 2013
    Posts:
    200
    Thanks opsive,

    i will take a look at the Priority Selector Task and watch some videos.

    Cheers! :)

    Edit:
    Have two other questions. Some posts earlier there was a question about Networking. From your mind / plan. Will you utilize network solutions like TNet (which I am using), or will you build something own?

    The other question is about the Movement Pack. Are you also supporting other pathfinding systems like A* (which I also use :) )

    Thanks again!
     
    Last edited: May 6, 2014
  39. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,128
    @Crunch2600 -

    Currently there is no Boo support. I have never used Boo but it looks like it gets compiled into Assembly-Boo and Assembly-Boo-firstpass so I will add those to the next Behavior Designer version (1.2.5, version 1.2.4 has been submitted already and is waiting for review)

    In terms of networking support, I'll be honest and say that I don't have any idea yet what that means. I don't want to say anything that doesn't make sense after looking into it, but it will probably be something similar to PlayMaker where you can synchronize variables, have tasks that know about the network, start/stop a behavior tree across the network, etc.

    If future updates break your behavior tree definitely let me know. I do deprecate methods/tasks as it makes sense but I generally give a good amount of time before I completely remove the deprecated method/task.

    The Movement Pack logic works using Unity's NavMesh so it will work where ever you have a NavMesh setup, whether that is on slopes or not. There is nothing within the logic that I wrote for the Movement Pack that restricts it to 2D.

    In terms of PlayMaker and the Movement Pack, they will play nice with each other. As an example, you could move to a point with the Movement Pack, then once you arrive you could play a set of PlayMaker actions.

    @red2Blue -

    I don't have any true networking plans yet - I just have the idea that I know that I want to support it in the future. I was planning on using the Photon networking package because it is free and it can be included in third party asset store packages.

    The Movement Pack will eventually support the A* Pathfinding Project, but I don't have a time-frame when I will get started on that.
     
  40. red2blue

    red2blue

    Joined:
    Feb 26, 2013
    Posts:
    200
    Thanks for answering my questions. Just bought your asset and will spend the next days digging into it.
    Cheers!
     
  41. SteveFSP

    SteveFSP

    Joined:
    May 17, 2010
    Posts:
    8
    What is the proper way to monitor the status of a Behavior Tree? I need to be able to know when it is running and whether it completes with Failure or Success. Looking at the API I found two potentially useful properties:

    BehaviorTree.GetBehaviorSource().RootTask.NodeData.ExecutionStatus
    BehaviorTree.GetBehaviorSource().EntryTask.NodeData.ExecutionStatus


    So I ran some tests....

    EntryTask status is always Inactive, even when the tree is running.
    RootTask status is Inactive until the tree completes. Then is switches to Failure or Success. It never indicates Running.

    Is there another way to find out if a Behavior Tree is running?
     
  42. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,128
    NodeData isn't compiled in when you aren't in the editor so that definitely isn't reliable, the same with the EntryTask.

    You can find out if a behavior tree is running by using BehaviorManager.isBehaviorEnabled(behaviorTree). There currently is no method for getting the status of it. Do you just want to get the ending status or be able to get the status of every single task? An alternate method may be to just create a decorator task that does nothing but record the status of its child after it is done executing. If you place it as the root task then you will get the final status.
     
  43. Todd-Riggins

    Todd-Riggins

    Joined:
    Oct 25, 2012
    Posts:
    6
    After deleting my previous BD directory and downloading the new 1.2.4 version. I get this error:

    Assets/Behavior Designer/Runtime/Decorators/TaskGuard.cs(14,16): error CS0246: The type or namespace name `SharedInt' could not be found. Are you missing a using directive or an assembly reference?
     
  44. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,128
    Whoa 1.2.4 has been approved? I never got the email.. but it looks like you're right. The changes are listed in this post

    I just imported it into a fresh project and it compiled file. SharedInt is located at /Assets/Behavior Designer/Runtime/Variables/SharedInt.cs. Do you have that file?
     
  45. Todd-Riggins

    Todd-Riggins

    Joined:
    Oct 25, 2012
    Posts:
    6
    Well I did the exact process I did before again as in deleting the directory and then importing the new version ... and now it works. Yes, I have that file. So I don't know what happened before. I should of have redone all of that before I posted. I apologize for the scare.
     
  46. SteveFSP

    SteveFSP

    Joined:
    May 17, 2010
    Posts:
    8
    Thanks for the information.

    An example use case: There are Start Behavior Tree and Stop Behavior Tree actions. I'm trying to create as Wait For Behavior Tree action so that one tree can block until the other tree completes, then respond based on its completion state. One or both of the trees are dynamically instantiated at run-time, so I can't use the Behaivor Tree Reference action to link the two together.

    Checking the behavior manager for completion, and using a shared variable for the completion status should work.

    -Steve
     
  47. opsive

    opsive

    Joined:
    Mar 15, 2010
    Posts:
    5,128
    @Todd Riggins -

    Great to hear! I'd be lying if I said that you didn't give me a mini-heart attack :) I kept thinking that there is no way that Unity would approve it with a compiler error that basic.

    @SteveFSP -

    You can't directly use the behavior tree reference task but if you subclass it I bet you can. When the behavior manager goes to load an external tree it uses the list provided by behaviorReference.getExternalBehaviors(). getExternalBehaviors is a virtual method so you can override it with a subclass. What this means is that you can dynamically determine which external trees run at runtime. You will need to know before the behavior tree is started which trees to run but it can definitely be determined at runtime.
     
  48. electroflame

    electroflame

    Joined:
    May 7, 2014
    Posts:
    177
    I'm currently looking into getting this asset, as I'm getting a little fed up with RAIN's lack of real updates. I've got a couple of questions before buying, though (this is in regards to the base, and the Movement Pack).

    1. For pathfinding I've read that you use Unity's NavMesh, but is there anyway to use A* or something of the sort? Possibly integrate it with the A* Pathfinding Project? I'm going to need to create a NavMesh at runtime and avoid dynamic obstacles (either with local avoidance or updating the NavMesh) and it seems like Unity's built-in NavMesh won't cut it.

    2. Do you have Mecanim support? I saw in your docs that you have animation tasks, but I couldn't tell if that was just for legacy, or if it's Mecanim too.

    That's about all I can think of right now. Otherwise I'm about ready to jump in.

    Thanks!
     
  49. TokyoDan

    TokyoDan

    Joined:
    Jun 16, 2012
    Posts:
    1,080
  50. electroflame

    electroflame

    Joined:
    May 7, 2014
    Posts:
    177
    Yep, I was actually referencing that. As far as I can tell, it uses Unity's built-in NavMesh, which doesn't do dynamic updates very well (if at all) and can't generate at runtime. Am I misinformed about that, or is the A* Pathfinding Project still the way to go since that uses Recast?