Welcome to a different kind of Developer Update. We’re off schedule today for some special announcements regarding the Creators Roadmap!
There’s no featured world today – but if you’d like to see our last Developer Update, you can do so here.
The Creators Roadmap Has Been Updated!
Go check it out here! We strongly suggest that if you’re a creator, you read through everything that’s changed – and what milestones we’ve hit.
However, there are some things we wanted to draw your attention to in particular. One of which is something that you might have a few questions about.
So let’s get into it!
Persistent User Data is Live!
Yes – that’s right! One of the most anticipated Creator features is now live. This was a big one – and one we’re particularly proud of. To say that this opens up a bunch of new possibilities is underselling it. In many ways, this is as big of a generational leap for VRChat content as Udon was.
- The feature allows world creators to save information about individual visitors. This means that any time a user returns to any instance of a particular world, certain information can be retained.
- There are two types of Persistent User Data: PlayerData and PlayerObjects.
- PlayerData is a key-value database that allows Udon scripts to save and load User Data.
- PlayerObjects are GameObjects that automatically instantiate themselves for each player. All their synced Udon variables can be persistent, if marked with a
VRCEnablePersistence
component.
- There are two types of Persistent User Data: PlayerData and PlayerObjects.
We can’t wait to see what folks do with this feature now that it’s available to the broader VRChat community!
Persistent User Data has the potential to unlock a new world of possibilities in both progression and personalization. Have you ever wished you could provide visitors to your world with the ability to…
- Unlock new facets of your world over longer (or multiple) sessions?
- Customize their experience and retain their choices the next time they return?
- Express themselves creatively in more dynamic ways?
…well, you now can!
Please share feedback here and let us know which use cases for Persistent User Data are most exciting to you, and what you think of this new feature. You can also share worlds or tools that leverage Persistent User Data on our Persistence Showcase thread, or check out what other Creators are making for inspiration!
One Time Purchase are ALSO Live!
While we mentioned them in the last Developer Update, it’s worth noting that One Time Purchases are also now live.
- One-time purchases allow you to buy stuff from creators without monthly group subscriptions!
- One-time purchases can be permanent! Buy them once and keep them forever.
- Or they can expire like a group subscription. One-time purchases are flexible.
- This is the most highly-requested feature from creators in the Creator Economy. We appreciate your feedback!
- World stores allow you to browse a seller’s store by looking at their world in the VRChat menu.
- This is where you’ll (usually) find one-time purchases.
- You can also find one-time purchases directly inside worlds.
Introducing… Soba!
We know you’ve been waiting patiently for this news, and here it is: We’re excited to announce an update to our Udon architecture: Soba.
We’ve identified a simplified, lightweight approach to give creators access to many useful features of C# 9.0. This approach maintains full backward compatibility and runs smoothly across resource-constrained platforms, including Quest, Pico, Android Mobile, and iOS. Using Soba, you can write C# logic, which is compiled to CIL (Common Intermediate Language), and available alongside your ‘classic’ Udon programs.
This approach allows us to be more iterative, and layer on additional features over time, rather than changing the entire VM in one go.
FAQ
What new features will the first version of Soba include?
The Closed Beta will include some of the top requested features from the VRC creator community (such as non-UdonBehaviour classes, custom interfaces and static fields).
One hard decision we had to make was not including generics (like list, dictionary, etc.) in the first iteration, as this requires a rewrite of the wrapper layer. With that said, Soba sets us up to efficiently implement generics in the future. We’ll share more information about Soba’s features soon!
Please let us know about features that would be particularly helpful to your development (including example use cases) to help inform future priorities.
How does Soba compare to UdonSharp?
The first version of Soba will have all the existing features from UdonSharp (including all features incorporated in the official VRChat implementation of UdonSharp in the Worlds package) as well as the new ones mentioned above, and more to be announced! It should perform at least as well as UdonSharp, and performance is better in some cases.
Why are we developing Soba?
This approach improves on the base created by Udon, setting us up to improve performance and expand features in an iterative way. Writing programs for worlds with Soba will be much closer to writing programs in C#, and paves the way for implementing many of the features of C# (similar to standard implementations like .NET Core and Mono).
What are the next steps for Soba?
We are currently wrapping up development on Soba and launching internal testing. Once this is complete, we’ll be working directly with creators during a Closed Beta period to test the functionality and collect initial feedback. After this, we’ll roll out with the usual Open Beta and Live releases.
Will my existing Udon Worlds continue to work?
Yes, and we will use the Closed and Open Beta periods to gather input about any unexpected changes so that we can address them before the Live release.
Do I have to choose between UdonSharp, Udon Graph and Soba?
No, Udon#, Udon Graph and Soba can run in the same world, and the programs can interact through SendCustomEvent and network events.
At this time, it won’t be possible to create Soba programs using the graph. We don’t have any additional updates to share about our roadmap for Udon Graph at this time.
Will there be a migration guide from UdonSharp to Soba?
Yes, we will provide a guide on the changes needed to update your UdonSharp code for Soba, and tools to automate as much of it as possible.
See You Next Time!
Given the holidays, we might be a little off schedule! You should expect the next update next week, however it could come a week later. Keep an eye out!