Search Unity

  1. Unity 2019.2 is now released.
    Dismiss Notice

[RELEASED] Nottorus - Unlimited Visual programming plugin

Discussion in 'Assets and Asset Store' started by Stridemann, Apr 4, 2016.

  1. PawelS77

    PawelS77

    Joined:
    Jul 15, 2017
    Posts:
    7
    For me it changes UnityEngine.UI.Button to UnityEngine.Experimental.UIElements.Button, which doesn't have the onClick event.

    Edit: Nevermind, it works properly for me now. I don't know what I did wrong before.

    As for question #2, I realized that I can create a class with static members instead of a static class.
     
    Last edited: Sep 15, 2017
  2. antoripa

    antoripa

    Joined:
    Oct 19, 2015
    Posts:
    1,158
    Hi .. I am going to buy the asset .. I would just understand ;
    1) Will it support 4.6 .Net in the future .. Unity should release it with 2017.3.. currently in 2017 is experimental function
    2) Can I create function or node to recycle ? .. I was checking the other visual script assets and I see that some has this kind of option ..
    Thanks
     
  3. Szaruga

    Szaruga

    Joined:
    Jan 29, 2016
    Posts:
    281
    Problem number 1:
    I created a new project with two simple Nottorus MonoBehaviour scripts, in the first one I created a static variable of the type of the second one, and I tried to set it using the Awake function of the second one (see screenshots). I got a precompiler error, visible on the second screenshot. Can anyone explain to me why it happens?




    Problem number 2:
    If I have a function that is static and change it to default, then all scripts are corrupt, my types variables change to bool.
    I have done various tests and still the same, so if you can not change such things then please block this. ;) :(

    edit//
    I'm almost sure that problems arise when I change a variable / function from static to default or vice versa.
    As a result, there are bugs that need to be correct, but why in all my structures, my variable types turn into bool and there are lots of bugs everywhere.
     

    Attached Files:

    Last edited: Sep 17, 2017
  4. PawelS77

    PawelS77

    Joined:
    Jul 15, 2017
    Posts:
    7
    I created a simple script that is supposed to create a new copy of a GameObject (selected in the inspector) and set a variable to its reference (see screenshot).

    upload_2017-9-18_23-40-9.png

    But it actually creates two, and the C# code looks like this (Instantiate is used twice):

    Code (csharp):
    1.  
    2. //MD5Hash:6c0062225cf19f121a8439a57f014b34;
    3. using UnityEngine;
    4.  
    5.  
    6. public class inst : UnityEngine.MonoBehaviour
    7. {
    8.    public UnityEngine.GameObject GameObj1 = null;
    9.    private UnityEngine.GameObject GameObj2 = null;
    10.  
    11.  
    12.    void Start()
    13.    {
    14.        UnityEngine.Object.Instantiate(GameObj1);
    15.        GameObj2 = UnityEngine.Object.Instantiate(GameObj1);
    16.    }
    17.    void Update()
    18.    {
    19.    }
    20. }
    So I think something is wrong. I use the latest version of Nottorus, and Unity 2017.1.0.f3.
     
  5. daville

    daville

    Joined:
    Aug 5, 2012
    Posts:
    260
    That's because you're calling it twice.

    It's connected 2 times to the main white wire... first it excecutes the instantiate, then it excecutes the assignment which has an instatiate connected to it.

    So you're calling it two times yourself..

    Just UnPlug the first one
     
  6. PawelS77

    PawelS77

    Joined:
    Jul 15, 2017
    Posts:
    7
    Thanks for the explanation, now I understand better how it works :)
     
  7. Odin211

    Odin211

    Joined:
    Mar 15, 2015
    Posts:
    4

    Attached Files:

    • 03.PNG
      03.PNG
      File size:
      189.7 KB
      Views:
      499
    Last edited: Sep 26, 2017
    GamerPET, Szaruga and Drannach like this.
  8. Szaruga

    Szaruga

    Joined:
    Jan 29, 2016
    Posts:
    281
    I downloaded, but I have something like this:

    2017-09-24_21-52-35.png


     
  9. Odin211

    Odin211

    Joined:
    Mar 15, 2015
    Posts:
    4
    Сan be try to replace DefaultSkin files.
     
  10. Szaruga

    Szaruga

    Joined:
    Jan 29, 2016
    Posts:
    281
    Ok, works, cool skin, thank You
     
  11. Odin211

    Odin211

    Joined:
    Mar 15, 2015
    Posts:
    4
  12. pavelkomiagin

    pavelkomiagin

    Joined:
    Dec 18, 2015
    Posts:
    5
    Does Nottorus work on Mac OS X as well as on Window?
     
  13. daville

    daville

    Joined:
    Aug 5, 2012
    Posts:
    260
    I believe there are some known issues on mac... but you can use most of it.
     
  14. strife77

    strife77

    Joined:
    May 15, 2014
    Posts:
    21
    daville, I just wanted to thank you for the tutorials you've made for Nottorus (as well as anyone else who's done the same.) It seems training material for it is kind of sparse. I wish there were more videos out there for it.

    I haven't had a chance to use it much yet but hope to get into it soon. What's the opinion of everyone here who's using it? Still working great? Most of the kinks worked out with the updates? Seems as if they've been fairly frequent, which is appreciated.
     
    Last edited: Oct 12, 2017
  15. daville

    daville

    Joined:
    Aug 5, 2012
    Posts:
    260
    Thanks.. I'll try to make more tutorials (I already have like 10 recorded, but without audio), it's just that I don't speak english very well so recording the audio takes a lot of time for me because I have to record multiple times the same words until the pronunciation is understandable.... Also Youtube doesn't seem like a good way of earning money for me yet... so sadly I can't invest much time making the videos because I need to pay bills.

    About my opinion of Nottorus; is as strong as it was over a year ago... for me Nottorus is the definitive visual scripting solution, I really wish for it to become the standard... I know Unity is developing their own solution, but I really doubt it will be as good as this... I don't know if this would make economical sense for the developer, but I would wish for Unity to Buy Nottorus as they've done with many other plugins from the store.
     
    ocimpean and URAwesome like this.
  16. URAwesome

    URAwesome

    Joined:
    Sep 28, 2013
    Posts:
    23
    Hiya,

    Thank you for continued work and support for this great tool. Year and a half later, I finally got Nottorus for my birthday, yey!

    I don't know a single line of code and only little theory. Having worked my way up from Scratch, to Little Big Planet Logic Circuits, to Playmaker, to uScript. I'm ready for the final jump to proper programming.

    I'm going to start a Twitch/Skype/Discord channel in the hope that it'll be helpful to anyone learning Unity, Nottorus and C#.

    Here is the plan:
    Go through official Unity tutorials, recreate them with Nottorus, making both the graph and final generated code available. Start small: learn one concept or connection at a time and remix it with small variations till it's understood well and find ridiculously inspiring analogies and examples along the way.

    In the meanwhile, a couple of questions.

    1) Hastable Method Nodes - Clear (lean tween spinning cube example):


    Thank you Ling2Long for making this excellent tutorial, looking forward to more.

    At 5.58 my nodes list doesn't seem to contain hashtable methods. Can anyone suggest a solution? Do i need to load an assembly thingy or install/enable something?

    2) How to replace the default fonts for Nottorus.

    I know it's possible to create custom visual style, which is awesome - but I'd also like to change the font as it's not the easiest to read on a 15" laptop.

    Thank you
     
  17. URAwesome

    URAwesome

    Joined:
    Sep 28, 2013
    Posts:
    23
    Using your ProSkin:
    This looks awesome! Tried to use it, renamed it to DefaultSkin and the original to another name. But on start the Nottorus window is just blank. Restarting Unity gives the same result. Could this be related to .meta

    getting a DrawGUITexture:texture is null
    and null reference exception: ..obj not set to instance... Nottorus.Draw_BGGrid ()

    Thank you.
     
    Last edited: Oct 20, 2017
  18. Stridemann

    Stridemann

    Joined:
    Oct 12, 2013
    Posts:
    243
    Download zip -> Drop folder from zip to Skins folder in project.
    Go to options -> Skins and select your skin (there can be a "Auto search skin directory" button - press it and select your new skin)

    But it works a lil bugged for me:
     
  19. Odin211

    Odin211

    Joined:
    Mar 15, 2015
    Posts:
    4
    Maybe you have compression of PNG files. It works well for me.
     
  20. URAwesome

    URAwesome

    Joined:
    Sep 28, 2013
    Posts:
    23
    Thank you will give it a go with the skins - (options window wasn't scrollable in 15" laptop).

    • Any ideas on the font replacement? Trying to find something a little easier for my eyes to read. Thanks.

    Slider value - how to get:

    • Trying to use the UI Slider and UI Boolean value and drive another script. I've found the script variables I want to atually set through reflections nodes, but can't work out how to 'Get' dynamic 'slider.value', same for Boolean.
    • The reflected UnityEngine.UI carry a value node for slider, but its it's a 'set', not a 'get'
    • Alternatively how to make onClick events see a variable as a dynamic float and not a static parameter?
    • I know the code should read something like: 'public void Slider_Changed (float newValue)' etc ...but which nodes to use to create (float newValue) part of it? Sorry still a noob, day 2.
    Thank you.
     
    Last edited: Oct 21, 2017
  21. URAwesome

    URAwesome

    Joined:
    Sep 28, 2013
    Posts:
    23
    I'm just a beginner but would definitely like to support the development of this great tool. Just created an unoffical learners Discord channel for Nottorus. I'm also new to Discord, so if anyone here would like to advice/assist and make it more awesome let me know. I'm 'Clear_Mind' on Discord. It's going to be very beginner friendly with lots of small but doable graphs and code, building up in complexity over time. I might create separate stream for beginner, intermediate, advanced.

    Discord Nottorus Channel Invite: - please join, it's going to be a great Nottorus resource for learning and reference.
    https://discord.gg/48eYYYs

    My learning experience so far - 2 days in:
    The way I'm using Nottorus at the moment is to first learn the structure/logic behind what I'm trying to achieve, then finding the nodes, getting the code generated, then editing it to see if and how it works in more detail, then retyping the c# into visual studio to get the muscle/brain memory locked in for the concepts I've learned.

    I really think that Nottorus should be part of Computer Science Education. Putting blocks together is faster for me and less stressful, because I don't have to worry about spelling, back tracking, white spacing, syntax - focusing instead on the meaning of the blocks first. Once the meaning is grasped, code is actually fun to write because you have the generated version to help you.
     
    Last edited: Oct 21, 2017
    solarisone and Odin211 like this.
  22. JDelekto

    JDelekto

    Joined:
    Jan 7, 2017
    Posts:
    17
    Greetings all!

    I am still trying to learn a lot about Unity itself as well as all of the various assets available. I purchased PlayMaker, but it's not quite what I was looking for in a domain specific language in order to expedite development. I've been looking at Bolt and Nottorus and to be honest, it's really difficult for anyone to be able to determine which one would be better for their workflow unless diving right into them.

    However, between all of the node-based editors I've seen, unless I have overlooked it or am just bloody daft, there is one feature that is missing which I would love to see added dearly. That is the ability to create a "black box" or to create a custom component as a composite of several others.

    How I envision it would be this: on a graph which already shows several intertwined components, allow the user to draw a "box" around those they wish to re-use. All non-connected inputs become the require inputs for the custom component and all the non-connected outputs become the outputs for the custom component. There is the ability to modify variables on the custom component that can replace those of one of the several internal components by mapping them.

    The idea is to be able to create a reusable library of several components working together (including composites of custom components) to build larger systems and save time in future development. Is Nottorus capable of doing this or at least is there an implementation of such a feature on its road map?
     
  23. daville

    daville

    Joined:
    Aug 5, 2012
    Posts:
    260
    That features has been suggested on the official Nottorus forums, but once you understand how Nottorus works, different to other visual scripting tools.... it will make more sense why this is not possible or needed.

    that re use of components is everyday stuff in programming in general using code, you would create a function with input parameters and output type, that's something any POO language do.

    So in Nottorus you should see it as that as a programming language, because it is C#... Basically anything a programmer would do in C# you should do it the same in Nottorus.... Nottorus is just C# with Nodes instead of Text.

    So it should be "theorically possible" to grab a bunch of nodes and auto generate a function out of it.... this in "Code" would be like selecting lines from 25 to 53 and Cut them, create the function, paste them, and add the parameters needed.

    But that makes no logical sense.... there's no guaranty that those lines would generate a useful function or that would have all the required code or inputs o an explicit output type.

    Also in Nodes you could position them randomly on the canvas, and put them all in a box, that, translated to Code, would be like selecting random lines of code all around your script and trying to make a function out of it.

    So... that suggestion, sounds like a good idea if you don't know how nottorus thinks... but once you do, and if you use it as any POO language, specifically C#, then you won't need that, because you would be programming correctly from the beggining, just make your own functions, Nottorus can do that, it let's you make your own classes, and functions or methods just do whatever you want... anything you could do in Code you could do it in Nottorus.
     
    URAwesome likes this.
  24. URAwesome

    URAwesome

    Joined:
    Sep 28, 2013
    Posts:
    23
    GameObject type:

    - Apology for noob question: why is 'GameObject' variable type not listed like 'int' or 'float' as an available Type?

    - Where is the 'save as' option?


    Discovered the parser - amazing! Can nodify any online scripts! Now going between c# and Nottorus graphs to learn the basics.

    Nottorus Discord Channel Invite - Nottorus resources for discussion, learning and reference (added all online video tuts)
    https://discord.gg/48eYYYs
     

    Attached Files:

    Last edited: Oct 26, 2017
  25. daville

    daville

    Joined:
    Aug 5, 2012
    Posts:
    260
    There's no "Save As"... you Create a Script, and then hit the Save Button... that generates the .nts file (the graph), then you could hit the Compile button and it will generate or update the .cs file (and also save the .nts).

    I don't understand your first question, sorry.
     
  26. URAwesome

    URAwesome

    Joined:
    Sep 28, 2013
    Posts:
    23
    Just updated the question with an image example. Great tutorials by the way.
     
  27. JDelekto

    JDelekto

    Joined:
    Jan 7, 2017
    Posts:
    17
    That's a very helpful explanation --however, I think what I want to accomplish is not necessarily by "grabbing" lines of code and reusing them somewhere, but instead refactoring the code into something which is useful on its own by its constituent parts.

    For example, let's say I have a bit of code which can get or retrieve data from a remote server given some property name. Let's also say that I have other code which can cache data based on that property name. I have common input which is data that can be cached and/or sent to a server as well as outputs which are data read from the server or from the cache.

    I can write code which has two methods, "save" and "restore", and takes a simple blob of input called data. I can write the "glue" code which takes that input on a "save", feeds it into the cache module and if the data changed, trigger a remote save operation to the server. Likewise, I can choose to "restore" a value and it gets read from the cache module and if it doesn't already exist, trigger a read to the server to get it and cache it.

    Now, I could create this in a graphical system, but ideally, I don't want to always do that every time I want a module to cache user settings to a remote server.... so, I create this "black box" and take the name and data as the input and returns back the data I expect --I don't really care to know if it's going to the server or reading from the cache, it's just a new component.

    Is this possible or am I still missing something?
     
  28. daville

    daville

    Joined:
    Aug 5, 2012
    Posts:
    260
    That's completly possible, you just make a class to handle that with public methods and just call the method from any graph.

    Also there's no need to have everything made with nodes, you can have some things made with code and other with nodes, and they're compatible by default.
     
  29. daville

    daville

    Joined:
    Aug 5, 2012
    Posts:
    260
    Thanks.. Are you sure your script inherits from MonoBehaviour?
     

    Attached Files:

  30. daville

    daville

    Joined:
    Aug 5, 2012
    Posts:
    260
    @Stridemann

    Ok, this just happened to me after upgrading to Unity 2017.2
    The MonoBehaviour is not listed anymore, (if I create a new script it do inherits from MonoBehaviour, but I think that's hardcoded, but if I make an empty script and try to inherite from MonoBehaviour it doesn't show up anymore).
    I can't find anything "MonoBehaviour" related, on the variable types there's no GameObject or Animator, etc.

    Don't know why it happens.
     
  31. Alienmadness

    Alienmadness

    Joined:
    Sep 6, 2012
    Posts:
    82
    The UnityEngine.CoreModule must be selected now, In the assemblies section.
     
    daville likes this.
  32. daville

    daville

    Joined:
    Aug 5, 2012
    Posts:
    260
    Thanks I figured that out the other day but forgot to come here and say it.

    Future versions of Nottorus should have that selected by default when creating a new MonoBehaviour.
     
  33. vrpronyc

    vrpronyc

    Joined:
    May 27, 2016
    Posts:
    4
    I'm trying to run the tutorials for this using Unity 2017.2.0f03.
    The tutorials show examples of creating a variable and then setting the type to Vector3.
    The drop down for the Variable Type doesn't show any UnityEngine variable types (no Vector3, etc).

    I would prefer to ask this question on the forum, but I cannot register.
    The registration process asks me to name a plug-in. When I enter one of the nottorus plugins (like NOTTORUS_PLUGIN) i get a "wrong answer" and my registration is refused.

    I spent a relatively high price for this plug-in, after reading how good it is. I'd like to be able to use it!
     
  34. vrpronyc

    vrpronyc

    Joined:
    May 27, 2016
    Posts:
    4
    For us newbies: the demos call for modifying the variable type to Vector3.
    In the 2017.2.0f03 version, this is not in the default Variable Type drop-down.
    Alienmadness points out that we need to include the UnityEngine.CoreModule, In the assemblies section.

    For us newbies, to get to the assemblies section, right click on the background of the Nottorus editor. Select the down arrow next to the Assemblies. Scroll down to UnityEngine.CoreModule and check the box to the left.

    Now the core modules will appear in the Variable type dropdown.
     
    christougher likes this.
  35. Zymes

    Zymes

    Joined:
    Feb 8, 2017
    Posts:
    106
    Some questions.

    I bet you get these questions all the time. But there are like 50+ visual scripting assets on the store and I can't really go deep into all of them.

    This asset seems different from the others since it generates code and seems more programmer friendly.

    1. Can you remove Nottorus from the project after it is done (since it generates code) or does it need to be there on build?

    2. Can this import and work with my existing scripts and project code? I have scriptable objects and classes/structs already made but I need a working state machine for my gameobjects using these scripts.

    I really need a tool for visual state machine flow and debugging. I made manual FSM with nesting and it is very hard to debug in code. This is why I am looking for the best asset right now.
     
  36. Stridemann

    Stridemann

    Joined:
    Oct 12, 2013
    Posts:
    243
    For 2017.2.0f03 version I'm going to add a new default assemblies (UnityEngine.CoreModule, UI, etc).
    I have no idea why they renamed/moved assemblies.


    Yes
    Yes
     
  37. Stridemann

    Stridemann

    Joined:
    Oct 12, 2013
    Posts:
    243
    Thought the answer is just nottorus, coz the question is "name of a plugin", but not the name of application, etc. :)
     
  38. Zymes

    Zymes

    Joined:
    Feb 8, 2017
    Posts:
    106
    Thanks for reply. One last question.

    After you saved nodes and generated code. Can I open up the generated code, change some code manually, then open it up in the visual editor again?

    What will happen?
     
  39. Stridemann

    Stridemann

    Joined:
    Oct 12, 2013
    Posts:
    243
    Nothing will happen, but when you press compile- it will ask you if you want to override a script modified outside nottorus (mean override/revert changes that was made outside nottorus). (nottorus save files is separate from script files).
    But you can use Parse Script feature and pray that parsing was successfull and your compiled parsed script and original scripts was identical :) (Parse Script feature still in Beta, but works not bad today)
     
    Last edited: Nov 14, 2017
  40. URAwesome

    URAwesome

    Joined:
    Sep 28, 2013
    Posts:
    23
    - I've parsed a script and placed nodes where I want the, but after 'reparsing' the neat placement of the nodes is lost and they are again placed automatically. Is this possible to avoid? Can I freeze the placement of the nodes I want to keep?

    - I've already got using UnityEngine.UI etc in the c# script but the Nottorus automaticaly adds these to each variables that uses these libraries, making code longer. Is it possible to just make it write "using. .. " only above at the start of the script instead?

    Thank you,
    Really enjoying using Nottorus
     
  41. Stridemann

    Stridemann

    Joined:
    Oct 12, 2013
    Posts:
    243
    1) Impossible
    2) Short Type Name compilation option (in nottorus options)
     
  42. gyltefors

    gyltefors

    Joined:
    Apr 5, 2013
    Posts:
    43
    I tried importing Nottorus into my project on several occasions in the past, but each time it has been too unstable, and each time I ended up deleting it and continued using SI3. I wonder, did anyone actually have a successful experience using Nottorus in a real project?

    After many months, I tried importing Nottorus again, and this time it has at least not crashed Unity yet, so my hope to sometime be able to use Nottorus has been somewhat rekindled. There are still some serious issues, like the upper left button totally messing up the Unity UI (so remember not touching that one), switching between fullscreen mode wipes all unsaved changes (so remember to save before pressing shift-space, or my work is LOST). Currently I am stuck trying create a GameObject variable. So, remove the hash, enter it manually in SI3, reparse, or search forums etc. for how to get my classes appear [eventually found that in the canvas RMB menu]? Just adding a simple variable...

    I could try posting bug reports again, but last time they were totally ignored...

    So, is there any hope?
     
    Last edited: Nov 25, 2017
  43. gyltefors

    gyltefors

    Joined:
    Apr 5, 2013
    Posts:
    43
    Oops, forgot to save before shift-space again :(
     
  44. Alienmadness

    Alienmadness

    Joined:
    Sep 6, 2012
    Posts:
    82
    I have a few issues, but not those you mention. i don't have issues with the icon/button in the top left or resizing windows, but i do suggest saving often. If you cant make a gameobject, typically its because the default UnityEngine.CoreModule is not selected in the assemblies.
     
    Last edited: Nov 25, 2017
    Stridemann likes this.
  45. Stridemann

    Stridemann

    Joined:
    Oct 12, 2013
    Posts:
    243
    Unfortunately switching fullscreen can't be handled in code, unity just resetting the plugin memory, I can't do anything with that.
     
  46. gyltefors

    gyltefors

    Joined:
    Apr 5, 2013
    Posts:
    43
    I wonder how other plugins handle the fullscreen switch? I haven't seen this happening elsewhere. The upper-left button issue is probably OS X only. Maybe it could be removed in the Mac version in case someone press it by mistake? I found the assembly selection eventually, but as I was creating a variable in the left side inspector, looking in the create node context menu was not my first choice. I searched the options for it though, so that might be a more obvious place to put it. Keeping in mind saving before fullscreen switch etc. I could convert one of my script functions to properly run in Nottorus, and the visual debugging is quite cool. Though, it still took quite a long time for a few lines of code. The main reason being the node selection window still feeling a bit clunky. Sometimes it gets focus automatically so you can just start typing, but sometimes you have click. Sometimes it appears when you don't want it, and pressing escape will not dismiss it, so you have to press the mouse outside it. Also it only works with a two button mouse I think, so when using a stylus (which I prefer when working "visually") you have to switch back and forth between mouse and stylus. Sometimes the search ends up empty, and when trying again it works. Polishing the node selector window would really improve productivity, and lower the threshold to start using visual programming as an alternative/complement to coding.
     
  47. Gamrek

    Gamrek

    Joined:
    Sep 28, 2010
    Posts:
    111
    Hello,

    I am very new to this, I just want to create a simple Coroutine. What do I link with the "MonoBehaviour" node?

    So it will be just like:

    Code (CSharp):
    1. void Start(){
    2. StartCoroutine(WaitForFunction());
    3. }
     

    Attached Files:

  48. Stridemann

    Stridemann

    Joined:
    Oct 12, 2013
    Posts:
    243
    @Gamrek I think you should use StartCoroutine from "inherited method" instead of searching in nodes window.
     
  49. 3d_Artist1987

    3d_Artist1987

    Joined:
    Jul 9, 2012
    Posts:
    716
    Before buying I have some question.
    1)It supports unity 2017.3+
    2)feature roadmap
     
  50. 3d_Artist1987

    3d_Artist1987

    Joined:
    Jul 9, 2012
    Posts:
    716