Soba
in progress
Fax
VRChat is working on an improvement to Udon, VRChat's scripting system.
Currently, World creators can write code in two different ways:
- Udon Graph
- UdonSharp
VRChat is introducing a third way:
- Soba
Creators can write Soba scripts in C#, similar to UdonSharp. Soba scripts are compiled to Microsoft's Common Intermediate Language (CIL). This allows Soba to use a variety of features that are not available in the Udon Graph or UdonSharp.
Log In
Fax
Check our our latest developer update for news about Soba! (A.k.a. Udon 2)
Reimajo
This was originally the Udon2 Canny, which is what people voted on here. They did not vote for Soba. I find it disheartening that VRChat has decided to just edit the original Canny and purge Udon2 like it never existed, making it look like 148 people want Soba even though they voted for Udon2 instead.
Here is the new Udon 2 Canny: https://feedback.vrchat.com/feature-requests/p/pivot-back-to-webassembly-based-udon-2
Gasmaskchan
Reimajo couldn't agree more, absolutely disrespectful and miss-leading all together...
Not__Shadow
Reimajo Thank you so much for spreading the word! I'm aiming to overtake this canny in upvotes as my primary objective, which will show more people want Udon2 than Soba
This canny is as misleading as they get, whereas mine is exactly what the people want, Udon 2!
Fax
Reimajo: Thank you for sharing your feedback! I understand your perspective, and in hindsight, creating a separate post or a more detailed Canny update would have been a better approach.
Here's why we chose to edit the original post last week:
- Our February Developer Update discussed Udon 2, and Soba will bring many of the same improvements. Users who upvoted this post are likely interested in these same enhancements.
- This post was created as part of our first Creators roadmap. By editing it, users who already upvoted or commented would see new updates instead of needing to visit a new Canny post.
- The original post was outdated, we wanted to make it easier for users who upvoted the original post to see the current state of development.
- We've updated posts in the past when information changed, though usually with smaller edits.
That said, I completely understand that editing the post can feel like rewriting history, and I apologize for the confusion it caused. I hope you find this additional context helpful!
Fox_score
Will we finally get proper networking (like a TcpClient or HttpClient) instead of having to rely on workarounds when Soba releases?
tismatis
It's good to see Udon 2 very coming soon but is that more safe than Udon?
Deantwo
tismatis:
They added the code signing recently, and I think that has made Udon much safer. Since it prevents VRChat from running modified Udon scripts.
「Nara」
Will the Soba baseline compiler (CIL to Soba Baseline Bytecode) do optimisation passes like inlining and other similar passes, like the WebAssembly tool Binaryen can do? Roslyn does not do inlining when targeting IL.
Not__Shadow
Can we please get some transparency on why you gave up on the Blazor + WASM approach?
You can't just sweep it under the rug after promising so much stuff which you're now slowly backtracking on
HostileLogOut
Not__Shadow i don't believe they ever mentioned they were going to use Blazor + WASM. even if they did Blazor is purely for web applications and WASM is for browsers only. not for a game that doesn't run on a browser engine.
DeltaNeverUsed
HostileLogOut
"Now for some technical details: Udon 2 runs WebAssembly instead of UdonAssembly. Your programs are compiled into C# script assemblies using Roslyn, and run within VRChat using the same runtime as Blazor."
HostileLogOut
DeltaNeverUsedi i guess i missed reading that part of it. for sure an odd choice
DeltaNeverUsed
HostileLogOut I agree, but it would have been rather cool. I am also curious as to why they scrapped this approach though.
_Komino
Since Udon 2 is now soba. What happened to the performance claims in previous dev updates?
Fax
Check our our latest developer update for news about Soba! (A.k.a. Udon 2)
D
Dark Karma
how about support for scriptable objects?
cause rn I kinda need to use a couple of empties when making things like character data and categorizing under their own category empties.
But with scriptable objects that wont be necessary anymore, since I can just have 1 script that works as a database of sorts and in it I can put all my characters in their own categories accordingly.
LiveDimensions
Dark Karma a way around this is to "push" your SO data to U# behaviours that need it on build. We've been working with this pipeline for a while now in Project Aincrad. Also has the benefit of being able to use C# while in editor to do cool stuff with your SO data (like using LINQ, lists & dictionaries, custom classes and such).
(shameless plug of VRRefAssist for the RunOnBuild stuff)
HostileLogOut
Dark Karma SO are nice but i am more in favor of Custom classes.
a
aljowen
Any information on how this may affect networking and sync? Will it still function the same way and perform the same way? Or can we expect structural changes or performance uplifts?
Genesis
Will we be able to use simple reflection in Udon 2? I've had to resort to implementing UdonSharp compiler hacks for keeping track of method parameter names so I can use SendCustomEvent with arbitrary numbers of arguments (see https://gist.github.com/NGenesis/9729ad29bfff576a9638593e852073b1), but it would be great to be able to simply query and invoke the method with reflection.
Μerlin
Genesis Yes
Load More
→