Welcome to the Developer Update for October 6th, 2022!
If you’d like to catch up, you can read our previous Developer Update from Sept 29th.
Spookality Launch
We launched Spookality on October 1st, opening up Jam submissions! Read the blog for more info.
In short, you can go to the VRChat Home website, and submit your Spookality avatars and worlds there. Make sure you submit before the deadline!
Live Beta Updates
The Live Beta is nearing a place where we feel okay releasing it to Live! We’ve squashed the biggest bugs, and we’re working on chasing down the smaller ones.
We’re going to aim for pushing the Beta to actual Live next week. Fingers crossed!
Build 1244
Last Friday we released build 1244
, which included a bunch of UI polish and changes!
Live Beta 1244
Client
Since 1243
UI Polish
- Updated radio button background color to match checkbox background color
- Avatar details updated so description no longer overflows
- Improved scrollbar page loading behavior
- Made both Avatars/Worlds page sort options (all sorting options) match the same sorting options we have in the wings
- Reduced transparency of collapse / expand button background
- MSAA option named properly, tooltips fixed, cache text fixed
- Help article embedded links now clickable in VR
- Added hyphen to AA tooltip. Fixed MSAA label overflow
- QM Audio menu: Updated button styling to be more consistent
- Expand sortby field dropdown height to fit number of selections
- Removed a recent change that reduced menu performance
- Fixed article view footer breaking
- Fix QM confirm list dialog not always displaying all items initially
- Updated the appearance of icons in the QM audio section so it is easier to tell that you can click them
- MM Audio menu: Updated size of mic buttons
- Fixed avatar details displaying the previous author
- Enabled rejoining from world detail page, updated tooltip to match
- Set “Wear Avatar” button visual style based on if available for current platform
- Fix incorrect number of maximum favorite friends in the “Add to Favorites” button in Quick Menu
Changes and Improvements
- Greatly improved performance when avatars are hidden by removing unnecessary IK tweening
- Performance improved while using personal mirror and face mirror
- Changed “Clear All” to “Decline All” in friend request notification UI for clarity
Fixes
- Fixed Tracker RenderModel textures Failing to Show
- Fixed a number of causes for unnecessary log spam
New for 1244
Features
-
Added a new “Measure Height” button to the User Real Height setting that will use your headset’s current distance from the playspace floor to measure your height
- When you use this, it is very important to stand up straight as well as to have an accurate room setup floor height when using this feature! It’s available in the QM Gear tab as well as the Main Menu’s new section
- A new section has been added to the Main Menu Settings tab called “Tracking and IK”. It includes:
- User Real Height adjustment, including the new “measure” button
- Metric Units Adjustment - the User Real Height arrow buttons will increment in centimeters instead of inches.
- Legacy Calibration - swaps to the older method of locking your avatar in place during calibration
- Disable Shoulder Tracking - prevents arm (elbow) trackers from affecting the shoulders
- Freeze Tracking on Disconnect - when a tracker disconnects it continues to lock the tracked body to its final location relative to the player, rather than transitioning that part to untracked behavior. We’ve made new efforts to ensure that even if you activate this option after the tracker has disconnected it will still remember and use the proper final location of the tracker
- IK Debug Logging - adds extra log output related to IK features.
- Note: the command line arguments associated with the above features are being removed! To use the features going forward you must activate them in the menu
-
Added more double-click functions to the Quick Menu tabs!
- If you didn’t know, double-clicking the tabs has different functionality, letting you quickly access the most common functions of Quick Menu tabs. For example, double-clicking the Camera tab summons the Camera and double-clicking the audio tab toggles Earmuffs on and off. These have been in for a while!
- We added some more:
- Double-click Launchpad QM (Quick Menu) tab → Opens MM (Main Menu) Launchpad tab
- Double-click Notifications QM tab → Opens MM Notifications tab
- Double-click Here QM tab → Opens MM Instance Details page
- Double-click Settings QM tab → Opens MM Settings tab
Changes and Improvements
-
Clicking Show Avatar or Hide Avatar on a user is now stored locally instead of on the server. These are known as “player moderations”.
- This has a few consequences:
- If you clear your local VRChat profile data, it deletes all of your Show and Hide Avatar player moderations.
- Show and Hide Avatar player moderations will not sync between devices.
- On PC, these player moderations are stored with other PlayerPrefs in the registry, under the key
HKCU\Software\VRChat\VRChat\LocalPlayerMods_userId_randomhex
. - See this page for Unity’s documentation on PlayerPref storage locations: https://docs.unity3d.com/2019.4/Documentation/ScriptReference/PlayerPrefs.html
- A patch to Live VRChat will be issued soon to implement this change there as well, probably next week.
- This change may be temporary. Eventually, we want to try to move back to server storage, but depending on scale this may not be feasible.
- This has a few consequences:
Fixes
- Fixed smooth camera trailing behind players when in station
Build 1245
Then, yesterday, we released build 1245
! This included even more bugfixes, as well as some new changes. There’s also a few new features hidden away:
Live Beta 1245
Client
Improvements
- You can now swap between world and user search with a toggle on the search keyboard
- In the Main Menu, double-clicking “Social”, “Worlds”, or “Search” tabs will quickly open the search keyboard
- Camera drone now works with controllers and on Steam Deck
- Menu backgrounds are now displayed in a grid with preview thumbnails
Fixes
- Fix legacy calibration breaking on avatar reset, which was causing lots of people to get stuck
- Unfriending and friending users will no longer break favorites, round 2
- Menu doesn’t scramble itself like morning eggs anymore when you click around too fast, round 2
- Logging in on Quest while wearing a PC-only avatar no longer breaks
- Fix “config file” camera resolution having width and height switched
- Fixed “Force Mic Off” instance moderation action behaving incorrectly
- “Third person Rotation” checkbox no longer shows above the main menu canvas when scrolled off-screen
-
vrchat://
links without the shortname are working again- This fixes the VRCQuickLauncher working with unlocked instance links
- Camera nameplates now show correctly behind and in front of other nameplates
Changes
- Remove Tracking and IK settings from Comfort and Safety page in MM (they have their own category now)
SDK
Features
The following feature already works in the Beta client, and will also work in-editor once we release an SDK update.
- Added 3 shader globals that can be accessed by any avatar or world shader:
-
float _VRChatCameraMode
:-
0
- Rendering normally -
1
- Rendering in VR handheld camera -
2
- Rendering in Desktop handheld camera -
3
- Rendering for a screenshot
-
-
float _VRChatMirrorMode
:-
0
- Rendering normally, not in a mirror -
1
- Rendering in a mirror viewed in VR -
2
- Rendering in a mirror viewed in desktop mode
-
-
float3 _VRChatMirrorCameraPos
- World space position of mirror camera (eye independent, “centered” in VR)
-
Show / Hide Avatar Player Moderation Storage
One of the changes we made was storing Show and Hide Avatar player moderations locally. We discussed that change here. Please read there for more info!!
Initially, we planned on using the Unity PlayerPrefs system to store this data, but as it turns out that system doesn’t work too well with large blobs of data.
Instead, we are going to move the storage of these player moderations on PC to a file stored in AppData, similar to where the output log and config files are stored. It isn’t final, but we’ll be storing them in a new file in the folder %UserProfile%\AppData\LocalLow\VRChat\VRChat\Settings\{user_id}\
.
We aren’t going to enable Steam Cloud sync yet. We aren’t currently set up for it, so adding in that capability is out of scope for this task. It also doesn’t affect our Meta Quest users (Meta has their own independent systm for this). But, it does sound like a good idea to do eventually.
When we release this change, we will have to communicate it clearly. This change will affect Quest users more than PC users, as Quest users use “Show Avatar” very often so they can see Very Poor avatars. In addition, when you uninstall the VRChat application on Quest, it deletes all of the application’s data, so uninstalling and reinstalling VRChat on Quest will now also reset the “Show Avatar” moderations.
We realize this isn’t an ideal solution, but due to various factors, it is something we need to solve.
New Development
VRCat’s Variety Box
In a previous Developer Update, we talked about how we were looking into something called a “World Launchpad” to help improve the above-the-fold world listing. Since then, we’ve come up with a better idea we think you’ll like:
We gave VRCat a bunch of crates of worlds, and they went diggin’.
VRCat’s Variety Box is the new “above the fold” page for the Worlds tab. Aside from an opportunity to put VRCat in even more places in the menu, this new landing page gives a single spot to a variety of categories. When you load this page, one random world matching that category will appear in the menu. If you want to shuffle up what you’re seeing, you can click the “shuffle” button in the top right to see a new set of worlds!
Here’s what it looks like:
On each thumbnail, when you hover over the icon there’s a Favorite button (the star) and a “Join Public” button, that’ll put you right into the world! (I didn’t demonstrate the favorite button here because there’s a little bug that got fixed after I made the video but its good now don’t worry)
You’ll see the Variety Box get added into the Main Menu before it launches to Live.
In addition to the Variety Box, we’re also continuing investigations into improving our trending algorithm. No updates on that yet, but the Variety Box should be arriving in an upcoming Live Beta update.
VRChat Groups
We’ve been working on Groups for a long time internally, and we’re finally getting to the point where we’re preparing for the first iterative release.
We don’t have too much to talk about just yet. We’ll have another dev video out for you when we get closer to launch.
BuuuuuuUUuuut… maybe I can sneak a little bit out to you. Just a peek.
If you’re unfamiliar, VRChat Groups are a system designed to allow VRChat users to self-organize into groups of people that can be organized in various ways. Groups will have various content and social features meant to allow all kinds of activities and organization. Think like a clan, guild, channel, server, that kind of thing.
We know a lot of people have been waiting a very long time for groups. Including me. That’s my Canny post, from a bit before I worked at VRChat.
Let’s get one very important bit out of the way:
These videos do not represent final products. All contents herein are subject to change. Do not take anything shown or told here as written in stone and incapable of change, nor should you consider them the shipped Group product.
Okay, a bunch of coverin’-my-butt out of the way. First off, a peek at what swapping between the Group you’re “representing” looks like.
There’s quite a lot of info packed into this video! Let’s get some of the more obvious stuff out of the way:
The left side of the video is one person, the right side is another. They’re looking at each other’s nameplates, so you can see all the action.
Speaking on which, you can see that “WonkyCakes” (their view is on the left, nameplate visible on the right) is in a Group! The group graphic (name pending) appears above the nameplate as a “banner” display. This method of display isn’t final, but we really like it. What do you think?
The video starts out showing the “Show Group on Nameplate” function. This is an option you choose for your own nameplate as it displays to others. In other words, if you don’t want to show off any groups that you’re a member of, you can choose to do so. You can see Wonky turn off the banner, and appear in the right side view.
Then, we go into the Main Menu. Wonky clicks on the Group tab, quickly revealing a whole bunch of unthemed programmer art. Then, they click on “FantasticGroup”, one of three groups they’re a member of (btw you can be in multiple groups), and shows that you can click the “show in nameplate” button in the top right. You can see this choice reflect in the right side view. They swap to “Cool Green Group” and do the same thing.
There’s a few other details in that video, but I’ll let you pick those out yourself.
Not done yet, though! Let’s drop a portal to a Group Instance.
This video starts off in an instance of Treehouse in the Shade, and we want to open a new Group instance! Clicking on New Instance brings up the familiar “Create New Instance” window, but now with a new instance type-- Group Instance! In these instances, only members of a given group with the specified roles may join that instance.
Roles are probably really familiar to anyone that’s used Discord or an ACL system before. Any member of a Group may have multiple Roles. These roles have Permissions which define their capabilities. Again, super familiar. If it ain’t broke… ¯\_(ツ)_/¯
At first, we have the Straw Hat Pirates group selected. But, we want to make a Group Instance for a different group we’re in. So, we click on the group name, and click on the group we’d like to work with instead, which is apparently one my cat made when they sat on the keyboard: “WWWWWWWWWWWWWWetc etc etc”
After we select the group, we then swap to a list of roles! These were also defined by my cat sitting on my keyboard, but in an incredible, one-in-a-universe-lifetime coincidence, she actually managed to type something out.
We select a bunch of roles, click NEXT, and we’re in back at the last screen. We can choose which reigon we’d like to use, and optionally we can set this as our “Group Instance Default”. This is a local setting that says “I’d like to save this specific role setup for this group please” and the UI says “okay cool” and does that.
After we click Create Instance, we’re pushed back into the standard instance creation flow! Importantly, you can drop a locked Group Instance portal, which means you can drop one of these in a crowded Public and only your group members (with the appropriate roles) may join.
So, we drop the portal, and you can see the text above the portal indicating that this is a Group Instance portal. It also calls out which group the portal is for-- remember, because you can be in multiple groups!
I realize I’m kinda doing a drive-by here, and I know you’re going to have a bajillion questions. Please wait! We will EVENTUALLY answer them all, but many you might have today we’re not quite ready to answer. So, if you start asking for nitty-gritty details, I’ll just go “eehhhhhhhhhh who knowwwwssss spoooookyyyyy” and shrug at you.
For now, feel free to dig into these videos.
Conclusion
That’s all for this week’s Dev Update! Big things to look out for in the next week are more Spookality stuff (including the first round of content showing up in the Spookality Hub) as well as the Beta releasing to Live!
See you on October 13th! Dang, off by one day, we could’ve had another Friday the 13th in October. Oh well.