Developer Update - 26 October 2023

Welcome to the Developer Update for 26 October 2023!

Today’s Dev Update thumbnail contains even more incredible avatars and a world that were submitted to Spookality 2023! Hop on VRChat now to check them out!

If you’d like to catch up, you can read our previous Developer Update from 12 October.

Important Info / Announcements

VRChat 2023.4.1 and Unity 2022 is OUT!

We’ve just released Unity VRChat 2023.4.1, the first version of VRChat running on Unity 2022!

If you want to learn more, we’ve got a patchnote video for ya.

We’ve said it a bunch of times, and we’ll keep saying it – don’t upgrade your projects yet.

Preparing for this release kinda dominated our last two weeks, hence the short Dev Update.

We’ll have a SDK update in the coming weeks. Thanks to the VRChat Creator Companion, the upgrade process should be a lot smoother. You’re using VCC, right???

Spookality 2023!

Spookality is upon us!

Hop on VRChat and check out the Spookality world categories. We’ve got two: one category for SCARY stuff, and one more for themed spots for hanging out, chilling out, that kinda deal.

For the avatars, head on over to the VRChat Home to find a whole new section of the world dedicated to the event!

A Note from Release Team: What happened with 2023.3.3?

As you might have noticed, the recent 2023.3.3 release of the VRChat client (the “world preloading, content gating and performance” release) was not the smoothest we’ve ever had, even needing to be reverted shortly after its initial launch! :disappointed_relieved:

We want to provide a bit of a post-mortem on what made it so tricky to ship, and what caused some people to experience the issues they did.

First of all, an apology for everyone who was unable to play or had major issues during the time some of these builds were out in public! It’s important to note that we will never be able to ship a “bug-free” version of VRChat – that concept simply does not exist in the land of software development. Our goal is to minimize the amount of bugs and their impact, and to make sure the client will always be in a state where it can be played and enjoyed by everyone in our audience.

Details of what happened

The general timeline goes as follows:

  • 2023-10-04: 2023.3.3 ships to live on all platforms, having been on open-beta for a while prior
  • 2023-10-06: Live channel is reverted back to 2023.3.2p2, due to several major issues being discovered on 2023.3.3
  • 2023-10-16: 2023.3.3p1 ships to live, as the second attempt at bringing 2023.3.3 to live
  • 2023-10-20: 2023.3.3p2 ships to live, as followup patch addressing some issues on p1
  • 2023-10-24: 2023.3.3p3 ships to live finalizing our current plans for the 2023.3.3 cycle

There were 4 bugs that we classified as major enough to warrant a revert:

  • Sometimes seeing other players frozen in place, while voice still worked (this was known as the “Frozen Avatar Issue” once under investigation)
  • Being unable to log in under certain network conditions
  • Crashing upon leaving an instance
  • Quest users experiencing out-of-memory issues way more frequently

What caused these, and why did the revert not fix all of them?

The first two issues were caused by an internal change to our network format. Since reverting this fully would have had other implications, we decided on making new builds based on the previous live version (2023.3.2p1) and named them 2023.3.2p2. This also allowed us to keep compatibility with the newly released SDK that changed the way Udon programs are encoded.

Unfortunately, since some of the issues were caused by that specific change to networking, they persisted through to the reverted p2 builds.

The memory-usage was caused by some changes to how we make builds, and not the actual code itself (I have to be a bit handwavy here, forgive me). This meant that since we needed to generate new builds for 2023.3.2p2 to include the necessary backports, the issue also made it into the revert.

As a side-note, all of this wasn’t helped by the fact we were basically maintaining 2 different client versions at this point, with the beta being on Unity 2022 and live still on Unity 2019.

How did these bugs slip through, and how will we prevent this in the future?

There are a few reasons, and they all combined to create the perfect storm in this case. They are listed below, together with steps we will be (or are already) taking to mitigate such issues in the future.

Statistics

The first 3 issues from the list above were very rare, or only happened in certain unlikely network conditions. This meant, strictly through statistical unlikeliness, none of our testing team was able to reproduce them initially. But given the scale of our playerbase, even unlikely issues can affect many players in absolute numbers.

=> Our team is constantly expanding testing capabilities, both manual and automated, reducing the chance of such issues slipping through the cracks.

Prioritization

The “Frozen Avatar Issue” and the crashing one were known ahead of time (via our feedback boards). Given we were unable to reproduce them ourselves, and the initial observation made them look like local issues (e.g. bad network setups), they were prioritized lower than they should have been.

=> Going forward, even unlikely issues reported on a beta will be given a more thorough examination, especially if their impact could be as high as in these cases.

Unclear Data

The memory usage issue only occured on Meta Quest devices, which see very little adoption in our open-beta programs (thank you to everyone who does test betas on Quest!). Memory issues had been noted before internally, but the amount and quality of data didn’t lead us to conclusive evidence that there was a tangible problem.

=> Over the last couple months we’ve already been working on greatly expanding our automated testing and data collection systems. Starting from 2023.3.3p1 we have made the call to ensure anything reaching Live will go through a rigorous memory and performance test first.

Timelines and a note on the difficulty of fixing bugs

Some of these bugs truly played buzzword-bingo with our engineering team – from race conditions to use-after-free, requiring native debugging and memory minidumps. It was quite the ordeal! Specific test plans also needed to be constructed by our QA team to verify that a fix worked (or didn’t).

The crashing issue for example turned out to be a race condition triggering a bug deep inside the Unity engine. This bug actually existed the whole time, but was incredibly unlikely to happen. However, we optimized world loading speed so much in 2023.3.3 that it suddenly started happening enough to be a problem.

Having bugs that require this much time and effort to fix is brutal for managing timelines. Other teams have certain expectations on when their cool new feature or change will make it out to users, and sometimes shipping something a tad broken and fixing it up later is the most efficient way forward. If a bug turns out to be of this caliber however, that plan falls apart.

=> We will try to be stricter in enforcing stability over delaying timelines. This is not an easy task, even if it may sound like it on first glance. Delaying releases can have a cascading effect on planning future releases, and thus new features and changes that you have been waiting for.

Some final words

We are still in the process of fixing up some smaller issues with 2023.3.3p3, but it is stable enough that we can now defer such changes to upcoming releases (like 2023.4.1, which just shipped!).

All of this isn’t a guarantee that we will never ship something broken to live again. As nice as that would be, making such a promise would be lying no matter how you spin it. Rather, it is to ensure you that we are aware of such issues, and constantly working on improving our strategy. And maybe serve as a soft reminder that we are all just human. Okay the furries might disagree here, and the robot people, and… right, everyone can be what they want, but you get the point.

Ongoing Development

As noted above, most of our efforts over the past two weeks were spent on the Unity 2022 upgrade!

Other projects, including (but not limited to) Creator Economy, VRChat on Android Mobile, Imposters, and many others are continuing onwards. Expect more news on them soon!

Conclusion

That’s it for this Dev Update!

Our next update is scheduled for November 9th, 2023. See you then!

10 Likes

Hopefully. The VCC has generally been an amazing piece of software and I think a major upgrade for creators.

Though, I believe it was SDK 3.4.0 and the correlated VCC update that intentionally broke the Udon# template because clientsim and other packages were missing, and it was now integrated into the World template + SDK.

This was a nice change, but I am curious how many existing projects broke because of that, but I haven’t seen an issue. I am also still worried about how the faux-semver will affect things going forward.

Thank you for elaborating. It’s nice to see the organized understanding of the problem. I think it emphasizes VRC’s ability to at least internally log and track complex problems, which is very important.

I will say… I wish this was applied to more features, and I wish we had optional, experimental features, even if it’s locked behind a beta branch. Though I understand this can be difficult without a proper team size and internal structures in place.

Thanks for the update! :smiling_face:

3 Likes

Will VCC handle the upgrade process with the new SDK in a fancy and comfy way?

image
The 26th is looking a bit different today

5 Likes

Since I’ve been playing some worlds with a friend lately, I suspect I’ve found something that might cause some of the worlds to run abnormally different and incompatible.

And the differences are not that small and I was planning to test it… However, I was surprised by how quickly the update to version 4.1 was made, and I haven’t had time to understand if it caused a problem.

The difference between Unity 2019 and 2022 seems to be surprisingly different before my eyes…

Quite nice we got new unity. Unity 2022 opens lots of new possibilities for the future devopment n performance , but is there any news over the quest to pc hand tracking “migration” that was announced to be “worked on” in october last year?

It if very good that you’ve solved the “frozen avatar” issue, even though I’ve never personally seen it myself.
But I am, to be honest, much more interested in the issue that sends you to the “Error world” when joining on someone, often followed by the “429 Error: you are traveling too rapidly” message.
I’ve seen quite a lot of people complaining about that in the recent 2-3 weeks.

2 Likes

Indeed maybe in the future is going to change a lot of things or a few a little bit change

(:heart:+Indeed you trying to be promised you doing the hard work to do with your VRChat Teams to fix really slow things around to be focus + you’re right everyone can be what they want I know people are special really good artists or more special they are + okie dokie I will see you next time next week VRChat Teams be healthy try your best your work next week :dizzy:^-^)

((Today is Friday and everyone have a great day :heart: + enjoy this month Halloween :jack_o_lantern:))

Imgur

”play” reeeeeeee! orz

I’m mostly looking forward to the imposters, I do think it should be called something else though. Just some nitpicking nyan.

1 Like

While it is unfortunate that the word’s meaning has been muddied, imposters, as a render concept (I suppose you could call it), are a thing that have been around for quite a while, VRChat is just using imposters in a way that allows for limb movement.

And the word is actually descriptive, you are storing something that looks like the orginal model as various texture and then reconstructing it from that, it is literally, an imposter, a look alike.

3 Likes

I had a friend who had this issue quite often, because their network up traffic has a lot of packet loss for some reason (it’s not uncommon for their movement to be choppy or do lots of short distance teleporting), even though their down speed is really good. It was unsurprising to me that new sensitivities in network changes would affect them in particular. I was like “oh great, now instead of teleporting they just stop entirely”. Didn’t really know how to address the issue because i know they wouldn’t want to share their information.

That is fantastic to hear!!


It’s understandable that things are a bit of a mess trying to juggle new internal systems while also making everything play nice in 2022. I do think there should always be at least a skeleton crew or individual left as a semi-long term custodian for post-launch systems and also features. Reducing that “we did a pass on x feature and won’t really touch it anymore until we feel like revamping it again” trend would go a long way (like what happens with camera UX or IK changes for example) as sometimes large benefits can come from minor tweaks.

Congrats on getting the Unity 2022 release out! :tada:

It’s been a notable performance improvement for me, including bumping me from stable 45 FPS to stable 90 FPS in some situations (due to previously not quite reaching 90 FPS). Plus, ending the Open Beta means half as many combinations for me to test when bug hunting. :sweat_smile:

For Linux folk, VRChat still works, including VR! You may need to use Proton 8.x (not Proton Experimental) to avoid crashing on launching into VR, and you might need to pass --disable-hw-video-decoding in Launch Options to avoid AVPro crashes in desktop and VR.

I’ve been documenting issues on Valve’s Proton issue for VRChat, and I think this is on Valve to fix, not VRChat.

(Also, SteamVR 2.0 is a bit of a mess for some folks on Linux - check Valve’s issue tracker for workarounds. It’s functional enough for me, thankfully.)

Best of wishes to the team for the upcoming features, and hopefully no bugs haunt your holiday this weekend… :ghost:

2 Likes

Ok I don’t really understand it but if that’s the case then it’s fitting. Not sure if I have a better alternative anyway, maybe doppelgänger.

a blog post describing Impostors in unreal if it’s helpful as an example of the concept being used elsewhere Post Page

and here’s a Unity engine example

VRChat’s impostors are not standard impostors at all. They’re weird pre-baked puppets. Very different from realtime billboard LoD’s

fair but they do inherit the pretending to be 3d using Sprite at different angles

Me Coming VRChat 2027

Thanks so much for your help on this! Fix worked straight away!

1 Like

With engine upgrades that carry performance improvements like this, is there ever any thought given to reevaluating performance ranks? Is it known where the performance uplift comes from and where it can be leveraged more, or is that not how it works?

1 Like