FlowCanvas - Visual Scripting Similar to Unreal Blueprints

2067233--134830--FlowCanvas Cover.png

FlowCanvas is a powerful visual scripting system to create and manipulate virtually any aspect of gameplay elements for your Unity games in a very similar fashion to Unreal Blueprints and Autodesk Stingray!

FlowCanvas gives the full flexibility of concepts typically available only in code, through an intuitive visual node editor, empowering you to create things from quick prototypes, up to complete game mechanics, without writing a single line of actual code!

Designers: Prototype, iterate and realize complete gameplay mechanics without coding, while learning how code works the fun way! If you are familiar with Unreal Blueprints, you will feel right at home!

Programmers: Interface with your code at a higher level, creating decoupled systems and/or provide new self-contained nodes to designers with an easy and well documented API!

By connecting Events, Flow Controllers, Actions and Functions together, you can create and manipulate things like:

  • Player Controls
  • Level Events
  • Gameplay Mechanics
  • User Interfaces
  • Player Interactions
  • and much more…

Feature Highlights:

  • Work in a complete, intuitive Visual Node Editor with all expected features! (undo/redo, zoom in/out, copy/pasting, multi-selection, duplicating, comments, groups, JSON import/export and more…)
  • Visualy Debug flow execuction and value transfers at runtime!
  • Create custom Macro nodes, also through visual scripting and reuse them anywhere or share with others!
  • Live Edit FlowScripts in runtime.
  • Use any type of variables out of the box. (Classes, Structs, Enums, Lists, Interfaces…)
  • Use automatically generated nodes for all and any Unity functionality, your code and 3rd party APIs.
  • Work expresively due to intelligent, automatic Value Conversions and Casting!
  • Filter nodes with Port Type-Sensitive context menus.
  • Sync variables over the network using UNET.
  • Extend and create custom nodes with ease, even with support for Generic(T) nodes!
  • Leverage a seamless integration with NodeCanvas BehaviourTrees and FSMs!
  • Exceptional Performance! No allocations.
  • All Platfroms Supported!
  • Full C# Source Code included!!

FlowCanvas is inspired by Unreal’s Blueprints. It however does not generate scripts, but rather works directly in runtime without the need to recompile.

Asset Store
Website/Docs/Forums

Check out @AndyGFX example game here
Thanks Andy :slight_smile:

5 Likes

Can’t wait for the release! Looks awesome!

Hello.

Thanks a lot! I am glad you like what you see :slight_smile:

Bookmark. :wink:

Can you diff it?

https://www.unrealengine.com/blog/diffing-blueprints

I understand that Flow nodes are executed left to right, but Value nodes are executed right to left. Any reason for that?

By the way, I can’t wait to try out the final version :slight_smile:

Cheers :slight_smile:

A FlowCanvas visual script is not actual code neither it generates code. As such it can not be diffed, no.
This is not unreal blueprint per se. It’s rather inspired by how blueprints work as far as creating the visual script :slight_smile:

Cheers!

Hey elecman,

First of, I want to thank you for the feedback and suggestions you have provided thus far. It was realy helpful :slight_smile:

To answer your question, Flow nodes, or rather Flow ports, are like you said executed one after the other very similar to how a program executes functions in order.
On the other hand, Value Ports are not really executed. They are simply the parameters of those “functions”. As such, only when a function is called, the parameter values of that function are “fetched” and “fed” to the function.
If a Flow Port is never executed, the parameter Value Ports of that same node are never fetched, since they are not really needed.
So, value ports (parameters) are not really executed. They are rather requested, and thus this forth and backwards “movement”.

I hope I managed to explain that with some clarity, but if not, let me know :slight_smile:

Cheers!

Oh I forgot to ask, but were you able to get ‘Collapsing’ working? In Unreal 4/Blueprints, there’s the option to collapse your nodes to graphs/macros (thinking nesting) which is terribly useful. :smile:

Thanks man!

-Steven

Hey Steve :slight_smile:

There is the ability to create Macros and reuse them within different FlowScripts (or other macros). Double clicking a macro node opens the macro up inline (nested) with the ability to go back to the previous graph.
Now, with that said, unfortunately automaticaly creating a macro out of a multiple node selection is not there yet. So right now the way to do this is to create a new empty macro, define the inputs/outputs and cut/paste the nodes you want in it.

Of course, I know it’s not the same or as convenient, thus automaticaly creating macros out of node selection is in the roadmap and will be there eventualy :slight_smile:

Cheers and thanks Steve!

Documentation is now online:
http://flowcanvas.paradoxnotion.com/documentation/

No problem. Glad to help :slight_smile:

Thanks for the explanation. It makes perfectly sense now. I think it would be worth putting that analogy in the manual.

I can now also see how I can make it look like a bunch of function nodes are executed left to right, so it looks like an electrical circuit. This would be done by detecting a change on any of the inputs (using some sort of buffer node), and then requesting the final output if a change happens. However this will quickly become spaghetti in larger graphs, not to mention the repetitive work required. Would it be possible to have this “extra” functionality build in instead?

About the “switch” function node we talked about before, this can be implemented this way (pseudo node code):

2068777--134960--switch.jpg
Note: you can change “false” by “0” to make it work for a float or int too.

//Classical electrical switch.
bool SingleSwitch(bool input, bool switchPosition){

    //Switch closed, connecting input and output wire.
    if(switchPosition == true){

        return input;
    }

    //Switch open, breaking input and output wire connection.
    else{

        return false;
    }
}

//Electrical switch with two outputs.
void DualSwitch(out bool outputA, out bool outputB, bool input, bool switchPosition){

    //Switch connecting the input with output A.
    if(switchPosition == true){

        outputA = input;
        outputB = false;
    }

    //Switch connecting the input with output B.
    else{

        outputA = false;
        outputB = input;
    }
}

I read the new quick start guide and it is clear and well explained. A few small notes though:

This sounds better: “Press Edit to open up the editor window.”

This sounds better: “Another thing worth mentioning about connecting Value Ports together, is that…”.

This sounds better: “As such, NodeCanvas documentation for the most part, is also valid for FlowCanvas”.

One last thing, I would call the blackboard context menu “Get blackboard” and “Set blackboard” instead of simply “GET” and “SET”.

Other than that, great work!

Are you considering having the different categories of node have their own color/shape? Clearly I’m comparing this to Blueprint, and over there I find being able to quickly locate an Input or Action for example, or differentiating between variable types very helpful.

-Steven

Will it be possible to execute flow scripts in editor (not in Play mode)?

Looks interesting. I found we didn’t use nodecanvas in the end for AI because it was just too much, but this looks like a simpler and more direct way of working with nodes, which suits me more. I don’t need the decision making to happen via nodes, but my code, and to just wire code up for artists and designers. So an artist might find it simpler and easier to choose from my own high level functions instead and make simplistic comparisons.

Hey, you are welcome.

I went ahead and tried what you suggest. The result is a “Conditional Event” node, which takes one boolean input and has 2 flow outputs. When the boolean ‘condition’ input change, ‘On True’ or ‘On False’ is called once.
Of course this node requires constant checking of the boolean input for changes and kind of breaks the rules of event nodes, but hey, it works. Is that what you mean?

2072880--135256--Conditional Event.png

Regarding this, I’ve added a SwitchValue Function node which returns either of the 2 input values based on an input boolean condition.

2072880--135257--SwitchValue.png
As for the dual switch, it can’t realy exists as a Function node. Basicaly, anything that has a return type of void, needs to be called, thus needs Flow Execution.
Possibly the ‘Switch Condition’ can suffice.

2072880--135260--SwitchCondition.png

Thanks, as well for the suggestions and corrections. I will put them to good use :slight_smile:

Cheers!

Hey Steve,

Right now input/output names are color coded based on the port type. I tried coloring the connection lines as well, but the colored lines all around, made it look quite confusing. I can redo and post an image if you like to elaborate.
All the “Exec” ports (called Flow ports here) have this “►” triangle next to their name.
There is also some color coding in the node titles based on their type, like for example Events are red, Flow Controllers are blue and the rest are light orange.

Are you suggesting a different color for the node graphic itself, or some identification icon maybe?
I am open to suggestions :wink:

Cheers!

Hey,
Right now it’s not possible, but I can certainly look at this feature since it can be achieved.
There could be some EditorUpdate event node, but of course it will require extra care on what the flowscript will actualy do.

Thanks :slight_smile:

Hey there,

I would personaly not promote this as an AI tool although it can be used so, up to some extend. I think NC and generaly speaking behaviour trees, are best suited for AI behaviour, where this being an event driven system, is best suited for reactions to player interactivity. At least that’s my opinion.
Of course, its a very broad system, can be used in many ways and you can extend it a lot. So as far as it suits your needs, it doesn’t really matter :slight_smile:

Cheers!

I have to reply quickly but you have seen Blueprints coloring coding no? Just like that! :smile:

Thanks Nuvi

-Steven

Thanks for the new nodes. That should do the trick. The conditional event node idea looks great. It might not be event based, but it does add more flexibility. You could make a special note in the manual stating it is not event based. It shouldn’t affect performance tough if a bool is used, or even with a float I think.

I’m very eager to see what the price will be. This might be the only asset I buy.

Glad to see this finally released. =D

How well does it integrate with NodeCanvas? Is it possible to use a FlowCanvas graph as a NodeCanvas action?

Not yet released. Any time now, it is already submitted to the Asset store.