DOTS Visual Scripting Experimental Drop 10

Hi everyone, drop 10 of Visual Scripting for DOTS is ready for you to try!

For this drop we improved events, tracing and backend performances.

You will find the new package in Unity package manager after you add the following line to your manifest: “com.unity.visualscripting.entities”: “0.3.1-preview.2”

And awesome news, we have made our preliminary documentation available in the Unity Manual here!

We also updated the demo project; it will provide a few examples to help you start if it’s your first time. You will find the demo project here. To run the project, just look for the 00_Example scene.

We recommend using 2019.4.0f1 for drop 10.

What’s new?

  • New nodes

  • OnDestroy

  • Get Key Input state

  • To Quaternion

  • To Euler

  • Many Vector functions

  • New input system can be used

  • Edition time errors displayed

  • Runtime errors displayed on graph while tracing

  • Execution Edges order display

  • Backend performance improvements

Known issues / Limitations
The demo project may crash the first time it is started. Restarting a second time seems to work 100%.

Disclaimers
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.

So kindly take note of the usual disclaimers:

  • Not for production use.
  • Early picture of Visual Scripting, not be representative of the final version.
  • Things will change.
  • Feedback

We are very grateful for your feedback. Even if we do not have the time to answer and debate every point, rest assured we read every comment.

Kindly keep the exchanges polite and constructive. The forum is a space for us to learn and discuss.

Enjoy!

8 Likes

Will this system be integrated with Bolt at all or will they be separate?

2 Likes

Props for getting documentation out this early! The project is coming along really nicely!

3 Likes

I would make sense to have some kind of integration for hybrid projects. however, our first focus is on pure dots/minimal usage of gameobjects projects

The doc is just a draft at this point, but we’ve started to take that into account. thank you for the kind words !

2 Likes

Look at this beauty Data portals really help to get rid of spaghetti Code

Wondering does blueprints have data portals too? I mean data portals for triggers/execution flows

3 Likes

No, and from what I know, they don’t want portals. Honestly, there is no surprise, blueprints have specified way to work with and lack of portals force and teach you to set blueprints the way epic designed them to.

Honestly, this would look way better with the old idea of the more vertical approach to the visual scripting, and would be done faster.

2 Likes

That only works for execution pins, not data pins. for data, vertical flow makes data portal mandatory, or you get into that situation (warning, paint mock):

6018026--648800--PaintDotNet_iA5beKw9j4.png

1 Like

I agree so I hope there is a possibility to change current verical scripting to some nice vertical flow.

I tried to mindlessly copy an example created in this thread and turn It into vertical flow and I already found many issues with the current way of scripting (overall). There is really a lot of waste even now and lack of clear “flow” will make visual scripting harder to use once there is a lot of nodes in there. From what I see you don’t even use a word flow in documentation, but “Trigger” which makes It’s even more confusing.

Another problem, current approach to portals is limited to small flowcharts. One of the big difference between current approach and something that epic does is “cast to” node. It is like a portal used to transfer data between separate flowcharts, but paired with If statement. In unreal engine you are supposed to do small and middle-sized flowcharts that are paired together with a cast to node. This way unreal allows for a really complicated logic with their visual scripting. I don’t see this now with unity approach. I mean, some sort of complicated puzzle made by level designer, or even something like game “marbles on stream” which is 100% done with unreal’s VS, and not only because there are no nodes for that, this can be done later. I think there is no proper workflow done yet.

remember we’re still at an experimental level. as said earlier:

So, like what we call smart objects ? you can define input/output data or execution (the misnamed “triggers”) in a graph:

6018422--648845--Unity_198Of6XtJ5.png

then reference that object in another graph:
6018422--648848--upload_2020-6-24_11-42-13.png

which, of course, needs a LOT of doc.

@useraccount1 Vertical flow can be kinda simulated in this drop and horizontal flow (with data portals of-course) offers strong separation of code(unlike vertical flow) but I think there should be a hybrid of both like bringing together two nodes with triggers should create a Stacked node I think that would be ideal and would have benefits of both worlds horizontal(proven by ue4) and vertical(potential benefits). I hope unity guys will investigate ‘Stack Node’ in future drops.

1 Like

we are investigating and have been for a long time. however, the flow is NOT the only problem we have - given that horizontal flow covers all cases, even if in a debatable way, we’re prioritizing issues where we don’t have even a poor solution.

I know this is experimental, which is the reason I’m sending my feedback.

I think with I/O triggers besides changing name there is a bigger problem with visibility which I will talk about first. In UE4 you have to send data to the previously defined blueprint. This is limiting solution but at least you can see what is going on. I think unity team have to research on how to tell exactly what is going on. My proposition is to do It with some mix of macros, another thing ue4 does something like that too.

A program called world machine done this in a nice, visual way.

With this solution, you can create separate flowchart, then set It up as a macro and bundle It with whatever you want.

About the naming of this. The word trigger is wrong because the user can’t link that word to anything visible on the screen. I was talking about flow because this is actually good name. You can explain what flow is in one sentence (to non programmer) in a way they will understand and at the same time you can represent flow port in the node with an icon that is a synonym of the word flow.

Just proposed my idea of hybrid flows to you and people.

Are’nt macros as same as smart objects?

thanks, we’ll add that to the investigation. still, we have bigger priorities (problems lacking even a bad solution, like data-only macros) right now than flow.

what @useraccount1 calls macros is probably what we call either smart objects (a graph on another object), subgraph (a graph with no object, but execution/flow/trigger pins) or macros (not implemented yet: reusable data-only graphs)

we’re probably going with either flow or execution. I think both contrast with Data like they should. however, one could argue that data also has a flow.

1 Like

so, just to validate with you, it is what we call smartobjects/subgraphs/macros, right ?

@JakHussain @theor-unity @willgoldstone et al

The progress on Visual Scripting Graph and active, iterative communication with the community has been really exceptional so I want to acknowledge that and not lessen the much deserved accolades here. And I’m not complaining of the fact that there is early documentation so this is not a direct criticism to the visual scripting team or anyone applauding documentation.

I just want to take the opportunity to outline a reminder to all following these developments that a ream of documentation is not necessarily something to strive towards for experimental or alpha software that is subject to change and render those docs inaccurate or in need of constant edits and re-writes. Even with a dedicated team writing and maintaining docs, there is close and constant communication needed with the developers to keep everything in sync… which in practice can be very challenging to maintain. Especially for software meant to be visually intuitive as a core reason for it to exist… Too much focus on documentation, or too early, instead of core functionality / usability, reliability can be (and has been) a detriment in many software projects.

If anything, this is speaking to anyone that’s ever been expectant of exhaustive documentation for software that should / could have an intuitive UI/UX instead. Visual programming tools, (directed node graph, block, etc) fall at an interesting intersection where they definitely need some technical documentation / reference… but their visual elements need not be documented like a code framework or API, or it may miss valuable opportunities in usability because “it’s in the documentation” or the old saying of “RTFM” as it’s known :). So, there may be a schism in how people view this, and… both views are correct, just slanted towards different use cases of visual programming tools.

Shader Graph as an example has had some of these issues where the documentation / reference describes certain functionality of nodes for swizzling / splitting / joining that 1. should be for 9/10 cases self explanatory / discoverable and not need documentation… 2. has features documented that to my knowledge never worked properly (dynamic component output) and the Shader Graph team has (indirectly through support channels) refused to address the issue or update the documentation to reflect the actual functionality, noting there is an (un-intuitive) workaround to the dynamic vector output size bug, and noting will be a major redesign & refactor someday soon anyway that will address this with a different approach. That said, it’s been leaving a bad taste in my mouth and anyone learning or using Shader Graph that’s come across these usability issues ever since it was declared production ready. Then there are other sections of the Shader Graph documentation like the master node reference that has been incomplete and out of date for a year at least and should just be removed if they won’t be maintained. Again… why we even need exhaustive documentation for a visual tool that should document itself in its own UI is beyond me. Old standards and expectations die hard I guess. I don’t mean to single anyone involved with Shader Graph team out anyway and I know they have plans to address all this. Unity strongly acknowledged on the 2020 roadmap talk that the development pace the last few years was overly rushed / crunched and I presume this was a significant factor to projects like this falling into default minimum viable product territory as such.

This is in contrast to the Visual Effect Graph team which has focused on usability, intuitive UI like vector component swizzling / split / join that is built into every operator node with a simple and self-explanatory expand/collapse widget. It saves the user from (in Shader Graph’s case) needing to peruse out of date documentation of a Swizzle node to inaccurately describe its already stilted design usability using drop down menus. And then find a tutorial / example to find out about the Split and Join nodes that seem to be the way that the majority of Shader Graphs actually swizzle vectors. Interestingly, There was actually a previous version of the Visual Effect Graph documentation that contained an attempt at an exhaustive node reference which was later removed and instead replaced with cursor hover tool-tips in the graph UI on the nodes themselves. Leaving the Visual Effect Graph docs to focus mostly on the philosophy and visual language to onboard users into an intuitive flow with the UI/UX… so that they can hopefully not need to return to the documentation again… (unless it’s for say, about writing code for a customization API.) While not a perfect or complete solution, this pivot was a bold but wise move that is inline with visual programming paradigms and modern UI/UX. (To be fair, I’m going to guess the Visual Effect Graph team probably had less pressure and other packages depending on their results than the Shader Graph team did, which may have let them explore and hone Visual Effect Graph in from a usability point of view like this.)

As such, I hope and expect that all visual programming packages underway at Unity continue in this direction, lessons learned. The expectations surrounding their documentation takes a significant backseat from the developers and the users perspective, with a firm focus on the product’s functionality and usability. At least until the package is significantly mature or at least production ready, etc.

I might be preaching to the choir here as they say, I have shared similar sentiments on other threads before. Anyway, I’m sure someone may benefit from these ideas even if it’s redundant in the context of Visual Scripting Graph’s development goals, so, thanks for hearing me out.

7 Likes

I’ve been long waiting for this feature, I’m quite anxious to say the least. So… I wanted to ask: Is It still planned for 2020.1?

Also, Is it usable for 3D or only for 2D for the time being?

No, we had to push back on our original estimates; the release version of DOTS visual scripting will not be available before 2021. We are still experimenting and want to give you the best tool possible. Unity recently acquired Bolt if you are looking for a VS solution for current tech.

And yes, it’s definitely made to be used for both 3D and 2D, though it’s possible that some specific features are not directly supported at the moment.

1 Like

Too bad we can’t use it now in 2020.1 as a preview:(

I’m definitely looking forward to using DOTS VS and bolt2, both tools in production, but while it’s not ready, let’s go helping, giving feedback:smile:

But what can we expect from the next DROP 11?