Search Unity

FlowCanvas - Visual Scripting Similar to Unreal Blueprints

Discussion in 'Assets and Asset Store' started by nuverian, Apr 14, 2015.

  1. EricStoa

    EricStoa

    Joined:
    Aug 17, 2016
    Posts:
    2
    So, does anyone have any documentation on how to actually use this program? I've been trying to figure it out all day. The documentation at the site explains the UI, but doesn't really go into how to use it. No videos tutorials showing how to use it; no reference guide to the nodes; no detailed explanation of anything. This actually looks harder than writing code, where I at least have Unity's API reference to help me sort things out.
     
  2. IFL

    IFL

    Joined:
    Apr 13, 2013
    Posts:
    408
    @EricStoa - I wouldn't say that it's harder or easier than writing code, but FlowCanvas is faster for me in most cases. It also doesn't require script-recompile upon every change, which is a big time saver for larger projects. Are you having trouble getting started on a graph or are you having trouble doing something more complex? What are you trying to do that you can't figure out?
     
    nuverian likes this.
  3. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,019
    Hello Eric,

    The documentation does not only cover the UI at least in my perspective, but certain sections especially like "Understanding the Flow" as well all the root section of "Node Categories" explain better how FlowCanvas works and thus the basics required on how to create flowscripts. Each core node (Events, Flow Controllers) have a help text in it's inspector and at the bottom of the browser, describing what the node does, while Unity API reflected nodes have the official documentation shown instead. (For these to show please make sure that "Show Node Help" is turned on under the editor window "Prefs" dropdown.)
    A very nice learning resource is also of course the example project and macros which can be downloaded from the website Downloads section, which shows examples of how nodes can be put to use together.

    If you please let me know which part of FlowCanvas you need help with, I would be more than glad to help you. And of course if you have any suggestions on what you deem the documentation is missing more specifically, please let me know as well.

    Thank you.
     
  4. illinar

    illinar

    Joined:
    Apr 6, 2011
    Posts:
    557
    Greetings. I finally bought it to try out. I started to get a bit skeptical about using it since I know Unity C# inside out, and I got used to my workflow, but I want to see if FC will be able to make scripting faster.

    I got one issue right now. It seems that FC doesn't create types of any description, but how am I suppose to use it then? Lets say I make a.. "ZombieAI" graph. How can I then have variables of type ZombieAI in my other graphs, and in scripts..

    Do I need to create all types via script? But what about all variables and methods?

    I expected an object oriented approach like Blueprint has, although I was aware that FC doesn't generate scripts, but stills I was sure that it has a simple internal type system maybe without ability to use those types externaly as I now realize. I needed a visual scripting tool that can be used interchangeably with regular scripts. But so far I only see how to use FC to deal with level events, or to script "encapsulated" objects that are not aware of each other
     
    Last edited: Aug 31, 2016
  5. mkgm

    mkgm

    Joined:
    Apr 10, 2015
    Posts:
    134
    hey nuverian,
    any news about the video tutorials?
     
  6. nuverian

    nuverian

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

    First of all, thanks for getting FlowCanvas.
    FlowCanvas does not indeed create internal types of any kind since it does not generate code and is really not meant to be used as such. A FlowScriptController (as well as the Blackboard holding variables) can still though be used as a normal object reference and both provide an API to interface with them.

    So within you custom scripts, you wont have a variable of type ZombieAI (since such type does not really exist), but rather of type FlowScriptController. Then using the API, you can for example Send Events to the flowscript (to be used along with a Custom Event Node), or read/write to it's blackboard variables.

    Code (CSharp):
    1. using UnityEngine;
    2. using FlowCanvas;
    3.  
    4. public class ExampleScript : MonoBehaviour{
    5.  
    6.     public FlowScriptController fs;
    7.  
    8.     void Start(){
    9.         fs.SendEvent("Example1");
    10.         fs.SendEvent<float>("Example2", 13f);
    11.     }
    12. }
    FlowscriptCustomEvent.png

    This is also the same for sending events from within a flowscript to some other flowscript reference.
    SendEventOther.png

    It's really best to think of FlowCanvas something like what Unity's Animator Component and AnimatorController asset is, only respectively in FC being the FlowScriptController Component and FlowScript asset.

    Let me know if you have any questions or thought and thanks again.

    Hello,
    Summer was not that productive due to vacation, so unfortunately no news yet on that front, but I am getting back on track quickly.
    Thanks.
     
  7. illinar

    illinar

    Joined:
    Apr 6, 2011
    Posts:
    557
    @nuverian Thank you for the explanation. I think documentation doesn't cover the use of API and script interaction with each other (unless I missed it), and it definitely should.
     
  8. Max_Dirav

    Max_Dirav

    Joined:
    Sep 2, 2016
    Posts:
    4
    Hi, i'm really new in Unity. I'm a visual type guy, student in desain. I cant code for now but i need to create prototype fast. I feel the need for visual scripting. I'm on the fence whether i buy playmaker or flowcanvas. Can you give some advise for me? Can a total noob like me quickly use flow canvas? Thank you.
     
  9. Crossway

    Crossway

    Joined:
    May 24, 2016
    Posts:
    364
    I just start to work with it, looks really nice I need more time to see if it is the best visual scripting tool or not.
    Anyway I mentioned there is no actions for blend shapes (Morph system).
     
  10. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,019
    You are very welcome.
    I have replied to your PM just in case you've missed by the way.
    Thanks.

    Hello,

    Thanks for your interest in FlowCanvas.
    To take better advantage of FlowCanvas, an existing familiarity with Unity and at least the most basic theory of programming (how it structures together) is definitely a good thing to know, or otherwise you might easily become a bit lost. I think this is also true for any visual scripting system, but more so for FlowCanvas.

    Let me know if you have any questions at all of course!
    Thanks.

    Hey,

    Thanks! I am glad you like FlowCanvas thus far :)
    For Blend Shapes you can use the existing Unity functions of the SkinnedMeshRenderer. To do that one way is to simply drag and drop the gameobject that has the SkinnedMeshRenderer component attached and this will get you a menu to select the method you want (for example SetBlendShapeWeight) like in the image bellow.
    BlendShapeMethods.png


    Another way if you want to always have the SkinnedMeshRenderer methods available to you in the default nodes menu, is to open up the "Preferred Types Editor", search SkinnedMeshRenderer at the top and add it to the list of types with the "+" button:

    PreferredTypesEditor.png

    Doing the above will from now on give you the type's methods and properties in the default node menu and under the "Functions/Reflected" category:
    NodesMenu.png

    Let me know if that works for you, or if you meant something different.
    Thanks! :)
     
    Crossway likes this.
  11. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,019
    The new FlowCanvas version 1.3.0 is now live on the asset store.
    Following are the changes:

    • New: Added 'OnApplication...' event nodes.
    • New: FlowScripts can now be paused correctly.
    • New: FlowScripts are now correctly reset when Stopped/Restarted.
    • New: When a node or connection is selected, used Blackboard variables by that selection will now be highlighted.
    • New: Dynamic and missing parameter variables will now show in red within the Node information UI.
    • New: Improved Variable Separators and it's now possible to have a custom name for them (double click to edit).
    • New: Added ability to colorize Canvas Groups through it's right click context menu.
    • New: Added ability to colorize Nodes through their inspectors.
    • New: Reflected Nodes & Variable Bindings now work with base definition of method and properties (The lowest implementation in class hierarchy is used).
    • New: Right Click in the Node/Task Browser window now goes back one step.
    • Fixed: Input Axis Events from not being called when axis becomes zero.
    • Fixed: Further performance improvements relevant to memory allocation on initialization.
    • Fixed: Improved memory allocations when restarting a FlowScript.
    • Fixed: "Send Global Event" from sending multiple events in graphs of the same gameobject.
    • Fixed: "Create Defined Blackboard Variables" command, that was incrementally adding Global BB name (eg "Global/") for global variables.
    • Fixed: Inability to Bind Blackboard Variables when editing a prefab.
    • Fixed: AOT Classes Generator for non-namespaced classes.
    • Fixed: When duplicating or pasting nodes, they will now be auto selected.
    • Fixed: Win Universal Apps 10 support.
    • Fixed: Requirement of ".Net" backend (instead of ".Net Subset").
    Cheers! :)
     
    Tinjaw likes this.
  12. amoka

    amoka

    Joined:
    Dec 18, 2015
    Posts:
    39
    Hi,
    I noticed the update and I see that the new version requires Unity 5.4 and so I couldn't download the asset into my 5.2.3 project.
    Is it neccessary to switch to Unity 5.4 in my project because of some braking changes, or could I safely use this new Flowcanvas (1.3.0) version if I download it with 5.4 and import it into my old 5.2.3 project?
     
  13. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,019
    Hello,
    Yes ,you can safely update the package from the Asset Store window in Unity and import it without any problems :)
     
  14. amoka

    amoka

    Joined:
    Dec 18, 2015
    Posts:
    39
    I did, updated FlowCanvas in such manner, and there are no errors after importing, but I found a bug. The "Wait" action always ends with an error.

    Also, there is something strange with disabling nodes. If I disable a node, the connection line will become grey. Now if I add another incoming connection to this node (to the Flow port), this new line will be blue while the old one remains grey. Right clicking this node offers "Disable". If I click "Disable", both lines will become grey. Clicking then "Enable" will make both lines now blue.
     
  15. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,019
    Hey,
    Indeed there is a bug there introduced in the last version accidentally and I have already submitted the fix to the asset store. Meanwhile, I've send you a PM with the fix, so that you don't have to wait the update to appear on the store.
     
  16. amoka

    amoka

    Joined:
    Dec 18, 2015
    Posts:
    39
    Thanks! The fix worked.
     
    nuverian likes this.
  17. josephriedel

    josephriedel

    Joined:
    Oct 5, 2013
    Posts:
    13
    Hi I just picked up FlowCanvas and NodeCanvas and they seem great. How do you recommend serializing the graph state for a saved game? It's easy to save blackboard variables, but latent nodes seem particularly tricky to save/restore. Do you plan to develop an API for this? There's a lot of tricky details there, including versioning of the graph, so players could still play a saved game with old graph state (there's no real perfect way to do this except try to ignore state for nodes that aren't there). Thanks
     
  18. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,019
    Hello and thanks for getting FlowCanvas and NodeCanvas! I am very glad you like them so far :)

    Graphs can already be serialized to json pretty similar to how Blackboards also can, by using the Serialize method they provide and then of course later on you can also use the Deserialize method to load back the json. This is also how graphs are serialized internally (json), but these methods can also be used for when saving/loading the game.

    Have you tried using these methods? If not and you need any help with that, let me know.

    Having said that, latent action nodes and other similar non-event, self-updating nodes like Coroutine, are indeed very special and at least right now, their runtime state is not serialized, neither is able to be restored.
    I would probably recommend avoiding saving the game when any of such latent nodes is active, or avoid them being active when saving is possible and generally use them only for more temporary things happening in the game.

    Let me know,
    Thanks!
     
  19. amoka

    amoka

    Joined:
    Dec 18, 2015
    Posts:
    39
    I stumbled upon Dynamic Variables while trying to set a value, but I couldn't find them in the documentation. What are they and how to use them? Is there a description somewhere?
     
  20. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,019
    Hey!

    Dynamic Variables basically allows to directly input the name of a variable which will be created at runtime and only when/if it is needed, without having one predefined in the blackboard. The idea behind them is that they can be used when you need a very temporary variable within a small scope (for example between a small group of nodes).

    To use them, you simply write a name for them :)
    In runtime, a variable of that name and type will be created in the blackboard if the parameter is a "setter".
    If the parameter is a "getter", it will read from a variable of that name and type from the blackboard and if none exists, the default value of that type will be returned instead.

    The downside though, is that since they only work by naming convention (thus there is no real referencing anywhere), they might become difficult to manage if you use them a lot across the flowscript.

    I'd personally avoid using them and have previously thought of removing them, but I know some people who like them a lot, so they are still there :)

    Let me know if that clarifies what they are.
    Thanks!
     
  21. josephriedel

    josephriedel

    Joined:
    Oct 5, 2013
    Posts:
    13
    Hi nuverian, I really do appreciate this addon. Just to clue you into what we are doing with it, it's a game called Deadhold, which you can see some early alpha footage here: https://www.twitch.tv/drfisj/v/91387743 - I'd recommend starting around 3:30. This video will probably be purged by twitch soon (NOTE anything you find publicly is over a year old from builds of the game in UE4 before we switched to Unity so you should ignore those if you happen to look). If you scrub to 1:12:00 you can see a match with art that is closer to final.

    We are just 2 AAA devs working on this game together (I write the code) and I had a version of "scripting" that linked together GameObjects and we recently switched to FlowCanvas.

    FlowCanvas is responsible essentially for level scripting (unit level AI is in c#), so it does large events like moving squads of units and responding to conditions. I integrated FlowCanvas in 2 days, including some minor improvements in places and it's going to be really good for us. So I hope you take some satisfaction knowing that your work is being used in quality stuff (I'm sure we aren't the only ones).

    This is one of the best assets available. Nice work.

    I'd certainly like to contribute back some improvements (thinks like an Abort pin on latent tasks, WhileTrue and WhileFalse latent nodes, RandomDelay, Delay, RandomSequence). I do think that some of the names of nodes like "Split" should be called "Sequence" like in UE4 and I've changed that in our branch (I'm happy to have you ignore those changes of course). If you are interested let me know and I can send you a .zip with those, it should be easy for you to integrate.

    [[[[I do have a question about performance regarding drawing the canvas graph in the editor: We will likely have graphs that are thousands of nodes (hundreds easily) and I did a small test of about 200 nodes copied and pasted and it does get quite framey. I haven't looked at the GUI code but I'm wondering if there are any plans or low hanging fruit (like clipping to the window) that you plan to do there?]]]] -- See my later post, I optimized the node rendering so disregard this.
     
    Last edited: Sep 30, 2016
    IFL likes this.
  22. IFL

    IFL

    Joined:
    Apr 13, 2013
    Posts:
    408
    I consistently have editor performance issues. That's my #1 complaint with FC, and yet I still continue to use it even when it's horribly sluggish because its functionality is too valuable. It'd probably help if the nodes were collapsible and/or had LOD & culling.
     
  23. josephriedel

    josephriedel

    Joined:
    Oct 5, 2013
    Posts:
    13
    I spent a few hours today and got FC to draw a ~2000 node graph at a decent speed so my performance concerns are no longer really valid.
     
  24. IFL

    IFL

    Joined:
    Apr 13, 2013
    Posts:
    408
  25. josephriedel

    josephriedel

    Joined:
    Oct 5, 2013
    Posts:
    13
    It took some relatively minor changes across about 5 files related to rendering the graph, the big speed-up was clipping the connections to the visible window (the nodes already were clipped), and not rebuilding IDs every redraw (only when needed).
     
  26. IFL

    IFL

    Joined:
    Apr 13, 2013
    Posts:
    408
  27. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,019
    Sorry for late replies!

    @captainpickle
    Thanks a lot! I am really glad you like FlowCanvas and to know that you are using it in your game. Deadhold looks very promising and in many ways it reminds me of those great old games called "Myth" which I truly loved ! I bet you had some inspiration out of them, but if not that's great as well and I am looking forward to the release :)

    It seems that we are really working on parallel here!
    I also sit down yesterday after seeing your first post and improved the editor performance. Certainly not by coincidence, the things I also modified for big editor performance gain, were exactly Connections clipping and UpdateNodeIDs (plus some more minor things) ;)
    I'd certainly love to see your modifications if you want so, cause maybe you did something better than I did of course!

    Regarding latent action nodes and after a request on the official forums, they now do have a "Break" input just like you initially suggested. Of course, if you want to send me anything, by all means please do so to support@paradoxnotion.com. I'd love to check those things you made/improved out and I would really appreciate that!

    Once again, Deadhold looks great already and I really wish you the best of success with it!
    Thanks again!

    @IFL
    As stated above, the editor performance is coming in the next update ;)
     
    IFL likes this.
  28. eses

    eses

    Joined:
    Feb 26, 2013
    Posts:
    1,233
    Hi there everyone!

    I've been looking into FlowCanvas for a while now. Actually I might also be interested in NodeCanvas too.

    The main problem I have:
    It's a bit hard to find out main differences between FlowCanvas and NodeCanvas. I know NodeCanvas revolves around concepts of behavior trees and state machines, but what actually can be achieved with them is unclear to me.

    I have been reading again and again FlowCanvas and NodeCanvas pages, however pretty and neat they are they lack practical examples. Also, I just sat down for 3 hours and went through both manuals, they are pretty similar in first chapters and later chapters don't give me answers I'm after (or more like I have to guess).

    I've so far used a little bit of Playmaker and Behavior Designer. I got BD "just because" as I had been pondering between getting it or getting NodeCanvas/FlowCanvas and it was in sale a while ago.
    However, I didn't like it from the first moments I used it. Same goes for Playmaker, it feels it has very clumsy UI and way too many windows. So far I've been mostly using Unity to learn coding in general, and I've only used C#, but I'd potentially like to use some visual scripting on side for change.

    My questions:
    What can I actually achieve with FlowCanvas?

    It seems to be FlowCanvas is more like visual scripter like Playmaker, actually executing actions on GameObjects.

    However what bothers me, is how much flow/logic am I able to get with FlowCanvas. As NodeCanvas seems to be fully focused on logic/flow instead of actually working on stuff directly, this bothers me a bit if FlowCanvas can do stuff that overlaps with NC.

    Scenarios (examples off the top of my head):
    I guess I can make a light bulb light up when player enters a room or a treasure chest that opens when clicked?
    I can make a trigger on floor, when enemy walks into it, I can drop a stone on his head?
    But can I create "AI like" (in most limited scope) behavior with FlowCanvas?
    Can I make a guard that patrols and when he hears a sound, he starts moving towards the sound source?
    Or is it getting already too circular in nature and would I be better of using NodeCanvas?
    I know this can be done with Behavior trees, but can I do this kind of flows/logic with FlowCanvas?

    OK that's it. Sorry if I sound a bit too dense.

    Somehow it seems to me based on Asset Store description, that FlowCanvas is a little brother of NC, as there is upgrade path. So am I going to have to get NC to be able to fully realize visual scripting with FlowCanvas or not?

    I'm a bit reluctant to take a gamble with nearly 80€ (thanks to local VAT). There are no videos or common examples or comparison between FlowCanvas and NodeCanvas and I didn't find any YouTube videos last time I checked. But overall marketing material and visual look alone makes me quite intrigued about FlowCanvas.

    Thanks in advance!
     
  29. amoka

    amoka

    Joined:
    Dec 18, 2015
    Posts:
    39
    Thanks for the clarification. The topic is not entirely clear to me yet, but I'll read this over again when I'll need this technique.
     
  30. IFL

    IFL

    Joined:
    Apr 13, 2013
    Posts:
    408
    @eses - FlowCanvas is visual scripting - almost everything that you do in c# runtime scripts can be done in FC. NodeCanvas is a way to run scripts based on logic. It would take you forever to recreate what NC does inside of FC, but it's likely possible. It'd take similarly long to recreate NC in c#.

    In the examples that you listed (light bulb, treasure chest, and stone trap), I'd use FC, and it'd take very little time to do any of those things. For AI, I'd use NC + FC, but it'd take a bit longer because of everything that's involved in the guard's patrol logic. To answer your question about doing the AI inside of FC, yes, you can do it. It might take a really long time though, and any changes to the logic-flow would be more difficult.

    So if I wasn't clear, FC = low-level scripting, NC = low or high-level logic. Does all of this make sense?

    [EDIT::] Clarification: both FC and NC are very capable of high and low level scripting and logic. What I said before this edit is more about where I think their strengths lie. I don't want my "FC = ..., NC = ..." statement to be taken too severely.
     
    Last edited: Oct 6, 2016
    nuverian, eses and TeagansDad like this.
  31. josephriedel

    josephriedel

    Joined:
    Oct 5, 2013
    Posts:
    13
    nuverian likes this.
  32. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,019
    I am very sorry but I missed your post for some reason!
    Also thanks for your interest in the tools of course! :)

    There are some things that you are able to do with both NodeCanvas and FlowCanvas, but each is capable on itself and geared more towards different things. NodeCanvas is geared more towards high-level AI behaviours and logic while FlowCanvas more towards low-level scripting. @IFL was actually very spot on with his answer. :) All of your example scenarios can potentially be created with either NC or FC, while for most of them other than AI, FC will be a better fit since it is an event-based system.

    Using both together of course gives a wider range of available tools at your disposal, where for example you could have an NC State Machine, where each state instead of being a list of NC pre-made actions, it could be a full FC visual script. Doing this though or having both is certainly NOT necessary.

    Here is another post on the differences found on the FlowCanvas forums for your convenience: :)
    http://flowcanvas.paradoxnotion.com/topic/bt-vs-fsm-vs-vs/#post-663

    Any you have any further questions, just let me know.
    Cheers!

    Let me know if you need more information when you want.
    :)

    Thanks a lot for your input on this! This is very spot on.

    Thanks a lot as well!
     
    eses likes this.
  33. tony_codesignreality

    tony_codesignreality

    Joined:
    Sep 5, 2016
    Posts:
    2
    Hi nuverian!

    I'm using FlowCanvas with the new Unity 5.5, and I'm getting exceptions trying to create a bound FlowScript graph (asset graphs are created successfully). I've attached the callstack below.

    When I followed it down, it's because MonoScript.FromScriptableObject() is returning null when passed an instanced FlowScript. Looking at the FlowScript.cs in the inspector, it's saying that "No MonoBehaviour scripts in the file, or their names do not match the file name". Any idea why this might be happening?

    Thanks,
    Tony


    Can't resolve MonoScript for ScriptableObject type 'FlowScript'
    UnityEngine.Debug:LogError(Object)
    ParadoxNotion.Design.EditorUtils:AddScriptableComponent(GameObject, Type) (at Assets/Addons/ParadoxNotion/FlowCanvas/Framework/_Commons/Design/PartialEditor/EditorUtils/EditorUtils_AssetCreation.cs:80)
    NodeCanvas.Editor.GraphOwnerInspector:NewAsLocal() (at Assets/Addons/ParadoxNotion/FlowCanvas/Framework/Design/Editor/Inspectors/GraphOwnerInspector.cs:64)
    NodeCanvas.Editor.GraphOwnerInspector:OnInspectorGUI() (at Assets/Addons/ParadoxNotion/FlowCanvas/Framework/Design/Editor/Inspectors/GraphOwnerInspector.cs:124)
    UnityEditor.DockArea:OnGUI()
     
  34. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,019
    Hello Tony,
    This is a known issue with Unity 5.5 and will be fixed shortly in the immediate next update. Current Unity 5.5 is not really supported until the new FlowCanvas version is online. Sorry. :/
     
  35. tony_codesignreality

    tony_codesignreality

    Joined:
    Sep 5, 2016
    Posts:
    2
    Hi Nuverian,

    Thanks for the quick reply! That's great to hear that it'll be fixed in the next update, do you have an ETA on when the next version will be out?

    Thanks,
    Tony
     
  36. nuverian

    nuverian

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

    You are very welcome :)
    The new version will be submitted to the asset store by the end of the week.

    Thanks!
     
    IFL likes this.
  37. IFL

    IFL

    Joined:
    Apr 13, 2013
    Posts:
    408
    Any chance that Types could be maintained if they're moved to/from special folders? I had a major freak-out when my graphs lost links due to me moving some code assets to the Standard Assets folder - got them back, but I thought I lost a ton of work at first.
     
  38. nuverian

    nuverian

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

    When moving a type into or out of a special folder, the Assembly which it belong to is changing. When this is done, FlowCanvas will still fallback and try to load the type by it's name and considering there are no name conflicts, the type will be loaded correctly.
    Checking a bit more through this, I realized that within this fallback there is problem with generic types (such as FC value links are). Was this the case, in that the types moved into special folder were types that were used in Value links?
    I will take a look at this and try to make the fallback work for generic types as well.

    Thanks!
     
    Last edited: Oct 22, 2016
  39. IFL

    IFL

    Joined:
    Apr 13, 2013
    Posts:
    408
    Yes. Also, you're awesome.
     
    Last edited: Oct 23, 2016
    immortalx likes this.
  40. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,019
    Thanks :p
    This issue is now fixed and generic types will be retained regardless of assembly or namespace changes along with their arguments just like non-generic types do right now :)
     
    IFL likes this.
  41. immortalx

    immortalx

    Joined:
    Sep 16, 2013
    Posts:
    2
    @nuverian any news about the new version coming out?
     
    IFL likes this.
  42. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,019
    Hey,
    I'm very sorry for the late reply, but I was ill for the last couple of days and also why there is a delay for the new version, but it is coming this week.

    Thanks!
     
    GamerPET and immortalx like this.
  43. immortalx

    immortalx

    Joined:
    Sep 16, 2013
    Posts:
    2
    No worries man, health comes first!
     
  44. AbyssWanderer

    AbyssWanderer

    Joined:
    Mar 15, 2016
    Posts:
    75
    Hello everyone.

    I am a gamedesigner and I am considering to purchase Flow Canvas for my developer to let him making nice and clean game architecture.
    And I got slightly confused.
    My understanding is that Flow Canvas is visual scripting for any mechanics, any controls, any code blocks that transfer data each other. So for architecture in general.
    On the other hand Node Canvas is for AI and dialogs.

    Now my confusion:
    1) Why Flow Canvas is cheaper than Node Canvas? Flow Canvas looks like more universal, basically one could make AI behavior with solely Flow Canvas, right? But beyond that Flow Canvas can much more.
    2) Why Flow Canvas is less popular than Node Canvas? Again, it is more universal. I understand that it was released later, but still... And there are many SMs, BTs and dialog systems on the store fpr Node Canvas to compete with.
    3) Main confusion: why can I upgrade from Flow Canvas to Node Canvas, but can't make vice versa? It is stated that these are different tools, then why is tis one-sided transition?

    Other questions:
    4) What about integration with Apex? Some time ago I saw Apex's integration with Node Canvas on their page - but now I can't see it both here and there. Or am I wrong here?
    5) Do I still need Ootii's Event System Dispatcher? Sorry if this is silly question as these are different tools, but in my non-programer's opinion both Canvases could have such functionality themselves.

    Thanks in advance.
     
  45. sanpats

    sanpats

    Joined:
    Aug 24, 2011
    Posts:
    343
    As a customer who use both NC and FC for over a year.
    1) Cannot comment on pricing policy, but FC is much lower level than NC. It is much more complicate to make AI using solely FC. FC is like coding in C# but instead of written code, it is visual scripting.
    2) Many people are more comfortable written lower level code in C# the traditional way I guess. From my experience, the complicate code or the code that need extreme performance should be done in the traditional way.

    My personal opinion is visual scripting can help people that prefer it, but cannot entirely replace coding, unless the project is quite simple.
     
    nuverian likes this.
  46. TeagansDad

    TeagansDad

    Joined:
    Nov 17, 2012
    Posts:
    759
    Visual scripting is also nice for implementing higher level functionality that you will likely be changing frequently throughout development, as you won't trigger a recompilation every time you make a change. Spells, special attacks, interactive objects, the kind of scripting traditionally done by level designers (spawning, triggers, etc) are all good candidates.
     
  47. AbyssWanderer

    AbyssWanderer

    Joined:
    Mar 15, 2016
    Posts:
    75
    Thank you for clarifying this, guys.

    Still, sanpats, you have risen new question:
    - We never considered full replacement of coding, cause making anything non-standart with visual scripting will make 10 sq.miles scheme... do I need FC then?
    I was considering it more like a connecting interface between blocks of code (scripts).
    Like in World Machine: http://prnt.sc/d42jea - each non-primitive node here can be entered, and there will be low-level scheme of nodes. Only in case of FC, node will contain scripts instead of low-level nodes.
    Do I get it correct?

    Also will be glad to hear from nuverian about pricing policy (out of curiosity), and integration with Apex Path.
     
  48. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,019
    @AbyssWanderer

    Hey,

    Thanks for your interest in FlowCanvas.
    This is indeed very much what FC is and what it can do for you. You can use it to create a flow of code blocks/nodes, where these nodes can either be directly taken from functions in existing scripts, or alternatively, you programmer could write his own nodes for you to use :)
    In both cases you will have a visual flow of functions that will take place when some event is triggered (or continuously).

    Regarding pricing, the price of FlowCanvas is slightly lower than NodeCanvas simply because I find the target audience to be smaller, whereas in contrary I would like to urge more people to try it out.
    As far as the one-way upgrade option, the upgrade is offered more like a discount for already FC customers that want to also get NC. The reason this is one-way only (FC -> NC) is simply because the asset store does not provide an option to also do it in reverse. The asset store is really limited to us publishers as far as pricing options, upgrades, discounts and bundles go.

    Regarding APEX integration, it is unfortunately postponed for a later time, because time and effort was put to make the core packages ready for Unity 5.5. Apex integration will come soon after that though.

    Finally, regarding Ootii's Event System Dispatcher, you don't need it to use FC or NC since both have their own event systems, although I'd recommend you get it anyways because it is a very nice event system from a very nice developer. :)

    If you have any other questions, by all means do let me know.
    Cheers!
     
    TeagansDad likes this.
  49. AbyssWanderer

    AbyssWanderer

    Joined:
    Mar 15, 2016
    Posts:
    75
    Thanks for clarification, nuverian!

    Regarding upgrading policy - you might be outdated, I saw assets that have cross-upgrade-function. Even found them for you:
    HQ Photographic Textures Grass Pack Vol.1
    HQ Photographic Textures Grass Pack Vol.2
    You can upgrade from each of them to another one. So if you want NC's audience to try FC, you probably can try it.

    Regarding Apex Path: I assume I will have both NC and FC functioning well with Apex - but there will be no "one-button-integration", so we will have to push commands from NC to Apex manually, right?

    Lastly, regarding Ootii's Event System Dispatcher: I understand I don't need it (you can't sell assets that require 3d party assets without anouncing it) - but do you recomend it? If yes, can it easily be used instead FC's and NC's native event system?
    I might have truly large amount of events each frame (in open world game), so i want to be sure events' system will maintain it nicely.

    Sorry for so many questions - as an indie I have to make researches before buying, can't mindlessly purchase every single asset that seemed to me useful =)
     
  50. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,019
    Hey!
    You are very welcome :) I honestly do not know how the said publisher made it possible, but I clearly can't do so through the publisher administration menu provided by Unity :)

    Regarding Apex Path integration, it will work with both NC and FC, yes. When I start working on the integration, I will certainly try to covert as much ground as possible so that less custom function calls are needed.

    I definitely recommend ootii's Event Dispatcher since it's a great utility you can use in any game. You won't be able to totally replace native NC/FC event system though, but you will still be able use them together. In FlowCanvas for example, I have just created an EventNode that listens to ootii's dispatched events. (an integration)

    Code (CSharp):
    1. using com.ootii.Messages;
    2.  
    3. namespace FlowCanvas.Nodes{
    4.  
    5.     public class OotiiEventNode : EventNode {
    6.  
    7.         public string eventName;
    8.         private FlowOutput fOut;
    9.  
    10.         public override string name{
    11.             get {return string.Format("{0} ['{1}']", base.name, eventName);}
    12.         }
    13.  
    14.         public override void OnGraphStarted(){
    15.             base.OnGraphStarted();
    16.             MessageDispatcher.AddListener(eventName, EventReceived);
    17.         }
    18.  
    19.         public override void OnGraphStoped(){
    20.             base.OnGraphStoped();
    21.             MessageDispatcher.RemoveListener(eventName, EventReceived);
    22.         }
    23.  
    24.         void EventReceived(IMessage message){
    25.             fOut.Call(new Flow());
    26.         }
    27.  
    28.         protected override void RegisterPorts(){
    29.             fOut = AddFlowOutput("Received");
    30.         }
    31.     }
    32. }


    EventNode.png
    Then from any place in your game that you call:
    Code (CSharp):
    1. MessageDispatcher.SendMessage("MyEventName");
    ,
    "Yei!" will be logged in the console :)

    I think I will wrap up the ootii's event node created to support parameter as well, and will upload it to the Downloads sections of FC.

    If you have any other questions, just let me know.
     
    TeagansDad and IFL like this.