DOTS Visual Scripting first experimental drop

Hi everyone, some exciting news about Visual Scripting.

Today we are releasing our first experimental drop to the community. We encourage you to download the build and start experimenting but first, let me start by stating some important disclaimers:

  • Not for production use.

  • Very early picture of what VS will be, not representative of the final version.

  • You will need to be tech savvy to use this version. Not yet ready for everyone.

  • Things will change.

We share this build to be as transparent as possible with our process and get your early feedback. This is an opportunity for you to see how DOTS and Visual Scripting are evolving and participate in the discussion.

These are the features present in the current build:

  • Nodes, links and stacks - Most functionalities are present

  • Graph manipulation - Most functionalities are present

  • Blackboard - Basic version

  • Searcher - Basic version, will definitely get smarter

  • Minimap - Useful for navigating large graphs, will eventually work with Searcher

  • Code generation - C#, DOTS compatible code instantly generated from the graph. Using Live Edit will generate another instance of the code that we do not merge well at the moment.

  • Live Edit - Change the graph at runtime

  • Notes - Add customizable sticky notes to your graph

These are the features that are not yet available or that can’t be used without major pains:

  • Tracing, currently broken

  • Undo/Redo, unstable - will likely crash

  • Copy/Paste between graphs, unstable - will likely crash

  • Groups, unstable

  • Variables’ creation is not present yet. The graph (System) has to be stateless. You can store state in components or use the GetSingleton node which wraps DOTS’ EntityQuery.GetSingleton method.

  • High level nodes not yet available

Again, this is a very early release, expect glitches, bugs, weird behaviours and incomplete workflows for the current features. Other drops will follow regularly, improving with every iteration until we reach our planned preview release for 2020.1.

Here is a brief introduction to the Visual Script window:

  • Build All button: Will compile the graphs. The compiled script will appears in Assets/Runtime/VisualScripting/[GraphName].cs. Note: You don’t need to click this button all the time to see your changes as we’re live editing but don’t forget to compile your graph before packaging your game.

  • Code Viewer button: Will prompt a window with the generated code. The code is refreshed every time you make changes to your graph.

  • Show/Hide the mini-map.

  • Reset the blackboard to its original size.

  • Refresh UI button. Sometimes, when you connect/disconnect nodes, you can see an issue where nodes are not updated. Trigger the Refresh UI button to fix visually update the graph.

  • First, double click on the graph background to display this inspector. When checked, the system will use job when possible. If unchecked, the system will run on the main thread.

  • First, double click on the graph background to display this inspector. Then double click on the stencil ScriptableAsset to access the stencil’s inspector. A stencil is what defines a graph. In the stencil’s inspector you can manage system’s dependencies by selecting which system runs after or before the current one.

  • Queries: This is your entity queries. In this example, we want all the entities with a Translation component.

  • Criteria: This a condition to iterate on entities. In this example we want all the entities that have a Translation component with a x value greater than 100.

Steps to test Drop 1:

1 - Download and install Unity 2019.2.0a14 win or mac (Linux will be supported at a later time)

2 - Download and unpack VisualScripting project

3 - Load the project with Unity 2019.2.0a14

4 - (Optional) If you want some samples, download and import the sample unitypackage file

If you find any major bug, you can report them in our Github repo. Please keep in mind that this is a very early version so our focus is not so much on the minor stuff yet.

I’m sure you will have many questions, so please ask away!

33 Likes

Does it work with 2019.2 beta?

2019.2 Beta might create some issues, 2019.2.0a14 is safer.

2 Likes

Ah, a lovely Monday surprise! What time do you think this will get off google drive and be a preview package? During 2020.1alpha/beta or before?

Yes the plan is to have our preview package release for 2020.1.

1 Like

Thanks for letting us test it out!

1 Like

I hope people will see it as something a bit new and DOTS-centric rather than the potential clone of blueprint some might be mistakenly expecting.

7 Likes

This is pretty important.
Just takes one official post stating this to avoid many months of misunderstandings, and all sorts of bad consequences really.
People are ravenous for an official blueprints clone as we’ve seen in the many threads over the years. :smile:

We are definitely DOTS-Centric but, like blueprints, we also propose a visual scripting solution. Could you expand on what you mean by “clone of Blueprint” and what you dislike about that eventuality?

1 Like

To add on that: we’re not aiming for a blueprint clone. The goal is to minimize the usual performance trade-off with code generation while preserving a common language between programmers and VS users.

We do minimize the complexity of DOTS - eg. component read/write access is automatically determined according to the current graph, but we still have the notion of query.

1 Like

Would it not make sense to auto compile when packaging the game?

That’s what we do. We probably need to do it when an editor domain reload happens too just in case

1 Like

Nice!

Looks like the node gets blurry after you zoom out, and then click a node on the mini map (‘report a bug’ window wasn’t working)

I don’t dislike anything, I’m very happy. I’m just pointing out that you haven’t actually explained the differences in thinking between the DOTS VS and general VS solutions at large.

The users coming in might need orienting better, is my point, else some won’t know what opportunities this better design is offering them and will quickly drag you back to whatever it is they already know.

3 Likes

Will the DOTS VS support jobs(or does it currently?)? I’ve only fiddled with it briefly, but I didn’t see any indicator of it being in there

  • edit nevermind literally just read the double clicking the background to enable job support!
1 Like

Yes it does, you just need to tick the “use Job System” checkbox (look at point 6 in the window description of the original post).

1 Like

Sorry, but as someone who admittedly jumped ship to Unreal in part due to not wanting to code anymore (I forgot my last semicolon or bracket in this lifetime, it’s not for me), will you be able to do full game using only Visual Scripting?

I ask, because the announcement with the switch to DOTS focus makes it sound (to me), like it’s only a companion to that system and C# is still required to get a full game out the door…

Also, with the hundreds of add-ons from the asset store which already have custom editor UI and might not get updated for this anytime soon, will the Visual Scripting system automatically be able to hook into old add-ons, or will it require all add-ons to be updated in order to be able to talk to them?

Do I understand correctly that the graph doesn’t exist in real game’s runtime? (So it is a code generator and not a behaviour tree of sorts, and I could not live edit programmatically in the real game.)

Fair enough. Usual disclaimers (everything is subject to change, etc), but at this point:

  • visual script generate systems, so the usual workflow “drag and drop the script on an object” doesn’t make sense. we’re investigating solutions for that as it seems more intuitive.
  • targeting one specific object is more work than all of them (same as DOTS)
  • code generation means strong typing
  • the visual script asset doesn’t exist at runtime
  • coroutines aren’t there yet (that’s a bit more code to generate - WIP)
5 Likes

A full game is the goal. We’re not there yet (again, very early build, usual disclaimers, …) but that’s the goal.

We only expose one type of graph/script at this point: DOTS systems, but we’ll release more.

What do you mean by custom editor ui ? how is that related to vscripting ? Not sure I get the question.

Yes. The whole tool is designed as a compiler with a visual frontend and a C# backend. We could generate assets too (or make a different kind of graph that outputs an asset instead of code)

4 Likes