Introducing VRChat Udon: Unlocking Coding for Creators

Tupper
VRChat
Published in
7 min readApr 1, 2020

--

VRChat Udon is a programming toolkit included in our new software development kit (SDK). It is a programming language purpose-built for VRChat and aimed at enabling more expression for whatever you can dream up.

Let’s get this out of the way — VRChat Udon “Live Alpha” will be available in Live VRChat very, very soon. Depending on when you read this, it may be available already! We’re releasing VRChat Udon today with the VRChat 2020.1.1 release. It is a part of our new SDK, VRChat SDK 3.

Udon is now in what we’re calling “Live Alpha”. This means that you can now make things with Udon, upload them to VRChat, and share with the whole world. That’s what the “live” part means.

The “alpha” part means we’re still nailing things down, adding on features, fixing bugs, that sort of thing. There will still be some missing features we’re working on (we’ll talk about that) and bugs. We’ll need the help of our community creators in tracking bugs down and getting them reported, so we can get to fixing them.

We tried our best to get all of the breaking changes out of the way during the Open Beta process, so we don’t think we’ll have to issue any “all Udon worlds must be reuploaded” messages in the reasonably near future.

As a side note, VRChat Udon is currently only for worlds, and will not operate on avatars.

Udon is designed to be secure, performant, and easy to use via the VRChat Udon Node Graph, a built-in “node graph” visual programming interface that uses nodes and wires (we call them “noodles”, get it?) to connect flow, inputs, and outputs. You can build complex behaviors with Udon — far more complex and easier to understand than unwieldy chains of Triggers and Actions.

Not only can you replicate the full behavior of Triggers and Actions with VRChat Udon, but you can create your own behaviors, sync variables with others, interact with scenes, interact with players, and more.

In addition, you can share Udon Node Graphs with others by simply copying and pasting them to each other!

Finally, Udon functions in the Unity Editor, meaning you can test your interactions by running in Editor without making a build, greatly speeding up your workflow!

For the nerdier: VRChat Udon is a VM running bytecode compiled from Udon Assembly. You can generate Udon Assembly using the built-in VRChat Udon Node Graph UI, writing your own Udon Assembly, or even by writing your own compiler (some of which already exist) to generate Udon Assembly or bytecode programs directly.

OH BOY LOOK AT THAT ASSEMBLY

Don’t worry, that’s the only eye-glazing technical bit we’ll have in this post. In short, VRChat Udon allows creators to make amazingly interactive, dynamic worlds with essentially any kind of game or function you can think up. It is a secure alternative to letting people writing custom scripts.

We’ve been running an Open Alpha of Udon for the last 3 months — check out what our community has already made. All of these worlds are powered by Udon!

There’s a lot more that you can see using the #MadeWithUdon tag on Twitter, or check out our #udon-showoff channel in our Discord.

Right now, you can do a ton of amazing stuff with Udon — just take a look at all those community-created contraptions up above! However, there are some things we’ve marked as “Coming Soon”, as they require a bit more work before we make them available.

  • Some Type Syncing — You can’t sync arrays or animators across the network yet. Working on it!
  • Network Instantiation — Local instantiation of objects works fine. Doing it via the network (telling others to instantiate objects) isn’t in yet. We’re actively working on this.
  • Subgraphs — Basically, Udon Node Graphs within Udon Node Graphs. We had these in an earlier Alpha build, but we’re redesigning them to be far more useful and powerful.
  • Graph Zooming — We want it just as much as you do, and it is part of our internal roadmap.
  • Synced Video Players — We’re working on making it possible to make powerful video players with all kinds of features — and let users add new functionality, like custom offsets (for karaoke), syncing different videos (“I like subs!” “Well I like dubs!”), and other features. In progress!
  • Midi and OSC Integration — Midi and OpenSoundControl (OSC) are amazingly expressive protocols used widely in the Music and Theatre industries. (There’s a lot of Synth and VJ Nerds on our team who have been asking for this!) We’re looking forward to getting these supported ASAP, so you could wire up any Midi Keyboard or OSC controller to affect things in your worlds. You’re not limited to using these for just music performances, you can control anything in your world with a Midi or OSC action.
  • VRC_Panorama Replacement — Very few creators use VRC_Panorama in VRCSDK2 for… well, panoramas. Instead, most people use it to get a remote image from the internet. We’re formalizing this by creating a “dynamic image” component that lets you grab images from the web. This is on the way.

We made a Quick Start guide, just for you! It is a lot of info, but we want to make sure you’ve got all the details you want. It contains links to where you can download the SDK.

This thread is on our VRChat Ask forum, which is a message board we created for Udon creators to communicate and gather information. You can sign in with your VRChat account, but you don’t need to sign in to read information.

In addition to information on how to create stuff with Udon, you can also find links to our Feedback and Bug Report boards on the Ask forum.

Wait, what’s VRChat SDK3?

If you’re a creator, you’ll know about our current SDK. It is actually the second major version of our SDK — in other words, it’s called “VRChat SDK 2”. We’ve been calling it the “VRChat SDK” for a bit. Now, we call it “VRCSDK2”.

With Udon, we’re releasing the brand-new VRChat SDK3 (VRCSDK3). For now, VRCSDK3 is only for Udon-powered worlds, and cannot be used for avatars. VRCSDK3 comes pre-packaged with VRChat Udon.

You’ll find that Triggers and Actions are missing from VRCSDK3. That is intentional — Triggers and Actions are now considered a legacy system. Udon is its replacement.

We’ll maintain VRCSDK2 for as long as we need to (translation: a very long time, don’t worry), but if you’re making a new world, you should use VRCSDK3.

As an aside, you cannot migrate projects from VRCSDK2 to VRCSDK3. We don’t plan on making this a possible workflow. They’re very different, and there’s no reasonable way to “convert” VRCSDK2 worlds to VRCSDK3.

There’s a lot more stuff coming to VRCSDK3 in the future — things we’ve only mentioned in name once or twice. We’ll talk more about that later.

Yeah, actually! The 2020.1.1 release has an absolutely massive changelog. In addition to Udon and VRCSDK3, we’ve got:

  • Upgrade to Unity 2018.4.20f1
  • A completely reworked Networked IK system
Full video by Kung

We’re planning on broadcasting a “Dev Update” stream on our Twitch channel as soon as possible. We’ll go over a lot of the new stuff in a little more depth, as well as get into what we’re working on going forward.

We’ve been working on Udon for a long time. It is the biggest single project we’ve undertaken! We’ve already seen some amazing creations during testing, but we can’t wait to see what’s yet to be created with VRChat Udon. Make sure you share your creations using the hashtag #MadeWithUdon!

Useful Links

VRChat Ask Forums — Getting Started With Udon

VRChat Ask Forums

Release Changelog / Notes

--

--