Search Unity

DOTS Visual Scripting 5th experimental drop

Discussion in 'Entity Component System' started by ans_unity, Nov 5, 2019.

Thread Status:
Not open for further replies.
  1. ans_unity

    ans_unity

    Unity Technologies

    Joined:
    Oct 12, 2017
    Posts:
    124
    Hi everyone,

    Drop 5 of Visual Scripting for DOTS is ready for you to try!
    https://drive.google.com/open?id=1kZFl0B9_56ntLX74IIgnNcDn8yBIWLwg

    You'll need to create a project using 2019.3.0b6
    (https://unity3d.com/unity/beta/2019.3.0b6)


    New features / nodes
    • On key events
    • Move to
    • Get input / key -- with pressed & released mode
    • Random
    • Wait until
    • Tracing by frame and by steps
    Fixes
    • VSB-331 False positive loop detected if two branches are reconnected together
    • VSB-323 Errors flags not showing anymore on graphs
    • VSB-315 Editing sticky note background is black on black
    • VSB-314 Changing the value of an Enum or string based constants doesn't update code
    • VSB-310 Live edit is broken when modifying components
    • VSB-268 Stickynotes disappears after adding new node

    Known issues
    • Nothing special for this version
    As with the previous experimental drops, this is work in progress that we share to engage in an open discussion with our community. Expect issues and weird workflows as we work our way up to a more final product.

    Most notably, we are still far from the final user experience, the complexity you see here is not representative of what we want to deliver. We have not yet created high level nodes to reduce the number of operations or finalized our UI to make interactions as intuitive they can be.

    So kindly take note of the usual disclaimers:
    • Not for production use.
    • Early picture of Visual Scripting, not be representative of the final version.
    • You will need to be tech savvy to use this version. Not yet ready for everyone.
    • Things will change.
    As always, we are looking for your comments.

    Enjoy!
     
    MehO, NotaNaN, M_R and 3 others like this.
  2. wilson_p

    wilson_p

    Joined:
    Nov 4, 2018
    Posts:
    39
    Does it support Unity 2020.1.0.a3?
    I got error messages here, and I couldn't find VS window and code view window on main menu.
    errormessage.jpg
     
  3. BenzzzX

    BenzzzX

    Joined:
    Jun 4, 2018
    Posts:
    14
    compiling error when using coroutine with recorder.
    seems problem of return ref.
     

    Attached Files:

  4. siggigg

    siggigg

    Joined:
    Apr 11, 2018
    Posts:
    247
    "You'll need to create a project using 2019.3.0b6" 2020.1a3 is a lot older than .3b6 :)
     
  5. JakHussain

    JakHussain

    Joined:
    Oct 20, 2016
    Posts:
    318
    I'm a bit confused, why develop nodes that support the legacy input system when, by the time this is released, the new input system will likely become the default for the editor? The new system is also quite visual in the set up of actions and bindings so if anything it compliments visual scripting way better.
     
    PixelLifetime, transat and hippocoder like this.
  6. siggigg

    siggigg

    Joined:
    Apr 11, 2018
    Posts:
    247
    It will not become the default just yet, and it doesn't really support DOTS well yet.
     
  7. JakHussain

    JakHussain

    Joined:
    Oct 20, 2016
    Posts:
    318
    On top of what I said in my previous post, the input system team are apparently looking at supporting DOTS for their package in the future. These developments need to be aligned better IMHO.
     
    PixelLifetime, transat and siggigg like this.
  8. wilson_p

    wilson_p

    Joined:
    Nov 4, 2018
    Posts:
    39
    got it, thanks
     
    siggigg likes this.
  9. thierry_unity

    thierry_unity

    Joined:
    Jun 10, 2015
    Posts:
    187
    2020.1 is not supported for that drop. There is a lot of new features that unfortunately breaks Visual Scripting and we need to tackle theses for the next drop.

    I'll have a look at that one, there is a lot of unknown still there with coroutines but we smash the bugs as we see them. can you provide the graph where you had that issue?
     
    createtheimaginable and wilson_p like this.
  10. theor-unity

    theor-unity

    Unity Technologies

    Joined:
    Feb 26, 2016
    Posts:
    188
    We're aware. We decided to ship a work around using the old system while waiting for the new system to be DOTS ready in order to enable early users and get feedback. Swapping the implementation of a few input nodes won't be that much work for us.
     
  11. theor-unity

    theor-unity

    Unity Technologies

    Joined:
    Feb 26, 2016
    Posts:
    188
    Thank you for the report. Have you connected the Move To "translation" port ? if you're using the current query translation, just remove it, it will be used by default anyway.
     
  12. Juandapp

    Juandapp

    Joined:
    May 11, 2016
    Posts:
    53
    Hello, Where can I get information to start the tests? How to do to move my character at least. ... sorry my english. What I want to say is that, I want to implement visualscripting tests to make my character move. Where will we get information? Thank you. Is posible test in 2D?
     
  13. wilson_p

    wilson_p

    Joined:
    Nov 4, 2018
    Posts:
    39
    new tutorial video uploaded
    It's the last one of this series. Hope you like it!
     
    EmilKoel, Silenus3, toomasio and 4 others like this.
  14. wilson_p

    wilson_p

    Joined:
    Nov 4, 2018
    Posts:
    39
    to move something, see our tutorial video below:

    whole series link:
     
    Last edited: Nov 7, 2019
  15. BenzzzX

    BenzzzX

    Joined:
    Jun 4, 2018
    Posts:
    14
    Yes I did, but disconnecting the translation node seems to be just a temporal solution to prevent recorder working here?
     
  16. BeginnerPolymath

    BeginnerPolymath

    Joined:
    Jul 31, 2015
    Posts:
    38
    Hi! I'm translating your video subtitles into Russian. Chapter 1, 2 have already been translated, perhaps you can already approve them.
     
    ans_unity and wilson_p like this.
  17. wilson_p

    wilson_p

    Joined:
    Nov 4, 2018
    Posts:
    39
    Sorry I didn't notice them. Subtitle just approved, many thanks!!
     
  18. Juandapp

    Juandapp

    Joined:
    May 11, 2016
    Posts:
    53
    Thank you Wilson.
     
    wilson_p likes this.
  19. theor-unity

    theor-unity

    Unity Technologies

    Joined:
    Feb 26, 2016
    Posts:
    188
    Yes, that's true. We'll record the translation value in the MoveNext method instead of when passing the translation argument.
     
    wilson_p likes this.
  20. wilson_p

    wilson_p

    Joined:
    Nov 4, 2018
    Posts:
    39
    customfuncbug.jpg
    Bug report: I created a custom Function(as above), after saving and building all, 1) the customFunction used in the main thread turned into a error node and lost its connections with other nodes. 2) I cannot select or delete this bug node.
     
    createtheimaginable likes this.
  21. Lars-Steenhoff

    Lars-Steenhoff

    Joined:
    Aug 7, 2007
    Posts:
    3,527


    Will visual scrips get something like in this tutorial ? , called a super unit, kind like like a prefab for pieces of code.
     
    deus0 likes this.
  22. Grimreaper358

    Grimreaper358

    Joined:
    Apr 8, 2013
    Posts:
    789
    It already has that functionality and so does, shader graph and VFX graph.
    You can see it here in this video -
     
  23. theor-unity

    theor-unity

    Unity Technologies

    Joined:
    Feb 26, 2016
    Posts:
    188
    Will fix !
    Sounds like a use case for function - which happen to be broken per the previous message.
     
    wilson_p and createtheimaginable like this.
  24. laurentlavigne

    laurentlavigne

    Joined:
    Aug 16, 2012
    Posts:
    6,362
    hub sez "project invalid"
    how do you install it?
     
  25. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    Honestly, 100% agree. Final DOTS visual scripting is a future thing. The disclaimer is "not for production" and new input is actually kinda OK for production so if it's not supporting that first then it's kind of odd.. I'm not seeing a rationale to keep old tat around.
     
    ans_unity and JakHussain like this.
  26. wilson_p

    wilson_p

    Joined:
    Nov 4, 2018
    Posts:
    39
    error01.jpg
    Bug report:
    Hereby I generated three "while loop", all of their indexes have the same default name "index",
    In case their names conflict with each other, I changed their names, as shown in the pic.
    But in code line 35, one index' name was not updated automaticly(VS Tool only updated its name in line 36), it cause error message in line 36.
    The other two names, in line 42 and 49, were updated by VS Tool correctly.
     
    JakHussain, konsic and ans_unity like this.
  27. ans_unity

    ans_unity

    Unity Technologies

    Joined:
    Oct 12, 2017
    Posts:
    124
    Like Theor said earlier, to progress in this transition phase we sometime have to ship a work around using the old system while waiting for the new system to be DOTS ready. We do this to enable early users and get feedback, it also helps us internally validate a few assumptions in our development. In this specific case, it was not much additional work for us so it made sense.
     
    wilson_p and hippocoder like this.
  28. hippocoder

    hippocoder

    Digital Ape

    Joined:
    Apr 11, 2010
    Posts:
    29,723
    Yep I thought so, I was implying that it would probably change much later anyway.
     
  29. ans_unity

    ans_unity

    Unity Technologies

    Joined:
    Oct 12, 2017
    Posts:
    124
    Hi Wilson,

    You did an awesome job with your Visual Scripting tutorials and I wanted to extend the dev team personal thanks and gratitude! This greatly helps the community get onboard with the new tech and foster the collaborative spirit we all have at heart. Kudos to you!

    Thanks also to everyone who participate in this forum, even if don't answer right away, we are reading your comments daily and this helps shape us what Visual Scripting will become.

    Continue sending feedback and poke us if you have questions.
    Cheers!
     
    sasa42, defic, NotaNaN and 7 others like this.
  30. theor-unity

    theor-unity

    Unity Technologies

    Joined:
    Feb 26, 2016
    Posts:
    188
    What have you tried ?
     
    laurentlavigne likes this.
  31. Guedez

    Guedez

    Joined:
    Jun 1, 2012
    Posts:
    827
    How efficient are those? For instance, afaik, Blueprints are way slower than C++ code that does exactly the same thing.
    Do these get compiled into burst jobs or something? That would make them faster than my current code
     
    theor-unity likes this.
  32. ans_unity

    ans_unity

    Unity Technologies

    Joined:
    Oct 12, 2017
    Posts:
    124
    Yes, Visual Scripting is generating DOTS and BURST compliant C# code. This is as efficient as writing the code yourself, maybe even more so if you are not yet familiar with DOTS.
     
  33. theor-unity

    theor-unity

    Unity Technologies

    Joined:
    Feb 26, 2016
    Posts:
    188
    To add on what @ans_unity said: you can look at the generated code any time by clicking the Code Viewer in the toolbar. At the moment, we never interpret some kind of byte code ; it's always generated C# code, with jobs and burst if possible.
     
  34. laurentlavigne

    laurentlavigne

    Joined:
    Aug 16, 2012
    Posts:
    6,362
    Added the drive .zip in a project. At first this didn't work. Now it's fine :)
     
  35. laurentlavigne

    laurentlavigne

    Joined:
    Aug 16, 2012
    Posts:
    6,362
    Overall feedback: a good preview of things to come, near impossible to debug. I think once proper console integration is added and zero occlusion policy in force it'll be very good.

    PROS:
    1. Drag and drop gameobject to create a query
    2. click drag from an output circle auto ads a node
    3. Will morph to updated code as DOTS changes (I presume)
    4. graph wire snap is very good the way it shows the snap solution as a ghost wire
    5. zoom on mouse cursor
    CONS:
    1. nearly impossible to debug: double clicking on a console error doesn't open the faulty graph!! For example "input axis is not setup" well it is but double clicking on that error doesn't open the point where it thinks there is a mistake.
    2. create component is clunky, the save button is too small, the color scheme is wrong and it's at the bottom requiring too much unnecessary mouse travel and the code window keeps popping up, explicit only please, I don't care what the code looks like until I want to see it (check box option or "save and view code" button)
    3. nonstandard GUI: The blackboard panel isn't in the panel menu item but a button yet it creates a panel, this is non standard and I've been looking for blackboard in quicksearch which doesn't see it. Make it part of the visual script panel or make it a panel
    4. nonstandard GUI: + disappears and only shows up when hovering the title bar of the blackboard, this sort of web gimmick doesn't fit a professional app and occludes the real purpose of the blackboard
    5. nonstandard GUI: Separator between visual graph windows is way too thin
    6. node search requires space. this kills the muscle memory of someone who's spent years typing c# code so you need to accept search terms like "getinp" to find "get input"
    7. the nodes are way too wide, the layout of drop 4 was much better: take for instance GetInput node, it's about 3x wider in drop5 than in drop4, no added information excuses that
    8. the blackboard doesn't update the name when a graph is renamed, it needs to be clicked
    9. when a required input isn't there, like the input choice of GetInput, the cell should be red, at the moment it's the same color as a valid entry
    10. nonstandard GUI hard to see black on dark gray
    11. big lag in scroll and dolly
    12. very hard to know what's wrong, I think the code generated some times doesn't update, for example I don't see a system I just created (query from drop, onupdate, translate, 2 get input like Linda's tuto), and earlier it took me to close rider for deleted system to stop filling the console with red
    WISHLIST:
    1. The objects that match a query show up in some way, or at least a (#match) that can be clicked to highlight all objects in the project and the hierarchy. It's because making valid query is hard, that SQL stuff is a knew way of thinking so any help is appreciated.
    2. auto save
    3. when clicking on the title, blink the graph in the project view, when click sliding on the title, rename the graph
    4. algebra is super unreadable in graph representation, add an arithmetic node that allows simple things, like input1+input2*input3*deltatime

    BUG: illegal graph
    upload_2019-11-13_12-53-9.png
     
  36. Lars-Steenhoff

    Lars-Steenhoff

    Joined:
    Aug 7, 2007
    Posts:
    3,527
    Yes the background and the nodes are to close in color, that's why I asked to be able to change the black background to a custom color, to at least be able to fix it myself :)
     
  37. theor-unity

    theor-unity

    Unity Technologies

    Joined:
    Feb 26, 2016
    Posts:
    188
    Thank you for the feedback !

    General statement: we haven't spent time on ui conformance, the node layout or the component editor ux in general at this point. all of that will change, we're aware of these issues.

    1. and 9. looks like a runtime error, that will need specialised code to catch these errors at edit time. it's on our roadmap too. hopefully tracing should alleviate the issue in general until we get to specific errors.

    6. spaces in searcher: good point

    8. that's a bug

    12. codegen bug ? we're supposed to show user errors, but once in a while the codegen itself is generating unsound code. if you close the code viewer, reopen it, then click on the refresh button and no code is displayed, that's the issue (and you should NEVER have to do thatas it should never happen).

    Wishlist:

    1. planned in our onboarding/workflow refactor. stay tuned.
    2. what do you mean ? saving the asset or auto-dump the latest version of the code after a live-edit during playmode session ? if you're talking about the former, that would not be coherent with unity in general (see: timeline)
    3. good point, noted
    4. have you tried the inline expression node ?

    Edit: about colors: we know, you'll get a reasonable theme before 1.0, and we're thinking about configurable colors
     

    Attached Files:

  38. Lars-Steenhoff

    Lars-Steenhoff

    Joined:
    Aug 7, 2007
    Posts:
    3,527
    Thanks!

    + 1 for configurable colors
     
    deus0 likes this.
  39. laurentlavigne

    laurentlavigne

    Joined:
    Aug 16, 2012
    Posts:
    6,362
    @theor-unity Thanks for your reply. What is the next drop's focus?
    How will it integrate with the unity GOAP?
    I see there is a timeline that fills in when the record button is pressed, it looks like a trace timeline, which is WOW, hopefully I can make a system that works very soon. Perhaps I should start from scratch because I think this project got corrupted. (note to the team: give us a view of all the graph stuff that's floating around in memory, the entity debugger isn't showing this system but maybe it's because the system's query is faulty?)

    12. I had to nuke and redo the system. It never happened again and I think it was an illegal GUI operation (a.k.a me fault) that wasn't caught by the GUI and wasn't caught by the generator as invalid. I think your generator does whatever graph the GUI tells it to.

    wishlist:
    2. save automatically on every change. And I realize that a save means a recompile but I know you folks have some ideas how to stream code. Perhaps also validate each system before pushing a compile, since they are independent of each other (got I love ECS for that)
    4. just did, it's very nice how new nodes appear when a non recognized word is typed. Details like these make my day :)

     
  40. laurentlavigne

    laurentlavigne

    Joined:
    Aug 16, 2012
    Posts:
    6,362
    is that record stuff the new timeline trace ?
    upload_2019-11-14_18-5-1.png
    btw: lerp in the expression node spits out a double instead of a float
     
  41. laurentlavigne

    laurentlavigne

    Joined:
    Aug 16, 2012
    Posts:
    6,362
    I am collecting a few more oddities:

    -1. can't space-create an expression when pulling it from the float output port of an input node in a macro. expression needs to be created by pressing spacebar in the background with nothing selected
    0. can't pull 2 connection from the output port of an input node (in a macro), it creates an extra input node
    1. get property doesn't seem to work intuitively, the current workflow is to chose from the context menu the get property value. what it should be is expand the get property node shows all available properties
    2. in get property, values requires a context menu interaction, what it should be is click on the expand icon near the value word expands the value into its "ports"
    3. I used the timeline tracer, the problem with it is when a node has input the values no longer show up, so instead of hiding the input field, gray it out so we can look at values as we scrub the timeline.
    upload_2019-11-14_22-13-26.png
    4. multiplication of queries might might be less performant?
    upload_2019-11-15_20-0-10.png


    Off course it's awesome to have such a low barrier of entry to ECS, I mean here I am with
     
    Last edited: Nov 16, 2019
  42. wilson_p

    wilson_p

    Joined:
    Nov 4, 2018
    Posts:
    39
    Bug report:
    1. cannot create a double type variable in componentdata.
    2. it happens occasionally: unable to add componentproxy to object in hierachy list when there is no graphic asset in the project.
    3. the sticky node's border is sticked to my mouse' pointer and cannot be released while adjusting its width.
    4. no connection line is auto-created while creating a property node by dragging out of other node's slot.
     
    Last edited: Nov 18, 2019
  43. wilson_p

    wilson_p

    Joined:
    Nov 4, 2018
    Posts:
    39
    When will drop6 be released?
     
  44. theor-unity

    theor-unity

    Unity Technologies

    Joined:
    Feb 26, 2016
    Posts:
    188
    Next drop focus: more coroutines, more nodes, early integration with physics, ux, bugs.

    The generator does sanity check on the graph while processing it, so I'd be surprised. If you have a repro, I'm interested. If the code doesn't compile, the system won't get created, so I'm not sure what you mean by "Perhaps also validate each system before pushing a compile".

    Auto save is tricky - it goes against unity guidelines (see the Unity Timeline).

    The record/setlastcallframe apis are the one used by the tracing.

    Multiplication of queries: that's the point of DOTS, if that's a performance issues, we're doing something wrong.

    Noted ! we'll investigate, thank you again.

    We aim for a release every 6 weeks !
     
    wilson_p and createtheimaginable like this.
  45. laurentlavigne

    laurentlavigne

    Joined:
    Aug 16, 2012
    Posts:
    6,362
    a few new bugs:

    Is it expected that play takes 5 seconds to spin up? I need to keep domain reload on or it craps out which seems weird since I don't use static variable, only visual ecs. can you explain why it needs domain reload?

    Can't build a project that uses visual graph in beta 2019.3b11
    upload_2019-11-18_17-6-49.png
    Also proxys shouldn't show any such warning since they're commonly set by user. There is a [codethingy] for that you can add during generation.
    SetComponent should have a vector as well as axis option like the rest. this one is for a float3
    upload_2019-11-18_17-20-49.png
    how do I get the 3 ports from an float3 expression node?
    How does the expression node handle vectors stuff like this?
    upload_2019-11-18_17-26-42.png
    How do I build a float3 like say float3(sign(
    How do I get ports from a v3 property?
    upload_2019-11-18_17-28-13.png

    So delta time is less than time ... someone on the team loves mobile phones a bit too much so get him on a week phonefree diet like these kids https://cbsloc.al/351VG9h :D
    upload_2019-11-18_17-31-42.png

    tooltip of a expression in-port should update to display the input type
     
    Last edited: Nov 19, 2019
  46. laurentlavigne

    laurentlavigne

    Joined:
    Aug 16, 2012
    Posts:
    6,362
    alright can't add more than 5 images so i'll add a post for these bugs:

    the way drop4 handled setComponent is better, a bit more intuitive. drop5 set component is probably buggy.
    how are supposed to use set component to change the value of a component that is already in the query? i keep getting "Assets/BulletControl.asset: (26,60): error CS0103: The name 'bullet QueryEntity' does not exist in the current context". non of those names match what i see in the graph UI, there is a space between "query" and "entity" in the section that's below the "on update entities" title (this section needs a title)
    does set component need another entity than the query of onupdateentity?
    upload_2019-11-18_18-11-17.png
    tried adding the entity and got this
    upload_2019-11-18_18-11-47.png
    direction is in the query at the top...

    the other bug that just hit (was trying to make a macro to get 3 ports from one float3, can't figure that one out)
    lost all links after deleting a macro made from a graph with floating nodes, a bug has been reported on this one, ill update with bug# when fogbugz finishes its big nnnnnggggg push :confused:
    upload_2019-11-18_18-19-48.png
    upload_2019-11-18_18-23-15.png
     
    Last edited: Nov 19, 2019
  47. laurentlavigne

    laurentlavigne

    Joined:
    Aug 16, 2012
    Posts:
    6,362
    Damn! one more month to wait for drop#6, it's going to be rough because I'm loving this graph thing and wanted to do a lot of things with it but...

    :eek:
    Graph is currently so buggy that it's unusable. And from the video I see that drop4 UI was better which means that you guys are not immune to BIS (Bad Idea Syndrome) and those eat up your time.
    Because of that I'd rather see a very humble list which focuses on UX and bugs, and iterate more rapidly until the basic graph and codegen work. Then adding nodes will be easy on us as things won't break left and right ... and also we can do ECS stuff over the new year break.
     
    MadeFromPolygons likes this.
  48. wilson_p

    wilson_p

    Joined:
    Nov 4, 2018
    Posts:
    39
    Thanks!
    We’re working on our next tutorial: Create a Neural Network with DOTS VS Tool and implement Back-Propagation.

    NeuralNetwork.jpg
     
    transat, sasa42, deus0 and 9 others like this.
  49. theor-unity

    theor-unity

    Unity Technologies

    Joined:
    Feb 26, 2016
    Posts:
    188
    Thank you for the great feedback !

    When does it domain reload ? playmode or edit mode ? Are you using the "Build All" button ?

    b11 was not tested at the time. Until we reach preview, we only test one specific version, the one specified in the forum post. We'll be more explicit next time.

    Proxys emitting warnings is a known issue.

    We have a plan for expandable ports (float3, ...), but it needs more design first.

    For now, you need a get property node to get x,y,z. Building a float3 is not supported yet. The expression node is far from done.

    not sure about you mean about the Time.DeltaTime ?

    The space in the query name is bug we already fixed for the next drop, so I'd suggest to try it again next time.

    we fixed a couple of bugs in macro/function references, CNR on our latest version.

    I should have said "Next drop new features" instead of "focus" ; obviously UI/UX/Bugfixing is a constant focus for us and we try to add regression tests to our test suite after each bug report.
     
  50. Team-Panda

    Team-Panda

    Joined:
    May 8, 2017
    Posts:
    1
    Glad to see the progress, When will it be production ready ?
    Will we be able to use Dots Visual Scripting with C# coding the traditional way ?
     
    andrejpetelin likes this.
Thread Status:
Not open for further replies.