November 2022 Visual Scripting Update

Hello, everyone!

I’m Ashley Alicea and I work at Unity as the Product Manager for Unity Visual Scripting. As part of the product development updates being provided through Unity’s Games Focus blog series, we recently shared some insights into the work currently being done on Unity Visual Scripting as well as a glimpse of what to expect in the future.

You can read the blog post here, but I’ll share a quick recap below. In short, we’re hard at work on the next major release of Visual Scripting and you can expect a minor update later this year with some top-requested bug and workflow fixes.

Visual Scripting is part of a larger initiative at Unity focused on supporting features that empower non-coder creators — such as game designers, artists, or level designers — to create and collaborate within the Editor alongside their development teams. As such, current work on UVS is aligning with this initiative’s focus on expanding production use cases and improving unification with Editor workflows.

Our work on a new interpreted runtime continues as a priority to ensure UVS can meet production-level requirements, including significantly improved graph execution performance and the ability to enable DLC graphs. This is being done alongside the integration of Graph Tools Foundation as the new front-end for Visual Scripting, Shader Graph, and other graph-based features. This will allow creators to benefit from a unified creation and customization experience across our graph tools while enabling seamless context switching between these features.

These efforts will continue over the next 2-3 release cycles. Throughout this time, we’re working directly with game studios and creators like you to ensure the additions and improvements coming to Visual Scripting make a difference in how artists, designers, and other non-programmers can achieve their goals in the Editor. If your studio has 5+ creators working on a project using Unity Visual Scripting and have feedback they’d like to share, let us know here to be considered for future user research studies. In addition to this forum, don’t forget anyone can provide input on what they’d like to see next for UVS via our Unity Roadmap Portal, which lets you vote on listed topics or add your own for consideration.

While no major updates will be arriving for UVS in 2023, we wanted to give a heads-up on an incoming release arriving later this year. This update will address top-priority issues like IL2CPP builds and certain causes of graph corruption, along with quality-of-life improvements such as the ability to add comments to your graphs with sticky notes. We’ll share more news about this release when it’s available.

Thank you for all the great discussions and generous feedback you’ve shared as we work on the next iteration of Visual Scripting, keep it coming and stay tuned.

10 Likes

new variable system and code generation need to happen as soon as possible

3 Likes

As the OP mentions, it’ll be a two to three year wait.

Im stunned that Unity VS is getting no major updates for 2023; its a feature that many ‘non coders’ that I have worked with are interested in exploring but its difficult for me to even consider it in a current pipeline when the known big issues (performance, Il2CPP, etc) will still be there and not solved or addressed until atleast 2024 (or 2025?). Curious what some studios that Unity is working with directly for practical feedback think of this news. I appreciate the transparency, though!

2 Likes

I highly doubt many studios use Visual Scripting effectively as part of their pipelines, just like they didn’t use Bolt for reasons that remain issues today:

  • Poor performance due to type boxing, reflection and IMGUI.
  • Increased build times and loading times on WebGL, mobile targets and other IL2CPP platforms
  • AOT issues on said IL2CPP platforms
  • Lack of debugging tooling (clicking an error in the console doesn’t even point to the faulty node).
  • Lack of refactoring tooling such as the inability to rename variables across all graphs (have to hunt down all instances manually) and can’t even collapse node selection to a subgraph
  • C# workflows until the most recent update broke graph serialization (one compilation error for a single custom node and your whole graph became unviewable if it contained the node but they addressed that now in 1.8.0 I believe)
  • Unity API changes due to package upgrades or engine version upgrades can create a lot of silent runtime only errors for reflected nodes, which is the main mode of operation for the tool. This also might’ve been improved in the recent update.
  • FullSerializer bugs also remain ever present, like Undo wiping your graph clean on occasion
  • No (official) graph search and general lack of QoL features.

The tool was designed and marketed for complete Unity newbies, which is why it became the top selling asset at the time. And Unity acquired it based on sales numbers, it seems. Or perhaps it looked simple enough to then steer it in another direction, which I doubt since the plan was to initially ship the far more powerful Bolt 2, which later was discontinued in favor of integrating Bolt 1.

With current multiyear development timelines on top of nearly 3 years under Unity ownership already, it seems like they’ve chosen to rebuild Visual Scripting from ground up.

1 Like

Oh, I had to deal with most of those issues on Gigaya; we began the project as a hybrid of code and VS (and it worked out really nicely at the start! Making custom nodes was a lot of fun!) but then shifted entirely to code (removing VS) about half way through because we kept running into performance and compilation problems (I spent half my time just trying to fix broken graphs) and the roadmap for fixes (when we reported our experiences) seemed to be end of 2022. Its why I was dipping back into this thread as I was curious what did/didn’t land.

As far as I can tell, that was the plan until something changed spring or summer 2022. Until then UVS team was still communicating on the Visual Scripting discord server. But then they went on summer vacation and then just… never returned. So the only direct link to the team has been lost. One of the last devlogs posted there from a Unity person mentioned Graph Tools Foundation training the whole team had for a week. The UVS 1.8.0 preview of the new high performance interpreter also got silently pulled from public access, and the recently released version 1.8.0 doesn’t have it.

So I can only speculate on what happened, but perhaps Graph Tools Foundation was ready enough to start the porting process which likely is being timed with ports of most other Unity graph based tools, so it’s a collective multiyear project. And they’ve mentioned in the past that making IMGUI additions necessary for the new high performance runtime is very time/work intensive effort and essentially would be thrown out as soon as GTF is available.

Or perhaps some key design issues with the high performance runtime were discovered, so they’re having another go at it. Or they’ve finally discovered that integrating Bolt 1 was a mistake, and it’s unsalvageable due to defunct middleware like FullSerializer and it’s easier just to go radio silent and redesign the thing from ground up. Who knows? Could be all or none of the above.

We went 8 months without key bug fixes for the current version, so it’s pretty safe to assume whatever they’re doing, it’s not building on the current version of the tool directly.

1 Like

I know that few companies attempted to use Bolt / UVS for prototyping (meaning, with a desire to rewrite everything to c#). Though, these studios were becoming silent about the idea quickly. I suppose that is either because the tool is unusable or because too few skilled designers bothered to learn this tool.

Also, I feel like in 3 years we will hear something alongside “DOTS for Visual Scripting is the way to go so we don’t plan to deliver any meaningful updates to UVS”.

1 Like

I think DOTS VS idea died together with DOTS only runtime as a full alternative architecture to Monobehaviour, same as project Tiny. If there’s to be any DOTS VS at all, it’ll likely be complementary to GameObjects just like current ECS/DOTS is. And Unity have stated that any DOTS additions would live in the same Visual Scripting graph as Mono nodes.

This is basically the latest update on DOTS VS we have.

From little of what I have heard, it wasn’t. Remember that UI Toolkit wasn’t “Production ready” until 2021 LTS, and they have reached parity with IMGUI only in 2022.2.

Back when they were developing UVS for DOTS, their front end was also very experimental, you could feel it as some versions were very laggy, and UI/UX was awful.

I guess the company knew the team wasn’t able to quickly develop what users wanted, so someone decided to buy an already available asset, spend a year or two on integrating and fixing issues, then move to their in-house solution or other projects.

Now, how they managed to blunder so hard is a different story. I’m pretty confident someone decided to buy Bolt without making any long-term plan or talking with any developer.

IIRC (my memory is fuzzy but all this is in various public announcements)

  • Visual Scripting was being made in-house for a while then that shifted to DOTS-only to future proof it.
  • Then feedback was that users wanted MonoBehaviour support (and DOTS was taking longer) so decided to acquire Bolt as a current solution.
  • Bolt came with Bolt 1 and in-development plans for Bolt 2.
  • So Unity had effectively 3 VS systems in various stages of development. AFAIK none of them worked together (I think Bolt 2 was to be a rewrite?)
  • Plan was for Bolt 2 to eventually deprecate Bolt 1 and then DOTS VS would deprecate Bolt 2 when everyone moved to DOTS(?)
  • Bolt 2 got dropped (I don’t remember why) and focus went to improving Bolt 1 and development on DOTS VS.
  • General focus shifted for a MB/DOTS hybrid workflow in Unity (instead of being all DOTS).
  • Radio silence on DOTS VS(?)
  • This announcement saying Unity VS (formerly Bolt 1) has no major updates until possibly 2024?

Please correct me if any of this info is inaccurate. :smile: Trying to wrap my head around the timeline.

Ideally, Unity would have ONE node based logic system that handles data input and output for both MB and DOTS. Maybe thats what is being worked on for long term?

1 Like

Public facing production readiness doesn’t apply to internal tools development. UVS team had Graph Tools Foundation training back in April/May of 2022. If they can train using it, it’s internally usable. Since summer 2021 Graph Tools Foundation development has been internal only, they cancelled the package and are integrating it as core engine technology all Unity’s graph based tools will use. They are very silent on any GTF progress but in OP post they state it’ll come in 2-3 development cycles.

That was the forever experimental GraphView API that is the current base technology of Shader Graph and VFX graph. Graph Tools Foundation is a complete redesign/replacement of that.

DOTS VS ideas were based on a pure ECS runtime existing when they were still attempting to go that way but that failed for one reason or another and DOTS VS with it. No DOTS only runtime means no DOTS VS. And it doesn’t make sense to deeply integrate a 3rd party tool and also plan to abandon it for an in-house solution later, it’s just pointless work and a lot of user confusion.

It’s a lot of inept management and also a lot of unlikely coincidences. Unity approached Bolt dev way before DOTS VS even existed, he refused to sell then. Around the time DOTS VS failed, Bolt dev approached Unity to sell them the tool. Unity had a need for a Visual Scripting tool and bought it like the originally wanted to. So it’s true that they didn’t have a long term plan, They formed a long term plan some 3-4 months after acquisition and it involved cancelling Bolt 2, and integrating Bolt 1 which they would later migrate to Graph Tools Foundation with a new high performance runtime. They’ve been on that quest ever since.

Yea, Unity presented a Monobehaviour based solution initially. Then cancelled it shortly after in favor of DOTS VS.

I’m not sure about this. My understanding is that Unity wanted to acquire Bolt at the time Bolt 2 was announced (late 2018). The original dev Ludiq talked about that in Discord but ultimately decided not to sell because their visions for visual scripting differed too much.

Unity announced their own Monobehaviour Visual Scripting tool around that time. Two years later, Unity have cancelled their mono solution and pure ECS runtime effort has either failed or Unity got the message that people don’t want to completely rework existing pipelines for some idealistic performance heaven that’s also a lot more complex to write. And no ECS runtime means no DOTS VS. I’m fairly sure Bolt dev approached Unity himself because, after two years of solo development, he was either burned out or wanted to do something else, and Unity offered good money. He’s now leading a small studio with that cash. So it’s more a coincidence than anything else and explains the lack of planning.

EDIT: As for how I know all of that, I was Bolt Discord moderator and deep into the community at the time under a different name. The community pretty much died as a result of Unity’s acquisition, Bolt 2 cancellation and inaction in regards to developing Bolt1/UVS further for nearly 3 years now. I’ve long since left it myself.

Bolt 1 had been in maintenance mode since late 2018 - receiving minor bug fixes and no new features. Dev spent most of their time developing Bolt 2 for two years until the acquisition. At that point, Bolt 2 was in alpha and mostly functional Unity released one beta version of Bolt 2 after acquisition. I still have it and it’s a thing of beauty to this day. It was about 6-8 months from a stable release, I think.

Yea, around the acquisition of Bolt there was a big change up in management. Package manager fragmentation and dependency hell was at an all time high and management pivoted hard into the other direction - everything now had to be verified, tested and compatible with other Unity systems and tools. Bolt 2 was developed in a vacuum where it valued its implementation of visual scripting above all else - it had GUI creatable Enum alternative only usable in visual scripting, it’s own home baked version of Scriptable Objects also creatable through GUI, multiple graph types each with their own pros and cons, it generated C# scripts for runtime performance reasons with a bunch of boilerplate code and it was nearly as fast as regular C#. And all of that made in IMGUI.

Bolt 2 was all that the community asked for but it was also incompatible with Unity’s new unification plans they came up with some 3-4 months after acquiring Bolt. So Bolt 2 got the boot and in goes the much simpler Bolt 1 because it’s easier to steer it in a different direction such as GTF, high performace runtime with per node code gen rather than Bolt 2’s per graph code gen, etc.

Not sure if there ever was a plan, or it just coincided with DOTS VS failing and management wanted a visual scripting tool and Bolt dev offered to sell two years after intiallly refusing.

The official wording was I think that Bolt 2 was too “programmer centric” what ever that means. DOTS VS lead dev was put on UVS team, so DOTS VS was already effectively dead even if they had a preview or two still, I don’t recall.

Yea, they pivoted hard.

In the last DOTS VS preview thread the VS product manager at the time said it’s paused indefinitely, focus is on UVS and they’ll revisit DOTS VS later.

Indeed. I believe current version is abandoned and they’re doing a full rewrite with the current implementation as a blueprint mainly because they’ve commited to it via the acquistion and engine integration. The new high performance runtime was in preview for UVS 1.8 and that got pulled. That alone says all I need to know about current implementation. It’s in maintenance mode if you can call 8 months of no updates a maintenance mode.

That is indeed the long term plan they came up with 3-4 months after acquiring Bolt. Bolt 2 cancellation is a direct result of that plan.

Well, If you read the roadmap, it’s clear they want to continue making DOTS VS, but for now, they have better things to do.

I also believe that some people at unity dream of abandoning monobehaviour, but no studio is ready to drop it altogether. I believe the move toward the full DOTS / ECS will be slow and gradual.

The DOTS VS (the experimental version) has a dependency called “com.unity.graphtools.foundation”, and its first official release was published in 2019. All of this is publicly available.
https://docs.unity3d.com/Packages/com.unity.visualscripting.entities@0.5/changelog/CHANGELOG.html
https://docs.unity3d.com/Packages/com.unity.graphtools.foundation@0.9/changelog/CHANGELOG.html

It doesn’t align with everyone’s goals. Certainly not with mine. I don’t need that kind of performance or development slowdown of having to write more complex code. Most gains of DOTS for everyone are on the editor side of things, optimizations for existing packages. Perhaps if the move is gradual and they lessen the boilerplate necessary, it’ll catch on, but even then I don’t see it as the default solution for all games.

You read that they want to return to DOTS VS, but I read that they currently have no plans for DOTS VS, which is also true.

I wasn’t aware of them switching to GraphTools. But GTF is not the reason for DOTS VS failing. Their DOTS vision failed in general either through inability to deliver technically or through discourse with the user base, who didn’t want to completely replace existing pipelines and knowledge base, which is counterproductive.

1 Like

Your rough timeline sounds about right, but this line doesn’t quite make sense.

When Unity bought Bolt, they kept selling it, until the community shamed them. If they intended to use it plug their MonoBehaviour shaped VS hole, surely they would have made it free immediately.

1 Like

I think it was around the time Unity wanted to add more products to charge for (like ArtEngine) so im not surprised that something as income-scalable as a logic tool for non-coders was decided to be charged. However, not the best idea when the main competitor has something as powerful as Blueprints for free and fully integrated into every workflow.

3 Likes

I don’t need that either, but it seems like that’s the current direction of the engine. At first, finish DOTS to some acceptable state, then slowly move features to ECS/ DOTS, and finally offer a DOTS-based replacement for monobehavior and depreciate it.

I believe the replacement will be either visual scripting (like in UE) or a separate language (like in Godot). We will see whether I’m right.

Personally I don’t care about either monobehavior nor DOTS, I’m just really pissed off that most of the tools are in stasis while Unity faffs around with C#.

If this was 2018/2019, I’d probably agree with your sentiment. Messaging around that time was entirely DOTS focused as the one and only future of Unity. But it’s 2023. Pure DOTS runtime is still a faraway dream. ECS 1.0 is not even production ready yet, and it’s a hybrid ECS/GameObject system. They are not even working on a pure ECS/DOTS runtime at this moment in time. You’ll wait a very long time for a future that might never come.