Just wanted to report a pain point for Unity Visual Scripting in comparison to other options. I believe this is important to recognize early and with clarity so that the team can work on performance improvements:
Unity are aware and working on a new (what they call) high-performance interpreted runtime that’ll do per node C# gen. It’ll be 10-12 times faster than the current reflection based runtime which was written by a solo developer some 7 years ago. So in theory, it should be just as fast as Blueprints and perhaps faster that Blueprints in scenarios where Blueprints is only five times faster than current UVS. Time will tell.
The new runtime together with a complete UI replacement based on the new Graph Tools Foundation technology will probably release together with Unity 2023.1 next year. Nothing officially confirmed, but that’s my best guess as someone who follows UVS progress closely.
Unity haven’t really made any advancements past what Bolt 1 was in 2020 when they acquired it and rebranded it to Unity Visual Scripting. And Bolt 1 itself wasn’t really updated for two years before that since the original creator was working on Bolt 2 instead. All the new visual scripting technology and advancements are coming next year.
Good to hear, thanks. I was always disappointed that they acquired Bolt instead of Nottorus, which really felt much more professional and advanced in many ways.
Bolt had the perfect marketing that targeted complete Unity newbies. It was/is very streamlined for that purpose and clearly it worked.
But it’s definitely not the best when it comes to making actual games. I never used Nottorus. It was already dead by the time I got interested in Visual Scripting systems for Unity. But Flow Canvas + Node Canvas combo is a lot stronger than Bolt and UVS to this day, both in features and performance. And they’re actually proven in production in multiple well known games and franchises.
So it’s clear that Unity suits bought the one that had the most sales in the store. And I guess Bolt 1 is not that opinionated which might be a factor. Unity are targeting Visual Scripting as a tool for artists, designers and other creative roles in AAA space. So the tool is basically a vehicle for arranging high level nodes that are project specific and written by programmers on the team. It has to be as simple to use as possible for designers. They also intend to release a bundle of default high level nodes dealing with stuff like character controller component and similar prebuilt systems in Unity, I presume. ie they’re not developing it to be a C# replacement, although it’ll continue to be able to access Unity API.
Unity 2023.1 doesn’t contain anything new, since they say nothing new will come to UVS in 2023 it’s safe to assume 2023.2 won’t contain anything new either. Something might appear in Unity 2024.1 but it might as well take longer.
Yea, it’s hard. One major perf killer is the Variables system. You can gain some back by holding nearly all variables in C# scripts to avoid type boxing. And you must avoid Update() as much as possible and use custom events instead. But there’s nothing there for dealing with instances stacking up. The more scriptmachines in your game, the slower everything gets. But performance is much better in builds without the graph editor overhead, so make sure you measure build performance.
Flow Canvas avoids some of these performance pitfalls by having an Update() manager amongst other optimizations, might be worth a look if you’re looking for more performance while still remaining in visual scripting land.
I have to stick with visual scripting since I’m not a programmer.
The core of my game is already done using UVS, I’m just building upon it. Switching to another visual scripting solution would mean months of work to redo everything.
I just purchased UNode, because it is supposed to convert UVS to UNode then to C#. This would have been the perfect solution but it doesn’t really work. It does not convert subgraphs, has issues with variables…
I wish I have known about Flow Canvas earlier. Now I’m not sure what to do… I don’t have performance issue for now, but I’m just starting to scale up the game. And looking to UVS performances, I’m worried.
I feel like it should be pointed out that that solo developer you are referring to was already working on a much more performant version of VS called Bolt 2.0 which was more closely aligned to C# in many ways and even had live code generation which was super neat and even useful if you wanted to convert it to a C# script for even more performance. I was testing the alpha versions of it when Unity acquired it and subsequently killed it off which was enormously disappointing to say the least.
Yea, performance wise Bolt 2.0 C# generation was amazing. In my personal tests, it was nearly indistinguishable from hand written C# code. But it wasn’t without its downsides.
One thing Unity want to achieve is DLC graphs. The ability to create new graphs or edit existing graphs and ship that as an update from some remote source without rebuilding the whole project. This is something Bolt 2 couldn’t do since it required C# generation for builds and Unity can’t compile C# scripts in build.
Personally, I still would prefer Bolt 2.0 just because it was superior to current Visual Scripting in just about every way. But the ship has long sailed and we can only look forward to the next version of Visual Scripting.