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

The Complete Visual Behaviour Authoring solution for Unity, empowering you to create advanced AI Behaviours and Logic, including three separate, fully featured, yet seamlessly interchangeable modules for you to choose and easily add in your game:

:check_mark: Behaviour Trees.
:check_mark: State Machines.
:check_mark: Dialogue Trees.

NodeCanvas is a production ready framework used by many awesome games including The Long Dark, Hand of Fate 2, Hurtworld, Len’s Island, Ghost of a Tale, P.A.M.E.L.A, The Wild at Heart, Kim, Kingdom and many more.
[Games Showcase]

FEATURE HIGHLIGHTS

● Three completely interchangeable graph modules to choose from.
● Sleek and Intuitive Visual Node Editor with all expected pro features.
(Full Undo/Redo, Zoom In/Out, Minimap, Multi-selection, Duplication, Copy/Pasting, Import/Export, Groups, Comments and more)
● Graph, GameObject, Asset and Global Blackboard Variables.
● Blackboard Variables Parenting.
● Data Bound Variables with instance or static properties and fields.
● Auto-Convert Variables data to linked parameters type.
● Prefab Overridable Variables support.
● All Variable Types are supported out-of-the-box.
● Reusable behaviour graphs across any number of agents.
● Seamless SubGraphs nesting between all three graph modules.
(Behaviour Sub-Trees, Sub-State Machines, Sub-Dialogue Trees)
● SubGraph Variables Parametrization and Mapping.
● Modular Action and Condition Tasks.
● Reactive Behaviour Trees Evaluation.
● Stack-Based FSM Transitions.
● Colorful and informative runtime Visual Debugging.
● Node/Task Browser: search, favorite and read built-in documentation.
● Preferred Types Configurator: tailor type-related menus to your project.
● Graph Minimap: navigate your graphs with ease.
● Graph Console: automatically locate log source nodes with a mouse click.
● Graph Explorer: search and find nodes, tasks and parameters in the graph.
● Graph Refactor: batch refactor missing nodes, tasks and reflection references.
● Live Runtime Editing: faster realize your design goals.
● Optimized Reflection Tasks: automatically integrate existing code API.
● Custom Events & asset-based Signal Events with any # of parameters.
● Clean and well-documented API.
● Extend and create custom Actions, Conditions, Nodes, or even Graphs.
● Object and Property Drawers, to customize inspectors in all ways possible.
● Integration with many 3rd Party Assets.
● Seamless Integration with FlowCanvas flowScripts.
● User Friendly. Lightweight. No Setup Required.
● Rock Solid Performance. Zero Allocations After Init. Async Graph Loading.
● All Platforms Supported out-of-the-box.
● C# Source Code included!
● And much more…


NodeCanvas also comes with a lot of well crafted game oriented premade Actions and Conditions to get you started. Furthermore you can use the specialized Reflection Tasks to make use and control any existing code and components without writing a single line of code!

Current 3rd Party Asset Extensions:
• Apex Path
• Audio Toolkit
• Chronos
• Cinema Director
• Core GameKit
• DOTween
• Easy Save
• Inventory Pro
• LipSync
• Love/Hate
• Master Audio
• Motion Controller
• PolyNav
• SALSA
• Sensor Toolkit
• SLATE Cinematic Sequencer
• Simple Waypoint System
• and more, based on requests…

Community Driven Extensions:
• A* Pathfinding Project
• cInput
• FinalIK
• ProCamera2D
• Rewired
• uFrame

Furthermore, NodeCanvas seamlessly integrates with FlowCanvas enabling you to use sub flowScripts directly within your BehaviourTrees, FSMs, and/or Dialogue Trees, as well as the other way around!

" So, what’s included? "
:check_mark: The Core NodeCanvas Framework.
:check_mark: The Behaviour Trees module.
:check_mark: The State Machines module.
:check_mark: The Dialogue Trees module.
:check_mark: Lots of Game Oriented Tasks.
:check_mark: Lots of 3rd Party Integration Tasks.
:check_mark: The C# Source Code.
:check_mark: Responsible Support.

Add NodeCanvas to your project and enjoy a complete, feature-rich, Visual Behaviour Authoring solution for Unity with powerful possibilities and without compromises.

4 Likes

[Empty]

Congrats on release. Demo video looks great. Heading over to asset store to buy. Been waiting for this for a while. Hope this asset is really successful for you.

Mitch

Hey Mitch. Thanks a lot! Let me know of anything you might need :slight_smile:

The online documentation has been updated for Actions, Conditions, Nodes and Systems…Here is how to create a Action Task for example:

using UnityEngine;

[Category("My Super Actions")]
public class MyAction : ActionTask<Transform> {

    //To allow use of either direct value or blackboard variable. Something like Playmaker
    public BBParameter<Vector3> translateBy;

    //Optional.Called once a new agent is set. Think Awake. Return an error string or null
    protected override string OnInit(){
        return null;
    }

    //Optional.Called once
    protected override void OnExecute(){

        agent.Translate(translateBy.value);
        EndAction(true);
    }

    //Optional.Called per frame if the Action has not ended.
    protected override void OnUpdate(){

    }
}

I just wonder…
Are you interested in NodeCanvas but you would like a C# version?
–EDIT–
Obsolete; NodeCanvas is now in C#

Would it be possible to have a node graph at runtime (using the same OnGUI() methods for renderering). If not, is it possible to extend the base code to do so? The use case would be for a node-graph based design tool, made with Unity.

Hey,
While it’s possible to see a graph in Play mode in the editor, it’s not possible to do so in build game. Basicaly because there are many unity editor methods used (helpboxes, dialogs, handles etc). I could make it possible to show a kind of striped version though in the future, but I first have to finish the Dialogue Tree and the FSM systems of NodeCanvas

I tried this and it gives a compile error: “The type or namespace name `ActionTask’ could not be found. Are you missing a using directive or an assembly reference?”

This is happening because ActionTask is a javascript class, and EmptyAction is a C# class. As far as I know, you can’t have C# classes extend JavaScript classes since they are compiled with different compilers. I don’t know of any way to get around this.

If this is true, then this tool cannot be used with existing projects that are written in C#. I would strongly recommend making a C# version of NodeCanvas, since C# is used far more in Unity projects.

Hello,
You will have to move some folders into the Plugins folder.
Please wait for an update I’ve just pushed in which I relocated the folder structure a bit to make this easier along with some fixes, improvements and more Tasks.

Absolutely! My projects are all strictly C#.

Im very excited to say that I’ve just submited version 1.2. Now that’s a big version change you might think, but I really think it deserves. here is why:

The UI has been overhauled, to be more informative, nice and free up space for bigger graphs.
The nodes now only read the info that is needed, while the controls for each node or connection and assigned Actions and Condition Tasks are shown in the new inline inspector area on the top left when a node or connection is selected.

The FSM System is introduced as promised!
It can hold other nested FSM systems or nested Behaviour Trees. So that a Behaviour Tree can be a State of an FSM System for example. The FSM works with the same Actions and Conditions. Create once and reuse in all systems.

The Dialogue Tree System is also here!
Create non-linear, GUI agnostic Dialogues, usable from any GUI system, since it works with the new included event system (Demo UI included).
Using the already included Blackboard feature, it is possible to create Dialogues in which Dialogue Actors are able to remember things.
Again, use the same Actions and Conditions. Create once and reuse in all systems.

Finalized Blackboard Save/Load
The Blackboards variables can be saved and load at any time in game just by calling Save, or Load on the blackboard. It can also be set to automaticaly load OnAwake and save OnDestroy!

1529494--88246--$2014-02-21_23h22_07.png

More Action Condition Tasks Included
Usable with any system. Notably, I’ve included actions for Mecanim contol.

Behaviour Tree Fix Improvements
Fixed the Parallel Node to work as expected
Fixed Random Selector and added Random Sequencer as well. Both of which it’s possible to visually debug…

1529494--88247--$radnomSeq.gif

Many more Fixes and Improvements
Especially in the Editor UI controls

The documentation on www.nodecanvas.com is now being written for the new systems, as well as expanded for Behaviour Trees. New videos will soon follow

I hope it gets live soon :slight_smile:

1 Like

This is an excellent update. I was following along with your development, unsure how I’d use this (I either code or use Playmaker) myself, but your addition of a ‘Dialogue System’ is making this very attractive now. I think you’re best suited to showcasing more ‘practical demo’s’ like that, rather than trusting people to fully appreciate what a BT can do for them…I didn’t necessarily so, and you won me over! :smile:

Cheers man

-Steven

1 Like

Hey Steven. Thanks :slight_smile:
I’m glad you like the update! Yes it’s true that Behaviour Trees are a bit specialized and thus the new FSM and Dialogue Systems which are easier to find a more… practical and direct use. But hey, BTs are powerful :slight_smile:
I hope to get some new videos up soon, showcasing the new systems, alone or even in conjuction with one another.
Hopefully before the update goes live.

Thanks
-Gavalakis

So what’s coming up next Gavalakis?

Tutorial videos are a definite must-have. :smile:

Cheers man

-Steven

I really want to like this product, it has great potential. I was happy to see with your version you provide some support for C# users, allowing them to move some of the javascript files into the plugins folder so that ActionTasks and ConditionTasks can be overridden by C# classes.

However, after playing with this for a while, I eventually ran into another brick wall:

I wanted to write my own decorators for my behavior trees - for example, one that would interrupt a running child node when a blackboard key was set. Alas, this is not possible in C#. In fact, it is not possible to create any new behavior tree nodes in C# since they must appear in the “availableNodes” list in the BTContainer javascript class.

I guess at this point my only option would be to rewrite the behavior tree node system in C#, which is only two dozen files - but still is a pain.

Again, I highly recommend providing a C# version of this product. Since 95% of Unity users code in C#, I bet you would have a much higher adoption rate…

At long last I’ve converted the whole NodeCanvas package to C#. I guess that was the way to go from the start. I’m really sorry if some of you have made progress with the current existing version, but all is for the better :slight_smile:
There have been a lot of improvements in the process as well.

With that heavy load of porting and workflow improvements I wanted and are now done, I am finaly so excited to start making video tutorials for all aspects of NodeCanvas, updating knowledge base and generally illustrate what it really is. The workflow has much improved to a point that the last video is now almost obsolete :stuck_out_tongue:

I am submiting the new version tomorrow first thing!

Thanks for all the patience!

Cool. Do you get the source code? I notice that the Asset store files preview shows all js scripts. This makes me nervous :slight_smile:
Is there a demo/limited version i can test? Good work.

I bought it anyway :slight_smile: Looks like we get the source, very nice. It’s all still JS though. I presume your c# conversion takes time to appear on the asset store?

This looks amazing, great work!
From what I see there is an FSM engine build in but can I use Playmaker FSMs in the Behaviour Trees as well?