Search Unity

[RELEASED] Nottorus - Unlimited Visual programming plugin

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

  1. SirAstral

    SirAstral

    Joined:
    Apr 7, 2014
    Posts:
    67
    the 8675309?

    Heh... that will be an inside joke for a particular song.

     
  2. RD

    RD

    Joined:
    Jan 3, 2013
    Posts:
    65
    I've always heard they do it bigger and badder in TX. Watching you with Nottorus, I know that it's true! And in TX, you really COULD have that dune buggy for playing on the weekend and your neighbors would be green with envy!

    Seriously, I'm glad I bought a copy today so that Stridemann will know there is real interest in his product. I completely agree with you when you say:
    Expected kinks and all, I am still blown away by Nottorus. Nottorus will be a stunning tool, once all the kinks are worked out of the parser.
     
    Last edited: Apr 27, 2016
  3. SirAstral

    SirAstral

    Joined:
    Apr 7, 2014
    Posts:
    67
    Especially the stupid stuff, if its dumb, it is definitely bigger and badder here in Texas. When it rains... people drive crazy... when it snows or ices over... people go driving just to do donuts in the parking lots. And of course... no one ever intentionally has a wreck down here and you always know when a wreck is about to happen because someone says, "here... hold my beer and check this out!"
     
  4. SirAstral

    SirAstral

    Joined:
    Apr 7, 2014
    Posts:
    67
    For anyone that is interested in seeing more diagrams or to request a specific diagram for the product or to ask specific questions on items hop over to the Author's forum where they can be addresses easier.

    http://nottorus.net/forum/index.php

    The busier the forum gets the more prospective purchasers might be inclined to purchase the asset.
     
    Rixtter likes this.
  5. Stridemann

    Stridemann

    Joined:
    Oct 12, 2013
    Posts:
    251
    WHAT a hell happens with "Flow Control" List?? Where is the other default nodes? *panic*

    It should look like this: List.png
     

    Attached Files:

    • List.png
      List.png
      File size:
      34.2 KB
      Views:
      1,302
  6. SirAstral

    SirAstral

    Joined:
    Apr 7, 2014
    Posts:
    67
    DON'T PANIC!!! hug something and relax!

    Flow Control is there for me when I right click to add a Node from blank. But when I drag the PIN from an existing Node that should accept strings they disappear. This looks intentional because if you remember I do not have your fixes yet so it looks like your reflection system is saying getting a string for this object is not supported so don't show it.

    If I right click on the canvas itself to create the String Builder, it is there along with the flow control options.
     
  7. Stridemann

    Stridemann

    Joined:
    Oct 12, 2013
    Posts:
    251
    Ok. Just say filtering mode by connector/pin.. I forgot about that.. U scare me dude :)

    UPD. I found the way to increase parsing speed (now its 10-20 times faster).
     
    Last edited: Apr 27, 2016
    RD likes this.
  8. SirAstral

    SirAstral

    Joined:
    Apr 7, 2014
    Posts:
    67
    Sorry about that, I could not think of the proper way to say it is all!

    And dude should be spelled "dood", if anyone or an online dictionary says otherwise... they are lying!
     
  9. RD

    RD

    Joined:
    Jan 3, 2013
    Posts:
    65
    10x to 20x faster parsing speed is REALLY useful when you need to parse 100,000+ lines of code! I often have to tweak code and re-parse with other tools. Your improvement will save me a LOT of waiting! Thanks for that improvement! I think I speak for us all in the Nottorus Thunder Dome thread when I say "GO Stridemann! GO! You show that parser who's the boss!"
     
  10. Stridemann

    Stridemann

    Joined:
    Oct 12, 2013
    Posts:
    251
    No, Its ok! I said that you scared me with screenshot, but not by your description) Nwm

    Do you really want to see kilotons of nodes? :D Stop that :D

    I just forgot to disable Undo system :p , and now its faster..

    After improvements in parser it can parse all this sources without an errors :cool: https://unity3d.com/ru/learn/tutori...procedural-cave-generation-pt3?playlist=17117

    Some screenshots:






    Perfect :D

    And seems I got only two problems:
    ControlNode[,] type parsed not as array: ControlNode
    and I can't fix this (nodes not linked after parsing):


    But I think tomorrow I will fix that and make an update
     
    Last edited: Apr 27, 2016
    RD likes this.
  11. RD

    RD

    Joined:
    Jan 3, 2013
    Posts:
    65
    ...well maybe.... also, tweaking 4,000 lines of code 25 times in a day = 100,000 lines parsed. I do see myself doing that pretty often with Nottorus. Your speed up takes a 5 minute re-parse down to 15 seconds. THAT'S a big help if I'm tweaking code. I tend to tweak in small steps, save, tweak, save... With Nottorus, I see myself fixing and integrating a small part, committing to GIT source control, and repeating till done.

    I expect I may re-parse frequently to see if I've introduced any errors that your parser and visual noder would uncover. At least then, I'd have errors that I could roll back to the last committed changes and start that one step over. Plus, I assume that doing a clean rerun might reduce accumulated memory fragmentation and other meta-cruft build-up. Parsers and translators and graphical renderings of huge programs could easily get a computer paging to disk if you never shut down and re-parse. Even if Nottorus is perfect, Unity's garbage collecting and heap management could cause Unity to crash your system. I don't want microsploding or metasploding to happen just because I didn't hop out of Unity and relaunch every so often. A clean reload and re-parse every so often would enhance my calm. That's just my paranoid programming style. I don't know how often I'll tackle 100k+ lines of code but, I'll often parse 4k+ lines of code 50+ times in a day.

    This 20x speedup of the parser is a BIG value for ME! Thanks again!
     
    Last edited: Apr 27, 2016
  12. gameboy

    gameboy

    Joined:
    Mar 25, 2009
    Posts:
    37
    Stridemann:

    Does your system allow nodes to be grouped together into other, compound nodes, allowing the creation of custom libraries of nodes and providing the ability to "drill down" to expose the inner workings of such nodes? This would help reduce screen clutter, as it seems the problem with many visual programming systems is that the screen soon becomes cluttered with an incomprehensible tangle of node links, providing a different way of making "spaghetti code".
     
    RD likes this.
  13. Stridemann

    Stridemann

    Joined:
    Oct 12, 2013
    Posts:
    251
    The only way is dividing code by functions.
    I will not do the grouping/compound nodes, because technically they required to be drawn in edit graph.
    But I thinking about to make extracting (refactoring) selected nodes into function.

    >>custom libraries of nodes
    You can create "Utils" class and make static functions in it. Then you can use them in any script in project using only one node.

    I'm allready decrease the amount of nodes by making embed class/struct constructor in node pin, making universal "math" node and removing ALL type converters of primitive values (float -> int, etc) (they converted automatically, but in case float -> int you can chose the conversion type (round, ceil, floor))
     
    RD likes this.
  14. SirAstral

    SirAstral

    Joined:
    Apr 7, 2014
    Posts:
    67
    Agree with Author here, create yourself a custom library to combine all of the stuff you want.

    If you you don't quite understand, I will try to test my theory out and show you guys what I am thinking in the next couple of days!
     
    RD and zyzyx like this.
  15. RD

    RD

    Joined:
    Jan 3, 2013
    Posts:
    65
    So various Utils functions would be folded up summary functions that could be drilled down into if needed?

    I'm trying to see if I understand what you are going to do. An analogy that I'm imagining is that Integrated Circuits (IC chips) have their pins that plug into the circuitboard. Your Utils summary functions would act as sort of a softwareIC, hiding the details of all the nodes in the IC. The canvas would act as the circuitboard. You simply plug summary function ICs into the canvas circuit board. The summary node and canvas would require the needed connections from the programmer.

    If my understanding is correct, I can see how that would avoid many problems of folding summary nodes. Plus, between user sessions, the problem of storing meta-data about the folded or unfolded state of a huge graph of nodes would be COMPLICATED and error prone with source code management and merging changes. Merging changes in textual C# source code is reliable. Any change of folded or unfolded state would cause diff to falsely flag changes to the program when only the display state of nodes had changed. Anyone who's tried to merge Unity projects with their hidden metadata files knows merging assets with metadata = pain.
     
    Last edited: Apr 27, 2016
  16. Stridemann

    Stridemann

    Joined:
    Oct 12, 2013
    Posts:
    251
    Compile "Utils" class with your static functions then you can find them in nodes list:



    Then use it in any script of your project:


    PS. I made screenshots after enabling debug and pressed play button.

    Note: "static" means you don't need to create a instance of class "Utils" to execute this function.
     
    Last edited: Apr 27, 2016
    RD likes this.
  17. Stridemann

    Stridemann

    Joined:
    Oct 12, 2013
    Posts:
    251
    UPD. Debug breakpoints added:

    I hope the translation of text in my tooltipe is correct :)
     
    RD likes this.
  18. SirAstral

    SirAstral

    Joined:
    Apr 7, 2014
    Posts:
    67
    You beat me to it Stridemann!!!!

    There you have it guys! How to create your own custom nodes and its pretty freaking easy too! This is what I love about this asset... DYNAMIC!!! Once the kinks are worked out of this product none of the other Visual Scripting systems will be able to stand next to the HEAT on this thing!

    Now if Unity would just get their arses in GEAR and get dotNet 4 or later supported in the core I could rock the S*** out of this tool and some business productivity applications!
     
    RD likes this.
  19. elbows

    elbows

    Joined:
    Nov 28, 2009
    Posts:
    2,502
    Speaking of text, I think I noticed when watching a video you made that a message that pops up in your product had the word successful or successfully spelt wrong (you used ss's instead of cc's near the start of the word).
     
  20. Stridemann

    Stridemann

    Joined:
    Oct 12, 2013
    Posts:
    251
    Nottorus update 1.02

    Fixes:

    - Fixed connection "string" type to a "switch" node.
    - After maximizing plugin window script objects can't be dragged.
    - Fixed locking file access after parsing.
    - Math node: "Set all pins types as connected" button now affect only to IN pins (fixed bug when on logical opetations the Out pin was set to IN pin Type, but not to bool Type).
    - Cannot drag and drop object from Hierarchy if you do not have any methods already created.
    - Fixed problems with compiling "Get/Set array element" node.
    - Fixing the tooltip (blinking).
    - Fixed debug of custom classes.

    Improvements:
    - Script creation wizard: added redirect (close) button to a "Open script" window.

    Features:
    - Plugin options: Added "Hide edit graph elements on zoom-out" option.
    - Added debug breakpoins (available in debug mode).

    Parsing:
    - Lots of improvements and bug fixes (parsing arrays, methods arguments etc.).
    - Increasing parsing speed (10-20 times faster).
    - Optimized searching the Types in assemblies.


    PS. Waiting for approval.

    PSS. I'm also change the position of pins value boxes http://nottorus.net/forum/viewthread.php?thread_id=79 but I forgot to write about this(
     
    Last edited: Apr 27, 2016
    daville and RD like this.
  21. JacooGamer

    JacooGamer

    Joined:
    Mar 28, 2014
    Posts:
    35
    Just bought my copy.

    I've been coding C# professionally for years, but honestly want something that is visual. So, expect me to take this for a spin. Post here, or PM me with code snippets if you want me to test anything.
     
    RD and Rixtter like this.
  22. Rixtter

    Rixtter

    Joined:
    Mar 31, 2014
    Posts:
    244
    Excellent, another experienced coder willing to help :cool:

    If you do kick tyres please fire out your snippets to the Nottorus forums, will help no end :D

    One of the many beauties of this puppy is screen dumping nodes vs code on the same page, like for like. Ultra cool for tutorials. No real need for a write up!!
     
    RD likes this.
  23. JacooGamer

    JacooGamer

    Joined:
    Mar 28, 2014
    Posts:
    35
    Sure. I created an account there, will move over there.

    But just to show quickly how easy it is to parse C#, I wrote a simple list, and added 3 strings to it, then just printed them out on the console (ListScript.png).

    The graph was a bit spread out, bit the first half is readable. Took a few seconds to parse in.

    To parse in, is simple. Its just a case of creating a new script, and on the next step of the wizard, select to import a .cs file, and browse to it, and select it. The rest of the work is automatic, and the nodes are all connected in the node window.
     

    Attached Files:

    RD and SteveB like this.
  24. Rixtter

    Rixtter

    Joined:
    Mar 31, 2014
    Posts:
    244
    Thanks Jacoo, but now you have me curious to see the nodes generated for the foreach loop :confused:

    First thoughts are "busy graph for the basics". SirAstral pointed this out earlier; the need to think building blocks for each construct, understanding how a compiler handles code as such.

    Potential investors might see the initial without realising the potential. Everyone on this thread likely agrees Nottorus leads to unlimited power & freedom to node like we code... whereas other VS tools are quick for basics, code the advanced. Is Nottorus the opposite? Should we code the basics, node the advanced? Or should there be some hybrid functionality for the basics?

    Comments of ye sacred testers?

    Rix

    PS. I wrote half of this, beer wrote the other :eek:
     
    RD likes this.
  25. daville

    daville

    Joined:
    Aug 5, 2012
    Posts:
    303
    @Stridemann

    Question: How does Nottorus deals with Delegates and Subscribing to Events?
     
    RD likes this.
  26. Stridemann

    Stridemann

    Joined:
    Oct 12, 2013
    Posts:
    251
  27. Rixtter

    Rixtter

    Joined:
    Mar 31, 2014
    Posts:
    244
    Is it similar to creating a GameManager.cs file and calling static functions from it? Or a macro of sorts?
     
  28. Stridemann

    Stridemann

    Joined:
    Oct 12, 2013
    Posts:
    251
    Yea
     
  29. SirAstral

    SirAstral

    Joined:
    Apr 7, 2014
    Posts:
    67
    Sadly I still have trouble wrapping my brain around delegates.
    I also want to see a traditional lambda make it through the parser too but have not found a way to do it yet. I guess the lambdas I am trying which rely on LINQ are just not digestible yet? Here is what I am trying.

    Users is essentially a function that supplies an array of users from a service that contain the following attributes on each object in the array.
    Name
    Last
    Phone
    Email

    Code (CSharp):
    1. void Function()
    2. {
    3.     Users _users = new Users();
    4.  
    5.     string userSearchResult = _users.Where(u => u.Name = "Joe");
    6.  
    7.     Debug.Log(userSearchResult)
    8. }
    For the life of me I cannot get this concept down in the canvas. I guess the LINQ "Where" followed by a Lamba is bad for the parser? Do I have the syntax correct on this one?
     
  30. SirAstral

    SirAstral

    Joined:
    Apr 7, 2014
    Posts:
    67

    Okay in the spirit of beer I wrote this.
    Code (CSharp):
    1. using UnityEngine;
    2. using System.Collections.Generic;
    3.  
    4. public class NintyNineBottleOfBeerOnTheWall : UnityEngine.MonoBehaviour
    5. {
    6.  
    7.  
    8.     void Start()
    9.     {
    10.         int beerCount = 99;
    11.         int loopCount = 0;
    12.         List<string> beers = new List<string>();
    13.  
    14.         do
    15.         {
    16.             loopCount++;
    17.  
    18.             string currentBeer = "Beer " + loopCount.ToString() + " is now on the wall!";
    19.  
    20.             beers.Add(currentBeer);
    21.         }
    22.         while (beerCount < loopCount);
    23.  
    24.         foreach (string beer in beers)
    25.         {
    26.             Debug.Log(beer);
    27.         }
    28.     }
    29.     void Update()
    30.     {
    31.     }
    32. }
    33.  
    Parsed it and got this!


    Then Compiled again, getting this.

    Code (CSharp):
    1. //MD5Hash:397878a9fed944b60a7ca4401c29aff6;
    2. using UnityEngine;
    3. using System;
    4. using System.Collections.Generic;
    5.  
    6.  
    7. public class NintyNineBottleOfBeerOnTheWall : UnityEngine.MonoBehaviour
    8. {
    9.  
    10.  
    11.     void Start()
    12.     {
    13.         int beerCount = 0;
    14.         int loopCount = 0;
    15.         System.Collections.Generic.List<string> beers = null;
    16.  
    17.         beerCount = 99;
    18.         loopCount = 0;
    19.         beers = new System.Collections.Generic.List<string>();
    20.         foreach (var iterator_109 in beers)
    21.         {
    22.             UnityEngine.Debug.Log(iterator_109);
    23.         }
    24.     }
    25.     void Update()
    26.     {
    27.     }
    28. }
    29.  
    I can't wait to get my grubbie lil nubbies on the 1.02 update to see what all is fixed in the parser!

    Edit: forgot to add, there are 2 loop examples on the Author site too right here
    http://nottorus.net/forum/viewforum.php?forum_id=10
     
  31. Stridemann

    Stridemann

    Joined:
    Oct 12, 2013
    Posts:
    251
    You shan't pass :D

    It looks weird, but works fine :)

    Also it can parse it correctly (not allways), but shows visual warnings.. I will fix that.
    Initially in the parser did not parse lambda, I introduced it by myself.


    Nottorus don't have dat node yet :) I will add it tomorrow :rolleyes:
     
    Last edited: Apr 28, 2016
  32. JacooGamer

    JacooGamer

    Joined:
    Mar 28, 2014
    Posts:
    35
    I'll paste the foreach when i get the other laptop powered up in a short while. Glad you appreciate the post
     
  33. Rixtter

    Rixtter

    Joined:
    Mar 31, 2014
    Posts:
    244
    Don't post loop, I thought u meant it was unreadable & I was curious to see why.
     
  34. Rixtter

    Rixtter

    Joined:
    Mar 31, 2014
    Posts:
    244
    This is too funny, just up & laughing already. Gonna be a good day :-D

    I thought the parser was kicking out spew, the reason I wanted to see the loop. Thought it was one of the bugs 1.02 was to fix. I took it out of context.

    As for the 2 examples, yes, I posted the first one lol.

    Thanks tho for the tastefully talented reply!
     
  35. JacooGamer

    JacooGamer

    Joined:
    Mar 28, 2014
    Posts:
    35
    It was totally readable, made logical sense. No, I meant that the node structure was spread out, and when I zoomed out to try to get them all on one image, the font size was tiny, and was unable to see what was written on each node.

    Is there anything else you want me to try out?
     
  36. JacooGamer

    JacooGamer

    Joined:
    Mar 28, 2014
    Posts:
    35
    Btw, there is a spelling mistake on the foreach node thats parsed in, it reads "foraech". Stridemann: any chance of fixing that spelling mistake?
     
  37. Stridemann

    Stridemann

    Joined:
    Oct 12, 2013
    Posts:
    251
    Do while added. It will be available in 1.02.



    Thanks, fixed :)
     
    Last edited: Apr 28, 2016
    SteveB and RD like this.
  38. RD

    RD

    Joined:
    Jan 3, 2013
    Posts:
    65
    Stridemann, would it be possible for users to embed a comment in the C# source code that would add a user designed icon on the Nottorus node title bar? Something like //NottorusNodeIcon(CodeRevieweApprovedIcon) or //NottorusNodeIcon(CodeReviewPendingIcon) so that nodes generated from that commented function could clearly indicate some status. It would be helpful if node icons could indicate the system a node was associated with like File, Comms, Security, etc... Even code ownership //NottorusNodeIcon(FredAvatarIcon) would be very helpful. I would like the ability to post NODE comments to the Node from within the source code. I would not want all of the source code comments in the node but, I'd like to be able to post some comments to a generated node from the source code.

    Once the source code is available, this will be a pretty easy patch for me so, not a big deal. Do you think Nottorus node directives from comments would be useful? How do you think they should be done?
     
  39. SteveB

    SteveB

    Joined:
    Jan 17, 2009
    Posts:
    1,451
    Take this as a gentle reminder and do not stop what you all are doing...

    ...but you're having a bit of a programmer-fest here. Remember initially that if you're selling to people who want to do visual coding, you want to demonstrate that particular aspect. I understand why you guys are nerding out on Arrays and Lists, but boy that is some dry S***, lol.

    Keep up the great work guys. I'll be joining you shortly after I kick my VR addiction I'm currently rocking...

    -Steven
     
  40. Stridemann

    Stridemann

    Joined:
    Oct 12, 2013
    Posts:
    251
    Parsing the commentaries already implemented. But you should start commentary with /// instead of //.


    UPD.I just fix the bug when the commentary was placed to previous node instead of current.

    It is feasible, but I do not think it's necessary.
    As I understand you want the commentary "///NottorusNodeIcon(UserCustomIcon)" will be converted (parsed) to node custom icon instead of commentary?
     
  41. SirAstral

    SirAstral

    Joined:
    Apr 7, 2014
    Posts:
    67
    SWEET! Sorry being such a pain but I am trying to wreck the parser any way I can to help improve it! A lot of people do not know this but Murhpy's bitch ass hates me... so anything I touch breaks in spectacular ways. So I do happen to make a great tester of tools... not because I have any particular skills or quality talents, but because Murphy just makes sure I find and trip right over any and everything possible!

    Murphy and I are well acquainted, but we ain't friends!
     
  42. SirAstral

    SirAstral

    Joined:
    Apr 7, 2014
    Posts:
    67
    Yea, I wished I could crack out more advanced stuff as easy as the more experienced programmers but I am not that good at C# yet. This is why I really like using the current day IDE's and Visual Scripting tools to overcome my inexperience. To be honest I often just go to the code itself, but I still need to rely on stackoverflow and microslops reference library to put code together.

    Because of my nature I am not even sure I will be able to be a hard core developer because I spend to much time reading stuff. I like reading articles on Science, Code Development, Medicine, Politics, Religion, Systems/Engineering, and... well you get the idea... I do so many different things I cannot stay with one long enough to become a true expert, but I usually learn enough so that people cannot pull the wool over my eyes so easily either on most subjects.

    I am happy some of the more experienced developers are now jumping into this thing so more advanced C# concepts can be tested and shown to the community with this product. Once we get all of the fundamentals ironed out, hopefully we can improve the user experience and interface. I am a very big proponent of user experience and I spend far more time developing a user friendly UI for my company projects than I do developing back end code.
     
  43. JacooGamer

    JacooGamer

    Joined:
    Mar 28, 2014
    Posts:
    35
    I'm investigating *.cs parsing of some delegates and event handlers. Will be back with results soon
     
  44. JacooGamer

    JacooGamer

    Joined:
    Mar 28, 2014
    Posts:
    35
    Yeah! I'm working on VR too!
     
    SteveB likes this.
  45. SteveB

    SteveB

    Joined:
    Jan 17, 2009
    Posts:
    1,451
    ...ugh my Vive cannot arrive soon enough! (Oculus is great but I really need to experience room-space and the wands) :D
     
    Last edited: Apr 28, 2016
  46. RD

    RD

    Joined:
    Jan 3, 2013
    Posts:
    65
    I call it 'pair programming with Google'.
    Being able to even put an emoticon or some other image on a 'node header bar' as a warning could be a big help for scanning a diagram for warnings, debugging code, platform dependent code, todos, refactor requests, etc...
    upload_2016-4-28_13-54-36.png

    Do you think that would help scanning nodes visually?
     
  47. SteveB

    SteveB

    Joined:
    Jan 17, 2009
    Posts:
    1,451
    You know what would help scanning nodes? What I mentioned earlier; mimic Blueprints and have different colors for Events (Update, Input, Trigger), Actions (Play Sound, Set Transform), Variables, etc. Heck if possible just grab the gorgeous Glass gradient done by Apple...just 'something' beyond having a small and featureless V or F.

    :)
     
    RD likes this.
  48. SteveB

    SteveB

    Joined:
    Jan 17, 2009
    Posts:
    1,451
    Hmmm...I'll just leave this here:

    Nottorus_Glass.png
     
    docwes, RD, SirAstral and 3 others like this.
  49. Rixtter

    Rixtter

    Joined:
    Mar 31, 2014
    Posts:
    244
    That's seriously sexy, kudos Steven :cool: Everyone hit "Like" (above) to vote :)
     
    SteveB likes this.
  50. SteveB

    SteveB

    Joined:
    Jan 17, 2009
    Posts:
    1,451
    I appreciate that man, thank you. It was just a quick and dirty PS job to get my point across...

    ...more importantly let's see if we can convince @Stridemann to do something akin to it! :D
     
    Stridemann likes this.