Developer Update - 6 October 2022

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

  • :warning: Clicking Show Avatar or Hide Avatar on a user is now stored locally instead of on the server. :warning: 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.

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:

:warning:These videos do not represent final products. :warning: 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.

33 Likes

The friend group idea is interesting and will assist many communities, such as game worlds, Role Players, ect. Glad it’s finally being looked into. One of those features that was “Wish you had” but never thought of it till it was mentioned.

1 Like

with groups will people be able steal like my group name and copy it or is once name taken cant use it anymore?

15 Likes

Hey Tupper, in your twitter last week you were hinting something about “system to quickly set up something to switch materals, toggle props etc”, so people won’t have to set up new layer and animations every time you want to turn a hat or a sword on/off, and i believe some info on that was suppose to be on this week dev update.
Any news on that part? <_<

I don’t have a bajillion questions, only one:

If a new-ish player joins a Group before having any Friends in that Group, can they browse existing “group instances” of that Group, and join them to meet the members of that Group for the first time?

1 Like

Hmmm, wondering how it would look if the banner imagery were used as the backdrop of the nameplate instead of the method used in the video.

Hopefully there won’t be a cap for this or at the very least a high cap. ^^;

“Represent group in nameplate” might be better wording tbh here~

This is also very nice, but thoughts on Group+ Instances as well? Only Group members and only friends of group members may join.

6 Likes

I like the variety box but im still hoping for a rework of the trending page which removes old content, you know, a real trending page

Is it possible to shrink the page slightly to remove the scrollbar?

2 Likes

I hope that you will be able to define people as moderators in the group with the power to kick people out of group instances.

I also hope you will allow friends plus group instances that are also available to people outside of the group, with the understanding that there will be people with the power to kick you.

5 Likes

I would like to see multi-group instances, sometimes multiple groups meet together either to just play together, compete, or whatever else. So would be nice to be able to create instance that can be joined by multiple selected groups.

3 Likes

Didn’t have enough time to prepare information on that, but it’s coming! I’ll try to get it in next week.

1 Like

I was on the edge of my seat until I read that, one last piece in the puzzle, I am eager to see you implement the trending algo change.
The variety box thing is interesting too, it seems like it takes a random one from the top X of worlds in each box’s category, which gives people a better slice of what is available than the old Row system did. It also makes sure that even if you are top on a category you wont get even more exposure.

Great direction so far!

I would like to know this as well

Any chance of having Group Home-worlds? Like a guild HQ everyone in the group goes back to or starts off from together! No invites required, just press Go Home!

6 Likes

indeed that’s pretty interesting the groups.

1 Like

My only question/feedback regarding the information presented here would be to not only +1 @Salbug 's suggestion of Group+ instances, but allow multiple groups to be selected for an instance.

(off the top of my head, I know a lot of roleplay groups who usually handle strictly gating people based on google forms/discord waivers also can sometimes cross-mingle with other groups for events, and I think it would probably be wasteful to set up creating a group just for an event like that)

3 Likes

+1 for this. A friend group I’m in shares a special launch link in the launch options so we can all join the same instance whenever we boot up the app. Cutting that part out and being able to set that up directly in-app would be great.

2 Likes

I hope you have good moderation and will take down groups if they are impersonating others.
That is honestly my only concern about this, everything else seems like an amazing idea!

Fan clubs are fine, but things can get pretty troublesome if a group that isn’t official is claiming they are!

My god I never knew I needed something this bad

1 Like

I support the “Cool Green Group”!

Groups look really promising. I like the little flyleaf above the name plate too. I’ll echo what Salbug said. Would love to see a compact version were instead of the flyleaf it just changes the background of the nameplate to your selected group.

VRCats Variety box looks like it will be fun for world hopping. Choose a theme hit shuffle and whatever the world is, is what you go to. Takes a bit of the indecisiveness out of the equation.

Any news on the missing avatar, ui and pickup haptics while using an oculus headset through steamvr? That’s a pretty big bug to push to live and makes stuff like putt putt feel awful to play.