Search Unity

NodeCanvas - (Behaviour Trees | State Machines | Dialogue Trees)

Discussion in 'Assets and Asset Store' started by nuverian, Feb 8, 2014.

  1. castor76

    castor76

    Joined:
    Dec 5, 2011
    Posts:
    1,524
    Yeah I don't see that X button. Strange.
     
  2. DarkMasster

    DarkMasster

    Joined:
    Mar 23, 2015
    Posts:
    13
    Hi.

    I'm have 2 FSM on scene and want update it manualy/ Exist any way to update FSM \ BT manualy from the code ?
     
  3. castor76

    castor76

    Joined:
    Dec 5, 2011
    Posts:
    1,524
    @nuverian Any ideas? I don't have that X button to delete the variable.

    upload_2017-3-17_23-23-46.png
     
  4. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,051
    Hey,
    Yes, this is possible:
    • First, make sure that the FSM is not started on it's own, by setting the OnEnable to "Do Nothing" in the FSMOwner inspector.
    • Start the fsm behaviour assigned on the FSMOwner, by calling StartGraph method, with the autoUpdate parameter false. Calling StartGraph is required to initialize it correctly.
    • Call UpdateGraph() on the assigned fsm behaviour to update it.
    Here is a code example in practice:
    Code (CSharp):
    1. using UnityEngine;
    2. using NodeCanvas.StateMachines;
    3.  
    4. public class Example : MonoBehaviour {
    5.  
    6.     public FSMOwner fsmOwner;
    7.  
    8.     void Start(){
    9.         //parameters:
    10.         //agent: use fsmOwner itself.
    11.         //blackboard: use fsmOwner blackboard.
    12.         //autoUpdate: use false
    13.         fsmOwner.behaviour.StartGraph(fsmOwner, fsmOwner.blackboard, false);
    14.     }
    15.  
    16.     void Update(){
    17.         fsmOwner.behaviour.UpdateGraph();
    18.     }
    19. }
    20.  
    Please let me know if that works for you.
    Thanks.

    Hey,
    I've send you a PM with a link to a patched Blackboard editor.
    Please let me know if that works for you after you import the package.
    Thanks.
     
  5. DarkMasster

    DarkMasster

    Joined:
    Mar 23, 2015
    Posts:
    13
    Thanks. a lot ! it's helpful.
     
  6. Dan_lala

    Dan_lala

    Joined:
    May 14, 2015
    Posts:
    42
    Hey,

    I have a quick question: is the downloadable package for inventory pro for the old or for the new version of it (2.5+), or will it work with both?
     
  7. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,051
    You are very welcome!

    Hello,
    It was created for the previous version of Inventory Pro, but it might still work with the new one, considering there are no vast changes to the API. Unfortunately I haven't tested this out, since any further support for assets of the Inventory Pro author are ceased (for various internal reasons).
    Sorry.
     
  8. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,051
  9. Dan_lala

    Dan_lala

    Joined:
    May 14, 2015
    Posts:
    42
    Thanks for the clarification. Going to look at the 2.4 plugin first then for some task testing, then upgrade and see if the tasks still work or need some rewriting.
     
    nuverian likes this.
  10. mikeNspired

    mikeNspired

    Joined:
    Jan 13, 2016
    Posts:
    34
    If I get all gameobjects and save them into a list. Is there a way to get a field of a script?
    There does not seem to be a way to cast objects or getComponent<EnemyStats> within the canvas.
    Anyone have any tips?
     
  11. Dan_lala

    Dan_lala

    Joined:
    May 14, 2015
    Posts:
    42
    Fixed 7 errors in the deprecated 2.4 Inventory Pro version, but just new naming conventions and different parameter order, not a big deal. I think I won't look at 2.5+ though, it seems a bit over the top with its features
     
    nuverian likes this.
  12. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,051
    I am sorry, but I missed your post completely.

    There is not a very direct way to do this, and you will need to create some variables for that. Bellow is an example action list, of getting a property (velocity) from a Rigidbody component found in a list of GameObjects.
    The two actions used are "Pick List Element<GameObject>" and "Get Property"

    - The Pick List Element, gets an element from "myList" by index (0) and stores it as a variable named "element".
    - Notice that the Get Property (you could use Get Field), has an override target (instead of default "SELF"), that being the "element" variable.
    - Clicking the "Select Property" will show all available properties of all component types that exist in the Preferred Types List. You will need to add "EnemyStats" type in that list, to make it show in the Select Property button menu.
    - In runtime, the required component (in this case "Rigidbody"), for the GetProperty action, will automatically be fetched from the target (in this case "element" variable).
    GetPropertyFromListElement.png

    Please let me know if I didn't explain something well, and whether or not this works for you and was indeed what you asked :)
    Thank you!

    Thanks for the follow up :)
     
  13. TSabos

    TSabos

    Joined:
    Mar 8, 2015
    Posts:
    90
    Can you explain a bit how the FSM transitions to each state in relation to being frame based or instant?

    My use case is in a turn based game where you can simulate it "behind the scenes" as quickly as possible and before I put it into Nodecanvas it would pretty much run instantly in 1 frame, but now that I've put it into NC it takes about 4 seconds. I can see every state lighting up in what seems to be a 1 state per frame basis; is there any way to transition some states the same frame?

    Is there any way to speed up the FSM to simply make it run 10x speed independently from my Timescale? That is a last resort option that should work though if it is Update locked.

    Edit: Timescale didn't seem to impact anything.
     
  14. Aledebarande

    Aledebarande

    Joined:
    Oct 6, 2015
    Posts:
    15
    Did someone ever tryed to stop or abort a dialog ? How ?
    I mean :
    I used the uGUI prefab from the NodeCanvas sample scene to show a dialog when the player is near a game character.
    Now I want to hide the dialog gui to hide when the player wents away, no matter if the dialog ends or pause.

    Should I have to implement my own Gui to do this or is this possible with the sample prefab ?

    Thanks !
     
    Last edited: Apr 1, 2017
  15. Aledebarande

    Aledebarande

    Joined:
    Oct 6, 2015
    Posts:
    15
    ...don't bother... I just found the DialogueUGUI script -_-
    Sorry... didn't thought it was that simple.
     
    nuverian and hopeful like this.
  16. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,051
    Hey,
    I don't think it's very correct to consider of an FSM the equivalent of calling a method that will wholly execute in 1 frame, since by definition a State Machine, is a system to be used for modeling states, rather than modeling a single visual scripted function (Behaviour Trees on the other hand can do what you want).
    In the FSM system, there will always be 1 frame yield between state changes. So 5 empty, or instant states transitioned in order (thus 4 transitions), will take 4 frames.
    Still though, I can't see how your FSM takes up to 4 seconds to complete. Could it be that you have any kind of action within any of those states, that takes time to complete and is not instant?
     
  17. TSabos

    TSabos

    Joined:
    Mar 8, 2015
    Posts:
    90
    To give you some context, the game is a fully realized RPG turn based simulation and the player may click to "finish" the simulation and also speed it up 5x. Judging by your explanation of each state taking one frame, would Timescale not impact it; for some reason in my testing it did not. I do not mind at all adjusting Timescale in order to accommodate speeding this up when the player decides to "finish as fast as possible" the rest of the simulation which could be upwards of 50-200 "full turns" which is 3 state changes to detect what they are capable of doing in their turn and then moving on.

    EDIT: So, our game runs about 1000FPS during the simulation and this was causing some people's video cards to massively spin up so we decided to use QualitySettings.vSyncCount = 1; in order to throttle it down. I just tested turning that back off and simulations run almost instantly when the game is at 1000fps. Is the core based off FixedUpdate? I'm not sure how to speed it up if so, any suggestions are welcome.

    Nothing at all in the TimeManager (fixed timestep, max allowed, time scale) seemed to impact the FSM speed.. only raw removal of the vsync enforcement and running 1000fps.

    Here's an example of 2 battles taking place all in the "background" when a player hits End Turn in our game and then combat completing (vsync on and 60fps).

    https://www.dropbox.com/s/pkeecbpx07gk3ki/2017-04-02_23-46-43.mp4?dl=0
     
    Last edited: Apr 3, 2017
  18. strich

    strich

    Joined:
    Aug 14, 2012
    Posts:
    285
    Does this work in Unity 5.6 yet?
     
  19. DarkMasster

    DarkMasster

    Joined:
    Mar 23, 2015
    Posts:
    13
    Hi !
    I'm have FSM with Node - Nested FSM, without any FSM seted. How i can set it in runtime, from custom ActionTask ?
     
  20. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,051
    Hello,
    Sorry for the late reply.
    Time settings (and thus deltaTime, fixedDeltaTime) have no impact and in no way affect the speed at which an FSM is executed. To put it simply :), all graphs are updated once per-frame from within a Unity Update callback in MonoManager.cs. Timescale and thus deltaTime, will only take place if you are using an action like Wait, or other time related actions. Once again, 1 frame is always yielded between an FSM transition, so there is nothing like "instant evaluation of a whole FSM from start to finish", because an FSM does not necessarily has a finish. It just has different states, which the machine can be at any moment.
    I really hope I explained it better this time :)

    Hello,
    Yes. There are no problems experienced (or reported) with Unity 5.6.
    Thanks.

    Hey!
    Probably the best way would be to use the fact that SubTrees/SubFSMs, can be fetched from a Blackboard Variable as well, since if you notice, the parameter is a linkable one (BBParameter).
    SubFSMParameter.png

    As such, the SubTree/SubFSM, can be dynamically changed this way, just by changing the variable on the blackboard :)
    Let me know if that indeed works for you.
    Thanks.
     
  21. TonyT

    TonyT

    Joined:
    Mar 17, 2014
    Posts:
    20
    Hi I was wondering if there is any more details about writing your own Graph system (the only info I can find is from way back in 2014!)

    Thanks

    Tony
     
  22. TSabos

    TSabos

    Joined:
    Mar 8, 2015
    Posts:
    90
    It makes sense, just trying to figure out then how to adjust for it ;) Is the 1 per frame design something that is impossible to work around? I'm not quite sure how deep the yield return null rabbit hole goes and definitely not asking for you to adjust anything, but in this specific instance the FSM is holding back anyone who ever wanted to run "as fast as possible" logic like I am. I guess this game is that unique, but if someone made a game like Civilization or Europa Universalis then they'd run into similar issues when wanting to speed up time or run things as fast as computable :)

    In any case, I personally can get around this "issue" by changing framerate at runtime by minimizing the display the player sees when a player clicks to simulate so that it runs at 300fps or some much faster framerate, thus speeding up the FSM 500%.

    The only problem that bothers me is 100% guaranteeing vsync is off for players sounds very sketchy. Anyone running 60fps will just take 5x longer to simulate rounds and that will be a weird thing on the forums I can already tell... "Just disable vsync".
     
    Last edited: Apr 9, 2017
  23. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,051
    Hello Tony,

    Writing completely new custom graph modules is definitely a heavy task :). If you want though, please feel free to start a thread in the official NodeCanvas forums so that I can help you better by keeping our discussion more manageable :)
    To get you started, I have also attached for you here a new module template (fully commented).

    Cheers!

    Hey!

    Just a suggestion here. I really think that for what you want, probably using the Behaviour Tree system would be a much better fit. Using a BT, you will be able to simply "Tick" it manually whenever you need the AI to decide what to do and the BT will determine that and execute the corresponding leaf action based on the tree's design, all in one frame (considering that you don't have any time based actions within it of course).
    I would honestly urge you to try BTs out for your case (turn based game) :)

    Cheers!
     

    Attached Files:

  24. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    3,751
    Is it possible to simply drag a transition from one node to another? I'm looking at an easy way to implement a level manager for a SHMUP game and each node will be a spawner for enemies or other objects. But I may want to change the order of the spawns so it would be convenient if I could simply disconnect and re-assign node transitions to re-order things. I currently have Playmaker and it doesn't allow reassigning the transitions except by selecting from a long list of available nodes in a list. It works, but it's very inconvenient.
     
  25. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,051
    Hello,

    Is this what you mean? :)
    RelinkTransitions.gif
     
  26. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    3,751
    Yes, that's exactly it. Thanks for the quick response.
     
  27. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,051
    You are very welcome :)
     
  28. Mild-Mania

    Mild-Mania

    Joined:
    May 16, 2013
    Posts:
    6
    Hello @nuverian,
    We've been using NodeCanvas for sometime and we really loved what you have done. I've a small problem regarding applying prefabs. When I apply a prefab, it creates the same subassets multiple times. Am I doing something wrong or is it a bug? Thanks.
     

    Attached Files:

  29. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,051
    Hello,

    First of all thanks a lot. I am really glad you enjoy NodeCanvas.
    Regarding the issue, I really can't reproduce this with any steps. Tried both in Unity v5.5 and v5.6, with multiple graphowners on the same prefab and/or within its children (like it seems to be in your image).
    Does this happen just by hitting Apply Prefab? Can you please let me know some steps to reproduce this?

    Thanks in advance.
     
  30. chai

    chai

    Joined:
    Jun 3, 2009
    Posts:
    83
    Aww been waiting for months, day & night *sniff* :oops:

    We're doing some bosses for Hellhunter soon, would be pretty epic to have the subtree vars *wink*

    Thanks & keep up the good work!
     
    Last edited: Apr 14, 2017
  31. Mild-Mania

    Mild-Mania

    Joined:
    May 16, 2013
    Posts:
    6
    Thanks for the quick reply. Actually yes, I change something in the prefab ( sometimes in the behaviour tree ) and then just click apply. Btw, the problem doesn't always occur. I'm not sure about the exact steps. I can give more info if I can understand the reason but for now what I observe is it happens when I apply a prefab
     
  32. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,051
    Hey :)
    All I can say, is that I am really sorry that this feature has been delayed so much due to other matters.
    I really hope your bosses in Hellhunter (which looks awesome by the way!) make use of this soon.
    Thank you for your understanding!

    Hello,
    Just wanted to let you know, that I tried replicating the issue you are facing again but to no avail. I also re-checked the code to see if I missed something, but didn't find anything that could be the cause. If you find the steps to replicate this in any way, please let me know!
    Thank you.
     
  33. Kiupe

    Kiupe

    Joined:
    Feb 1, 2013
    Posts:
    528
    Hi,

    I have an error using Unity 5.5.3.p1. didn't have this error before but I can guarantee that it happened the first time after upgrading.

    Code (CSharp):
    1. Type Request)</b> Type with name 'UpdateOrientationTask' could not be resolved.
    2. UnityEngine.Logger:Log(LogType, Object)
    3. ParadoxNotion.<LateLog>c__AnonStorey0:<>m__0() (at Assets/ParadoxNotion/NodeCanvas/Framework/_Commons/Runtime/Other/ReflectionTools.cs:109)
    4. UnityEditor.EditorApplication:Internal_CallDelayFunctions()
    5.  
    Any idea how to fix it ?

    Thanks
     
  34. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,051

    Hello,
    This error denotes that a type with name UpdateOrientationTask is no longer found, probably deleted or renamed, where such a type is somewhere used in NodeCanvas, more than probably in some Reflection Based (Script Control) task, or previously been added in the Preferred Types List editor.
    Can you please confirm that either of the above is correct and that a type with such a name still exist in your project?

    Thanks.
     
  35. Kiupe

    Kiupe

    Joined:
    Feb 1, 2013
    Posts:
    528
    Hi,

    You were right, I had custom tasks that have been deleted but an old BT asset still referenced those task. I deleted the BT but the error remained. I didn't seen any reference of those tasks in the Preferred Type List editor. Still investigation.
     
  36. chai

    chai

    Joined:
    Jun 3, 2009
    Posts:
    83
    All good, thank so much for the quick reply.and excellent support!
    Looking forward to it, enjoy your weekend mate :)
     
  37. aidinz

    aidinz

    Joined:
    Apr 17, 2016
    Posts:
    50
    Hi,

    1. What's the best way to learn NodeCanvas's Behavior Tree and FSM? I tried the documentation but it didn't work for me as it was explaining everything, I want a tutorial of some sort and apparently there is none on youtube either. (I just saw your post recruiting someone to do it). The example scenes provided are a bit too simple for my needs.

    2. I have previous experience using FSM's from previous games I've worked on and I don't know how to do similar things with NodeCanvas. So here is my case: I want some behavior or state transition available on a subset of my states, for example when my enemy is patrolling, staying idle or something else, if it would see the player, go to a shooting state and stay there while is still seeing the player. I've done this both with parallel states and nested ones via a hierarchical FSM but I can't get them to work here.

    3. Every tutorial seems to be targeted towards 3D games using NavMeshes but I'm developing a 2D one and I don't use physics for collision detection and use raycasts. So, to best of my knowledge, I can't use any out of the box action/behavior of NodeCanvas and have to call my own code and store the return value for example when in patrol my enemy detects a wall, is it correct? I tried this but it requires System.Action<type> thingy that I can't figure out via the documentation or your previous mentions of it in this topic.

    Thanks.
     
  38. hoodoo

    hoodoo

    Joined:
    Oct 19, 2012
    Posts:
    150
    Hi @nuverian - I finally have started using Node Canvas and have a question about rotate towards and move towards actions. I set these two actions up in a single node to run in parallel. I have this set up on an NPC, with the Player as the target. If I keep the Player moving, then the NPC will rotate and then start moving towards the Player. If I then move the Player laterally, the NPC will keep moving towards the Player, but will not be rotated correctly. Once the NPC reaches the Player then it rotates to face the Player.

    Is there a better way to set this up? BTW, I'm really enjoying working with Node Canvas and find it to be very intuitive!
     
  39. hoodoo

    hoodoo

    Joined:
    Oct 19, 2012
    Posts:
    150
    Another question: I'm using the Wander action underneath a sequencer, with a second child node also under the same sequencer. It seems to stay on the Wander action and not go to the second child node very often or at all. For the Wander action I do not have repeat checked. Is there a way to do Wander, but also run other sibling nodes in the sequencer?

    I want to have the character wander, and also have a conditional executing that will do a different random behavior. The conditional node is the sibling node in the sequencer (sibling of the Wander action node).
     
  40. Cygon4

    Cygon4

    Joined:
    Sep 17, 2012
    Posts:
    381
    Hi!

    I'm using a hi-dpi screen and the Unity UI text is so small it's barely readable. I was wondering if I could tweak the zoom limit for NodeCanvas so that I can at least read my FSMs clearly until hi-dpi support materializes in Unity.

    I tried changing the limits myself (in ZoomAt(), StartZoomArea() and such) but I always broke things badly. Is there a spot where I could change what the highest zoom level is or are zoom factors above 1:1 not possible in the current code? :)
     
  41. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,051
    Thank you! :)

    Hello,

    1 )For learning Behaviour Trees, apart from the docs and examples, I would really recommend the following very good resources:
    Behaviour Trees for Game AI
    Behaviour Trees for AI: How They Work

    All material learned in those and more, are applicable to NodeCanvas Behaviour Trees as well.
    The example scenes are simple on purpose, so that they help really understand how BTs work on the basic level, not just provide a canned way of doing a particular thing or game, since I think that by providing complex canned setups, one is not able to easy take the knowledge needed from those and apply purposefully on his own. I hope that made sense :)

    2) NodeCanvas has support for SubFSMs, thus you could probably do it in a similar way of how you did before.
    That is, that you can use a SubFSM, which contains the states you want like in your example (Patrol, Idle) and transition to another state "Shoot" in the root FSM until enemy is no longer in view. In which case transition back to SubFSM. Here is an example "blueprint" of what I mean:
    Root FSM:
    RootFSM.png

    SubFSM:
    SubFSM.png

    You could of course also replace the "Shoot" state with another whole SubFSM.
    Is that something that would work for you?
    I am also always open to suggestions if you have any :)

    3) The included pathfidning action like Move, Patrol, Wander etc actions are using Unity's NavMesh, yes. If you are relying on some custom navigation system you will of course need to also create actions/conditions that use that system, or make calls with the Script Control Tasks to existing functions of your scripts.
    About the problem you said "System.Action<type> thingy", can you please clarify better what you mean? What did you try to do and what was the problem that you faced please?

    Thanks!

    Hey,

    Thanks! I am really glad you enjoy using NodeCanvas :)
    I have made some improvements to the code of Move/Rotate Towards/Away (attached here). With this change, having a MoveTowards and a RotateTowards on a single action list set to run in parallel (or under a Parallel node), should now work better. Just make sure that the "WaitActionFinish" is set to false for both, and of course that the action node is updated/ticked per-frame (or at least frequently).
    Please let me know if the new attached set works for you better.

    If the repeat property is checked in Wander action, it means that the action will never finish and just keep repeating itself, in which case it will not ever let the Sequencer continue to the next child.
    In cases where you want to run actions (or check conditions) in parallel, then the Parallel Composite node is the answer for Behaviour Trees. All child nodes of a Parallel, will simultaneously be update and also repeat themselves until the "Policy" selected in the Parallel node inspector is met.

    Both of the bellow are valid for example:

    This will make character wander and while at it, "wandering.." will also be logged every 1 sec.
    Parallel1.png

    This will continuously check the condition and until it becomes false, "hello world" will be logged every 1 sec.
    Parallel2.png

    Please let me know if these help :)
    Thanks!

    Hey,
    Unfortunately right now there is not an easy way to change max zoom level. Because max zoom was really meant to be 1:1, number 1 is a bit hardcoded rather than using some constant. I can though make the required changes so that it depends on a constant and thus possible to easy change max zoom if required, for the next version (or send you by PM)
    Thanks!
     

    Attached Files:

  42. hoodoo

    hoodoo

    Joined:
    Oct 19, 2012
    Posts:
    150
    Thanks @nuverian !

    I'll try the new move/rotate code a bit later - I appreciate it!

    I now have my BT set up to do a different animation each time Wander stops executing. It does execute every so often as I wanted, although I will probably add a conditional probability node. But I see the walking animation the whole time and not the creeping animation. Is there a good way to make it do the creeping animation for a set period of time (or random time), before going back to the Wander / Walk animation?

    upload_2017-4-27_18-39-36.png

    I have "Action Run In Parallel" set on both action nodes.
     
  43. TonyT

    TonyT

    Joined:
    Mar 17, 2014
    Posts:
    20
    wow... brilliant! Thanks.... I will start that thread... but in a few weeks.... when I can devote some proper time to this!!

    Thanks again!!

    Tony
     
  44. emreCanbazoglu

    emreCanbazoglu

    Joined:
    Jan 31, 2012
    Posts:
    15
    Hello,

    Is it possible to bind the sub behaviours trees to the game object as well? When I add a new behaviour tree inside of a behaviour tree, it expects a behaviour tree but I couldn't find a way to create a new behaviour tree and bind to to the object.

    Thanks,
    Emre
     
  45. hoodoo

    hoodoo

    Joined:
    Oct 19, 2012
    Posts:
    150
    The new move towards / rotate towards code works perfectly! Thank you @nuverian! Nice and smooth motion.
     
  46. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,051
    You are very welcome and I am glad they worked for you! These changes will of course be there in the new version.
    Regarding your question (which sorry I've missed), you could use a "Filter" Decorator above the Creeping Animation node and set it to Cooldown. As such, the node will be filtered to fire only every x chosen interval in seconds.
    Let me know if that works for you.
    Thanks again!

    Hello,
    SubTrees can not be bound to the owner like the root Behaviour Tree can and are always an Asset reference.
    If the sole reason you want to bind the SubTree is to use scene object references, please remember that you can still use scene object references through Blackboard Variables and map/link task or node parameters of the SubTree to those Blackboard Variables.
    Let me know if that works for you.
    Thanks!
     
  47. zenGarden

    zenGarden

    Joined:
    Mar 30, 2013
    Posts:
    4,538
    Hi @nuverian
    I am using Unity 5.6.0f3, and there is no NodeEditor menu.
    When i import the plugin it has a warning, and launching the compile i got errors about NodeCanvas.
    Thanks.
     
  48. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,051
    Hey,

    What do you mean by NodeEditor menu? Do you mean the node browser?
    If so that is an option in the "Prefs" dropdown in the NodeCanvas editor. It's the first one called "Use Node Browser".
    Do you mean something different?

    There is indeed 1 harmless warning in 5.6 which will be gone in next version, but no errors. What kind of errors do you get?

    Let me know.
    Thanks.
     
  49. zenGarden

    zenGarden

    Joined:
    Mar 30, 2013
    Posts:
    4,538
    There is no errors with a new project, it works fine.

    The errors only happen in a project that already have many plugins.

    Assets\ParadoxNotion\NodeCanvas\Framework\_Commons\Runtime\Services\MonoManager.cs(22,29,22,37): error CS0066: 'ParadoxNotion.Services.MonoManager.onUpdate': event must be of a delegate type

    Assets\ParadoxNotion\NodeCanvas\Framework\_Commons\Runtime\Services\MonoManager.cs(23,29,23,41): error CS0066: 'ParadoxNotion.Services.MonoManager.onLateUpdate': event must be of a delegate type

    Assets\ParadoxNotion\NodeCanvas\Framework\_Commons\Runtime\Services\MonoManager.cs(24,29,24,42): error CS0066: 'ParadoxNotion.Services.MonoManager.onFixedUpdate': event must be of a delegate type


    Assets\ParadoxNotion\NodeCanvas\Framework\_Commons\Runtime\Services\MonoManager.cs(25,29,25,34): error CS0066: 'ParadoxNotion.Services.MonoManager.onGUI': event must be of a delegate type

    Assets\ParadoxNotion\NodeCanvas\Framework\_Commons\Runtime\Services\MonoManager.cs(26,29,26,46): error CS0066: 'ParadoxNotion.Services.MonoManager.onApplicationQuit': event must be of a delegate type



    I can do without NodeCanvas for this project as it wanted only to try something, but it's strange.
     
  50. ldlework

    ldlework

    Joined:
    Jan 22, 2014
    Posts:
    37
    @nuverian I have been playing with Node Canvas for a while now and I must say I am incredibly impressed. The ability to combine nested graphs and mixing FSM and BT is just crazy powerful. The ability to run a graph specified as a BB variable blew my mind - inversion of control for your behavior trees!

    Anyway I have some suggestions that I need to declare;
    • Aesthetic field attributes for overriding the names of Action fields in the editor
    • Action field attribute for providing a tooltip
    • Option to turn off comment wrapping / cause comments to widen nodes
    • The ability to drag FSM condition labels along the curve to position them when the algorithm wants to put to labels on-top of each other.

    Further, I think that curve algorithm could use some work. Trying to organize even a non-trivial FSM is very finicky. And I love the sub-graph capabilities of NodeCanvas so I'm not saying this from a place where I'm making unreasonably large graphs.

    Lastly, I can't quite put my finger on exactly what I want here, but I have this ineffable intuition that the ability to combine multiple blackboard assets together would be really useful. I'm thinking like, a BB asset to go along with some FSM that has some defaults and provides the variables that the FSM needs. Then if I'm using some nested Behavior Tree that has its own variable requirements, I can just load the BB I made for it, too.

    Thank you so so much for Node Canvas its incredibly powerful. I seriously regret buying BehaviorDesigner days before learning how great Node Canvas is.
     
unityunity