Welcome to the Developer Update for September 29th, 2022!
If you’d like to catch up, you can read our previous Developer Update from Sept 22nd.
Recent Downtime
We had some downtime recently with very poor timing!
What Happened?
On the Friday the 23rd, at ~6PM PT, one of the companies that provides a service to us (an “upstream provider”) performed some momentary maintenance at an inopportune time. During this maintenance, the provider also inexplicably down-scaled the servers they use for us. The new machines had less than half the capacity of the original machines. This down-scaling was unexpected and had not been requested.
Due to this down-scaling and the poor timing of the maintenance, several VRChat services that rely on this upstream provider began failing. The upstream provider’s downgraded servers buckled and broke under the load of a typical Fall VRChat weekend during NA peak hours. A short set of dominoes falling later, and VRChat login was down.
We immediately noticed the down-scaled servers and requested a move back to our original infrastructure. Due to various factors, this would take some time, and in fact the service being overloaded made it even harder to migrate back to the original machines.
In the meantime, the VRChat DevOps team moved quickly to mitigate issues and reduce load until the problem passed. Several endpoints had to be turned off to reduce load. Due to a series of bugs, this also resulted in the aforementioned logins failing. (These bugs are being addressed in upcoming patches!)
Eventually, services came back online as we were able to get our service migrated back to the original machines.
However, we weren’t through everything! The next day, complications resulting from the previous downtime “boiled up” and caused even more downtime – again, during peak hours.
These eventually got resolved too, but the downtime did “chop off” our usual weekly peak. Not fun for anyone involved!
What are we doing about it?
A few things!
- We’re changing infrastructure so it is less likely that we’ll be affected by this particular upstream provider’s issues
- We’re shifting internal infrastructure so that it is more durable against “domino effects” from the death of other services
- We are making some changes to the VRChat client to reduce the load that we endure when we are trying to come back up from downtime
We hope that these changes and improvements prevent this particular type of downtime from occuring again. We’ll see! woo live services wooooo our devops team rules and i love them nobody tell them tho im shy
Spookality 2022
Spookality is starting up soon! We recently made a tweet announcing that the Spookality Jam will begin on October 1st, and close on the 21st. We’ll have a blog post out at launch with more details.
Keep an eye on our Twitter account for more details as they release.
However, let’s talk about something new! We’re going to use a new Jam Submission System we’ve been working on to make it easier to submit your projects to Spookality and other future jams.
Here’s how it looks right now!
tl;dr: You’ll create content for VRChat Jams and submit them using a new section on the VRChat website, submitting the IDs directly. No more Google Forms! yayyyyyyyyyyy
More info on this system later!
Live Beta Updates
Last Friday, we released an update to the Live Beta! 1243
went live with a bunch of changes.
Live Beta Build 1243
Client
Since build 1241
Improvements
- The Color Filter rainbow is more consistently visible when you want it and not visible when you don’t want it, in various different situations
- Mirror Resolution no longer changes unlimited back to full between sessions
Changes
- Open Logs Folder button was removed from all settings pages, and is now a different button in Main Menu/Settings/Debug
- VRChat’s Color Filter is not supported on Quest, users should utilize the built-in Meta Quest visual adjustment settings instead
- Access the Meta Quest’s color correction by going to Settings in the Meta Quest system menu, selecting Accessibility, and turning on Color Correction. You can set filters and adjust filter intensity to customize how colors are shown
Fixes
- Fixed logging spam
- Fixed avatars showing up at world origin when previewing in menu
- Fixed an issue causing “Join Me” or “blue” status to not auto-accept invites
- Sort order and category choices in wings is now saved properly
- Fixed issues causing random slider changes, let us know if you encounter this again!
New in build 1242
Improvements
- Fixed many issues with avatar haptics, improved stability, and improved avatar hand rig compatibility
- Avatar Haptics is not supported on standalone Quest because it causes significant performance issues related to the render pipeline and how the Quest GPU operates, we are re-assessing how we might best enable this feature on Quest standalone
- Added in many log entries for when settings change to help out with Support issues
Changes
- A WHOLE BUNCH of options, buttons, settings, and toggles have been either moved or duplicated into the Main Menu from the Quick Menu!
- MOVED:
- Fallback Icon: removed from Quick Menu settings, now in Main Menu/Settings/User Interface/Nameplates
- Tooltips: removed from Quick Menu settings, now in Main Menu/Settings/User Interface/General
- UI Haptics: removed from Quick Menu settings, now in Main Menu/Settings/User Interface/General Settings and also Menu/Settings/Accessibility/Haptics
- Avatar Touch Haptics: removed from Quick Menu settings, now in Main Menu/Settings/Accessibility/Haptics
- Slider Snapping: removed from Quick Menu settings, now in Main Menu/Settings/User Interface/General
- Gesture Icons: removed from Quick Menu settings, now in Main Menu/Settings/User Interface/HUD
- Home Instance Type: removed from Quick Menu settings, now in Main Menu/Settings/Comfort & Safety/Safety
- Auto Disable Cloning: removed from Quick Menu settings, now in Main Menu/Settings/Comfort & Safety/Safety
- Portal Prompt: removed from Quick Menu settings, now in Main Menu/Settings/Comfort & Safety/Safety
- Portal Mode: removed from Quick Menu settings, now in Main Menu/Settings/Comfort & Safety/Safety
- Clipping plane distance: removed from Quick Menu settings, now in Main Menu/Settings/Performance/Advanced Graphics Settings
- Particle Limiter: removed from Quick Menu settings, now in Main Menu/Settings/Performance/Advanced Graphics Settings
- Mirror Resolution: removed from Quick Menu settings, now in Main Menu/Settings/Performance/Advanced Graphics Settings
- Clear Local Profile Data: removed from Main Menu/Settings/Performance, now in Main Menu/Settings/Debug
- DUPLICATED:
- Responsive Menu: Still exists in Quick menu, additionally added to Main Menu/Settings/User Interface/General and Menu/Settings/Accessibility/Comfort
- Chatbox settings: Still exists in Quick menu, additionally added to Main Menu/Settings/Accessibility
- Display & Visual Adjustments: Still exists in Quick menu, additionally added to Main Menu/Settings/Accessibility
We haven’t updated this week so far, but we might have something for tomorrow!!
Ongoing Development
Downtime Mitigation Client Changes
Last weekend we had a LOT of downtime. We talked about that above!
This week, we also spent a lot of time on changes that will make the VRChat client behave a bit better during downtime, and be nicer to our servers when they’re trying to come back after downtime. Right now, the VRChat application is a little impatient, and as a result we have to be careful in how we turn things “back on” after downtime. These changes make that easier!
Most of these fixes and changes are invisible to users, but there is one that’ll be noticable and we can talk about:
Show and Hide Avatar
“Show Avatar” and “Hide Avatar” are those buttons you hit to override the Safety settings for users. These buttons send what we call a “player moderation” – a relational setting one user has set on another. Things like blocks, mutes, avatar-showing. When you send those, we save that setting on the servers.
Here’s the (vastly oversimplified) problem: We have a lot of player moderations. Internally we’ve done and are continue to do work to make them more efficient to work with. However, due to the sheer number of player moderations, we’re have to make a change to help reduce the load.
In an upcoming update to both Live and the Beta, “Show Avatar” and “Hide Avatar” player moderations will be saved locally instead of saved on the server. This seemingly minor change will save us a BUNCH of headaches in the long run.
When the update rolls out, we’ll migrate your saved stuff on the server to local storage. After a short period of time (about a week), this migration system will be turned off, and the player moderations stored on the server will be deleted.
This has two consequences that players should be aware of:
- Show and Hide Avatar player moderations will not transfer between devices, and can be cleared if you delete all VRChat local data
- If you log on after the migration period has ended, your Show/Hide Avatar player moderations have already been deleted on the server. As such, there will be no Server → Local transfer, and you will not have any Show or Hide Avatar player moderations
As a final side-note, “Block Avatar by ID” / “Block Avatar Globally” is not the same thing as Show/Hide Avatar. Those are still being stored on the server.
We’ll keep you up to date and inform users on a wider scale once this update goes live! If Beta is still a thing when it goes out, we’ll update both Live and the Beta simultaneously.
Even More IK Improvements
We’ve got some more improvements on the way for IK – in particular, for those funny --launch-option-only
features!
We’ve added a Tracking & IK section to the Main Menu in the Comfort and Safety section. Most of the IK-related launch options can now be toggled via the menu. So far we have:
- Legacy Calibration
- Disable Shoulder Tracking
- Freeze Tracking on Disconnect
- IK Debug Logging
That’s not all! There will be more options coming to this section in the future. Wrist and knee rotation offsets will probably be next up.
We’ve also added some more options and improved the User Real Height setting!
You can now swap to Metric for height adjustment! Using this option, the arrows will increment by centimeters instead of inches.
Additionally, User Real Height has a fancy new “Measure” button. Using this button will measure your height by using the distance between your HMD and the floor of your playspace. Make sure you’re standing up and looking straight ahead when you use it! The measure button is available in both the Quick Menu and the Main Menu.
Managing Favorites on the Website
If you’ve got a VRChat account, you can now manage your Favorite Avatars and Worlds on the VRChat Home website!
You can move worlds and avatars between groups, rename groups, remove favorites, or add worlds as favorites! Get started by clicking the “Edit” button in the top right.
You can also rename the favorite groups! This works for both Avatars and Worlds, although the name only reflects in client for the Worlds section right now.
When you look at one of your favorite lists, here’s what you’ll see:
Clicking Edit in the top right puts you into Edit mode!
You can also add worlds to your playlists from the world page!
Avatars work in a very similar way! You can move around avatars between groups, rename the groups, or remove avatars from favorite groups with ease.
Give it a shot over on the VRChat Home website!
New Main Menu UI Polish
A lot of what we worked on this week was a ton of miscellaneous Main Menu UI and UX polish. More than any of the other Live Beta updates so far!
We don’t have a lot of visuals for these changes yet, but they should be coming into the Live Beta soon.
We also fixed this super-important most-impactful-bug-of-all-time, thank goodness. Good catch, Table. We never would lived it down.
Avatar Menu Preview
While working on the Avatar Menu in the Live Beta, one of our engineers noticed that a particular frog in a particular car did some funny stuff when shown in the main menu “turntable” preview:
So, we fixed it up with the power of math. Oversized avatars no longer break the preview!
Well, I say that, but there’s almost certainly some weird and crazy avatar out there that’ll break it, probably…
Hide Avatar by Distance Performance Improvement
Hide Avatar by Distance is getting a performance improvement! We dug in and found a way to improve it even more without any impact to animator state.
These optimizations are best described with our (somewhat hamfisted) test method: in a capped (80/80) instance, the old version would only save you about 5-10 frames with most of the avatar in the instance hidden.
In the new version? We saw improvements of 20-30 frames, depending on your settings and your specs. Potentially a big deal if you use that system often!
This change will make it into an upcoming Live Beta.
Smooth First Person Camera Improvements
Did you know that, in the Camera tab, you can smooth the motion of your “point of view” as shown on your desktop? This is super useful for streaming, so you don’t make your viewers sick from the jitter when you’re streaming from your viewpoint.
Previously, this mode wasn’t too useful in stations – especially fast moving ones. It’d lag behind by a frame, resulting in rather violent and counterintuitively nauseating jitter.
That’s NO GOOD, so we fixed it.
This’ll be in an upcoming Live Beta update!
Toxicity and Toxic Behavior in VRChat
So! Hard topic switch.
We get a lot of feedback from many different people saying that parts of VRChat can be quite toxic – Public instances in particular. Toxic language and behavior is a big contributor to bad experiences in VRChat. It drives off new VRChat players trying things out, and pushes experienced users out of spaces they’d like to participate in, find new friends in, etc.
Even though we’ve observed a drop in reported and observed toxic behavior since the middle of the summer, the problem isn’t gone. We still want to do things to help make VRChat a safe and fun place for everyone, and do our best to curb toxicity overall.
Let’s talk about it.
Toxicity is a difficult problem to solve! It is a rampant issue in ANY online community. If you can name an online platform or game, there’s toxicity somewhere in varying amounts. However, despite the difficulty of the problem, we’ve got some ideas.
For example, we believe that Groups will help reduce the “surface area” of toxicity by a large amount. Groups allows users to self-organize and self-moderate in various ways. The Groups system, which has been in design and development for quite some time, has features that we believe will help community leaders and community members create spaces that are ideal for new and experienced users to go and find like-minded friends.
On top of that, improving VRChat onboarding (the “introduction” experience for new users) will also help, as we can help direct people to experiences and worlds more relevant to their expressed goals and interests in VRChat. We’re also looking into improving our self-moderation systems so that they’re taught to new users more quickly.
However, we don’t think those are the only solutions. Public instances are a discovery melting pot in many ways. We all have stories of going to public instances and finding a new friend or an amazing experience, and we want to preserve that.
With all that in mind, we’re looking into ways to reduce toxicity and harassment on our platform at scale. Some of these methods are pretty big things, so we want to talk to you about them first.
Over the next few months of Dev Updates, we’ll ocassionally bring this topic up and see what kind of discussion results. For now, we just wanted to get your thoughts going.
Conclusion
That’s all for this week! The next Dev Update is due out on October 6th. Don’t forget to keep an eye on our Twitter for Spookality updates!
byyyyeeeeeeeeeeeee