DOTS Visual Scripting 3rd experimental drop

Drop 4 is available here: https://discussions.unity.com/t/759183
--EDIT--

Here we are,

Drop 3 of Visual Scripting for DOTS!

You'll need to create a project using at least 2019.3.0a11 (https://unity3d.com/unity/alpha/2019.3.0a11) and download the Visual Scripting Project

Roll a Ball Demo

We made a small demo project so you can see how it was made and how you can use Visual Scripting , Download it here

Features

  • Component/events Editor: 4852493--466943--2019-08-13_11-07-26.jpg

This window will let you create and edit Components or events. It's not the final version but it will help and unstuck a lot of our users.

  • Disabling Graphs and nodes: 4852493--466952--DisableEnableNodes.gif

You can select specific section of a graph and disable them using the right mouse button menu. that code won't be executed or compiled. You can also disable that whole graph using the inspector on the graph, you should see the ''state'' options there. To access that in inspector, simply double click on the canvas of the selected graph

  • Description panel in searcher:
    4852493--466949--SearcherPreview.gif
    We are showing the selected node in that panel before you need to add it on your canvas.

  • Graph Variables:

More general variables that can be used in different functions at the same time

  • Unused nodes detection and styling: 4852493--466946--ShowUnusedNodes.gif

Using the ''cog'' menu in your graph you can enable/disable this functionality. It will help you see what nodes are unused and aren't generating any code.

  • High Level Node: Debug Log 4852493--466955--DebugLog.gif

We regrouped all the logs together to form 1 big node. You can simply switch the type of message you want to send, using the drop-down menu.

Fixes

  • VSB-233 For All Entities variables does not exist in the current context
  • VSB-232 Empty criteria create compilation error
  • VSB-231 Equals node return multiple bools instead of only one
  • VSB-230 Deleting a macro asset will break all graphs that are using it
  • VSB-214 Set Time Scale ‘Time' does not contain a definition for 'time Scale'
  • VSB-211 Multiple Errors when creating nodes
  • VSB-208 Missing a refresh after deleting sticky note
  • VSB-207 Color Constant Node is getting alpha to black
  • VSB-203 Hover on "For each" nodes in searcher will create it
  • VSB-201 Moving component fields in cs file break nodes port connection order
  • VSB-200 Get Component Node not displaying its type list
  • VSB-196 Cannot create node that takes a pointer as parameter
  • VSB-193 Can't find Color Constant node
  • VSB-192 Renaming a graph don't rename it's cs script
  • VSB-190 Can't rename custom function
  • VSB-188 Copy paste a macro will put it in a stack
  • VSB-187 Styling of the searcher is broken
  • VSB-186 Naming in blackboard, breadcrumb doesn't follow selected graph
  • VSB-185 "local to world" criteria cannot be selected
  • VSB-184 Criteria section in function collapse in each refresh
  • VSB-180 Functions don't show return type
  • VSB-179 “Rotate by” node deform object when two axis are selected
  • VSB-178 Variable from events send error 'graphData' does not exist in the current context
  • VSB-177 Node duplication break when going in play mode
  • VSB-175 Creating a "Get input" breaks the visual scripting editor
  • VSB-165 Renaming a graph isn't showing up in toolbar when docked
  • VSB-164 "Float 4" UI in criteria is broken
  • VSB-35 Can't add Macro input and output ports in the blackboard

Know issues

  • Visual on constant node is broken in the searcher description panel
  • Can only change system order between visual scripts
  • Performances issues when dragging edges after another edge connection
9 Likes

I have this error.
Windows 10
Unity 2019.3.0a11
With the project roll a ball
4852676--466976--Error.png

yes I just realized that the registry is not available outside our office… I’m building a zip file like we did in previous drops in the meantime.

please do NOT tell people to modify the registry key in manifest.json. you did this with the staging registry, and it caused a lot of unrelated problems.

upm has now scoped registries, use that instead

Edited the initial post with the project, hopefully this will work correct, sorry about that!
- We will modify the Roll a Ball demo soon to have the same setup

-EDIT-

Roll a ball demo has been updated and should work now too

2 Likes

when adding component , how to I set its type ?

Not sure to understand what you are looking for? can you explain what you are trying to achieve? are you talking about the add component node?

nevermind I just had trouble locating the + sign for adding a new field.

It really took me awhile to get started with figuring out what i needed to get a ball moving from a blank scene.

Maybe having events (On Start Entities, On Update Entities, etc) in the graph by default would be a better UX?

We actually have support for that, we just haven’t plugged it. Let me check.

1 Like

I don't know if this is affecting anyone else but I can't seem to download the latest version of either the ball demo or the visual scripting project. When clicking the download link on the google drive file page a new tab opens and nothing happens.

I was able to get the links to work when downloading from Microsoft Edge, I'm currently using Vivaldi (a Chromium based browser) and it doesn't appear to work in Vivaldi. The first 2 drops worked in Vivaldi. I don't have Google Chrome installed so I couldn't test there.
For anyone encountering the same trouble, you can try Edge or another browser engine and you might find success there.

1 Like

One quick comparison i can make with the UI/UX so far is with Unity's own VFX graph

On boarding:

4860602--467900--upload_2019-8-15_10-9-26.png

vs

4860602--467903--upload_2019-8-15_10-10-41.png
(I know you said that you support a handful of events being in a fresh graph, so that's great)

Accessing individual values:

4860602--467918--upload_2019-8-15_10-12-6.png

vs

(Also disabling a node is also a lot more of what you'd expect)
4860602--467921--upload_2019-8-15_10-12-52.png

I personally feel like the VFX graph, even tho i'm no VFX artist, is a pretty good visual editing tool. Can't say i'm a fan of the vertical + horizontal form of editing that Unity seems to be going with...this seems to have a MUCH higher learning curve than the typical left to right systems most visual editors go with, but i digress. As far as this style of visual editing goes, the VFX graph made the idea of it a little more palatable with a lot of it's UI choices being well executed

I understand this is deeply experimental, but i just want to put out the concern just in case. I would love for more of these tools to feel unified, especially if one of them is already well liked. Seeing style changes going from the Shader graph, to the VFX graph, to the Scripting graph is pretty odd when it's all supposed to be official tools from the same company. And worse yet, going from the VFX graph to the Scripting graph, seeing the same exact editor but offered up two different levels of interaction can be kind of annoying.

Again, i feel the VFX graph is really nailing whatever this vertical + horizontal editing style is supposed to be, so I'd love to see more UI and UX shared between this and that.

Another thing is the Component creation:

4860602--467939--upload_2019-8-15_10-46-47.png

This is fine, but i wondering if it's possible to just have this in the inspector?

I think I remember seeing the Tiny Mode having the ability to just edit the component from the inspector and i always though that was a solid visual solution. But having a whole separate window to do that seems a bit extra.

I've only had a chance to actually use it for a short while the other day, and after i figured out how to actually iterate over an entity, i was able to get something moving pretty quick. And i love the code viewer! I wonder if it'd be possible to sync what you're selecting in the editor to whats highlighted in the code viewer. Maybe more work than it's worth, but that'd be neat. One thing that's was killing me though: Is there a way to create a float3 from a couple float1s? I can't seem to find a "combine", or a float3 with individual accessible values.

2 Likes

Hi,

Thank you for the feedback.

On boarding: Visual scripting should by default create 3 empty event stacks linked to a query to help you on boarding and reduce repetitive work. At the moment we have a draft of the feature only in those 2 contexts. And the create graph from the project is totally empty at the moment.
4863710--468413--upload_2019-8-16_8-53-42.png
4863710--468425--upload_2019-8-16_9-1-10.png

Accessing individual values:
Yes, this is work in progress and is part of the goal, to get expending ports on nodes.

Component creation:
The component editor we have is just a temporary solution to unlock non-programmers. What Tiny got is the main goal for the final version.

Combine float3:
The node is pretty hard to find at the moment, it will be way more easier to do this operation in the futur with the expandable ports and we may also rename this node.
4863710--468461--upload_2019-8-16_9-22-10.png

1 Like

To get the events, simply press space bar on the background of your graph, the searcher should prompt in “Add a graph node” context. From this searcher context, you will see an Event section like the following one.
4863728--468446--upload_2019-8-16_9-10-25.png

Thanks for the response! The on-boarding draft seems great

And yeah, i was able to find the Events eventually after seeing that the code viewer wasn't updating no matter what i dragged into the editor. I thought i just needed to for loop over the entities. Then i started clicking around till i got to the Events then things started making sense

Dear Unity.
I had high hopes for your scripting language but it seems that you are trying to do a Bolt version.
If you are going to make one and it looks like Bolt or playmaker, why waste time doing it?.
In your roll a ball demo, just the amount of "code" to make the cube rotate is RIDICULOUS.
I hope when you release this, you won't make the same mistake as playmaker/Bolt and say that this tool is for artists and non programers. You don't need to lie.
When you announced it some year ago, or more, I made a comment on your video asking to not put your programmers working alone, to make them work with a person that didn't know how to program.
You answered that you were listening.
Obviously not.

1 Like

DOTS visual scripting is not like bolt. Unity recommended people try bolt for monobehaviour, regular C# projects.

DOTS visual scripting is for ECS… and that creates a very specific way of working. Do you understand?

1 Like

My main (and only, really) qualm with the UX right now is that the nodes take up a lot of space. One of the main handicaps of Visual Scripting in general is that a node will always take up a lot of room on the screen compared to just a few typed-out words, so my suggestion is that you could make the node headers thinner and give them some color. Blender's material editor is a good example of this. Each node ends up being a tad more compact, and it's also much faster to pick them out when they are placed in large groups or close together. To me it seems like headers are currently big because size is the only way to distinguish them from the rest of their node, but once color is added there is a lot more flexibility for different layouts and whatnot. It also looks better.

Have a look at playmaker, how simple the nodes look.

And I would also try to match shader graph and visual scripting visually, it would make it feel more like a universal design language is followed for nodes.

1 Like