Developer Update - 29 February 2024

Clarification would help. I believe it was stated that synced values can be saved/restored. Many objects change ownership (or can).

VRC+ by its current design is making itself worthless. I am not against supporting VRChat for useful paid features, but locking essential features on purpose (that doesn’t cost anything more to develop) or unlocking an extra rank against money isn’t great, and this is convincing me to not give any money. If it wasn’t like that I would love supporting them too.

This is unrelated to persistence, but have you considered implementing gamemodes? With how big game worlds are in VRChat, I think it’d be great if creators could decouple gamemodes from worlds and share them with others so they can make their own maps for said gamemode. So for example, instead of one “Murder 4” world with one mansion map, you’d have a “Murder” section and when you open it you’d see a bunch of different maps and instances

Also, how comparable is the new persistence system to Cyan’s PlayerObjectPool? Is there anything we should do right now to prepare to transition to the new system?

This is awesome! Can we apply to get access to Udon 2 / be a beta tester?

1 Like

Will the Unity API available to Udon1 and Udon2 be different in the future?

The Unity API will be the same for the most part at release, there are a few classes exposed in Udon 2 mostly to fix some awkward gaps. We will continue to expose more Unity API functionality after release. The bigger change that you’ll see on release in available APIs is that most APIs under the System assemblies are now usable whereas Udon 1 only allowed a tiny subset of them.

To what extent does it support generics and syntactic sugar?

It has full C# support for generics and syntactic sugar features up to the current version of C# that the Unity editor supports which is C# 9 at the moment.

are some variables that require _Udon also changed?

If you mean VRCGraphics needing the _Udon prefix for identifiers, that is unchanged for the moment. Udon 2 doesn’t change the functionality of existing VRChat APIs.

4 Likes

I’m curious if persistence will be something that automatically happens for every world or will they need to be built with it in mind.

Adding a .cs file to a Unity project is the same as bypassing the Windows warning and forcing the .exe to run, but I am wondering what VRChat think about this issue, especially for exhibition-type events where contents is collected and published, and if it is possible to allow Udon 2 submissions without compromising the security of the organizers.

We considered that originally, calling it “instance persistence”. But in order to apply persistence to an entire world retroactively, it would require changing behavior that they rely on. We decided against that part for now. What we’re shipping now is just “player persistence” which is connected to the player instead. Given that worlds previously had no official way to assign things to specific players, it’s impossible to make that work retroactively. Player objects are an important part of this, building the foundation for that to work. PlayerData is effectively just a premade PlayerObject with a static interface. Since those are both new features, none of this will apply retroactively.

4 Likes

What a loaded dev update.

So glad to see surveys happening! Though i feel they shouldn’t need such personal information; like why does it break up some provinces/states?

Though i do still think more aggressively pushed accessible general multiple choice surveys, without requiring consent form, for basic input from the masses such as periodic updates on the contentment with the platform or recent updates, what features people care about most, so you know what average majority players are thinking.

For the survey i do feel it a bit odd that strategy/turn-based is grouped as one, because for instance turn-based games and realtime strategy are completely reciprocal. I love RTS but i hate turn-based games.

…Rift S is also not on the list despite being one of the most common headsets on steam (also it’s never been called Meta Rift, it’s Oculus Rift and discontinued under the Oculus moniker; it’s never been branded Meta).



Udon 2 is sounding real good. The performance and barrier of entry, but mostly performance is why i haven’t engaged in any world creation up to this point. Having been thoroughly unimpressed with udon, especially with it’s necessity even when not needing any fancy coding, but just for basic functions and so on has not been great. If both barrier of entry and performance can be solved, all my woes about udon will vanish!

Are there any plans for enabling Udon or some other form of sandboxed scripting on avatars? (Disclaimer: haven’t used Udon before as I don’t work on worlds but I do code in C# a lot)
Even doing simple math in code would be so much faster than doing it in animator, and if we could do more, such as handle toggles in code (if we could change a property or invoke an animation only when it is needed we wouldn’t need multiple animator layers, direct blend trees, etc.) I believe it would allow greater room for creativity.
It would need some safety features, such as limiting execution time per frame or have all code be asynchronous and execute in a separate thread with property changes/animations queued up for next frame.

2 Likes

I’m not sure if this is 100% related but with the addition of UDON2, will we have more freedom to interact with the internal structure of vrchat like for example the combat system. Recently I’ve been messing around with it’s capability to make any player rag doll, however I want to be able to control said rag doll, and since clientsim doesn’t have support for that, I’m not sure where this rag doll is actually stored??? But I’m pretty certain it is something that udon cannot access without crashing because if you try to select a players gameobject via ray cast or collision event then UDON immediately sets the variable to null. I wanna be able to throw the rag doll around or add force to it. I’m not sure if UDON2 would enable us to select these things and not set them null immediately.

I’m guessing but I would imagine that sort of access will not appear due simply to UDON2. That said, this is an example of the sort of “perks” I would love to see in place of “more emojis”.

If we look at Resonite (for example) code can access anything in the world (including players). This provides incredible opportunities for creativity and artistic expression. Avatars can even be modified in-game.

Seemingly this type of interaction could be part of an opt-in system. If you don’t agree that’s fine, nobody is obligated much like one doesn’t have to permit access to unapproved URLs.

Also no mods to your local avatar are permanent so if some in-game action bothers you simply don’t join the world anymore.

I always thought that instead of crippling what world creators can do, they should instead have a permission system so players can choose what worlds can do

I’m not sure if this is 100% related but with the addition of UDON2, will we have more freedom to interact with the internal structure of vrchat like for example the combat system.

You’re correct, it’s not really connected to Udon 2. The SDK2 combat system is deprecated, and Udon 2 won’t expand Udon’s access to it.

Ragdolling players is very fun though!!

Yes! Users can delete their own persistent data.

In the in-development version of persistence, there’s a button on your VRChat.com settings page.

We’ll have to look into adding an option for users with an Oculus or Steam account to clear their data, too. Deleting your own data is important for debugging purposes but might to be desirable for certain worlds, so… hmm. I wonder how careful we’ll need to be about it :thinking:

1 Like

Are we able to clear our data per-world or will this button just clear all persistence data tied to our account?

I interpreted your message as implying that it clears all of your world data without granular control over which world’s data gets cleared, which sounds less than ideal.

Is the user going to have any visibility into what exactly is being stored? Or is it literally just a button to clear it?

In either case, seems like it might be a good addition to the content/avatar/texture cache clearing buttons in Settings → Debug in the client.

I don’t think more world favorites should be behind vrc+. It should be something everyone gets. For now I’m using vrcx with my favorites being full, even if it doesn’t get counted like actual favorites.

This topic was probably last developer update. I’m wondering if with the new animator node for swapping audio. Could there possibly be a chance of adding audio to quest? In my opinion it’s the main thing holding avatars back.

Well we can see how interconnected design decisions can be… I assume we can clear data for specific worlds. All or nothing is pretty bad if the data can hang around forever. Which leads us to, must a world be a favorite in order to persist data? Is it cleared when the world is removed from favorites?