Developer Update - 16 August 2022

Hello! Welcome to the latest VRChat developer update for 16 August, 2022.

This week, we’ve moved to two Dev Updates a week, on Tuesday and on Friday. We’ll do this for a few weeks, and eventually drop down to once a week.

Upcoming Releases

This week we plan to release 2022.2.2p3 out to Live. This means that all the features that are in Live Beta right now will be available for everyone!

If you’d like to see what these features are, check out some of our posts from last week. You can also check out the patch notes. It’s been updated with the stuff we released on Friday.

Next up, we have two main focuses in parallel: we’re aiming for more iteration on features, while we also push for 2022.3.1, which includes the Main Menu 2.0 Revamp.

Feature Work

Main Menu 2.0 Revamp

We’ve been working on the new Main Menu revamp for a very long time! You might’ve caught a preview of it in one of our previous dev updates where we showed off the movable main menu:

We’re planning on putting the new Main Menu into Beta very soon! Unless something changes, it should be live-compatible, so you’ll be able to use it while we iterate and improve it during the beta process.

Right now, we’re planning for it to be the main feature in 2022.3.1, which as we noted above, may be coming out as soon as next week. Fingers crossed!

We try to keep big feature releases like this limited to single features to reduce bug reporting strain. So, that update may focus entirely on the new menu. Again, plans in flux, so this might change.

We’ll have some more communications lined up when we release so that we can properly introduce the new UI to everyone.

Not much other info for now, but we thought we’d set you up.

Visual Adjustments

This feature allows some adjustment to how VRChat appears, primarily in color adjustment to ensure individuals with color blindness have some options to help them use our UI and enjoy VRChat.

It also includes the ability to adjust screen brightness, and reduce post-processing bloom intensity (or turn it off). We last talked about this feature here.

This feature is in continued development, and had to return to QA to get some bugs addressed.

Visual Adjustment Feedback

We’ve seen feedback that users would like to have more control over other visual effects in worlds. Our initial pass on this feature is focused almost entirely on improving accessibility.

Adjusting other post-processing effects (or permitting users to remove the stack entirely) impacts worlds and world creators in ways we need to review in-depth.

While it is true that many visual adjustments could be construed as accessibility-focused, some adjustments could be used in ways that make certain creations difficult or impossible to implement. As such, we have to measure the impact of these changes and additions before implementing them – because once we do so, it is difficult or impossible to go back and remove that feature without causing quite a bit of blowback.

In other words: we are taking our time and being careful with the implementation of features like Visual Adjustments to ensure it benefits the most people possible as much as possible, while simultaneously not overly limiting the ability of community creators to make the content they want.

Quick Menu UI Improvements

With all the features we’ve been adding to the Quick Menu, it became apparent that the scrolling and section-collapsing behavior of these sections wasn’t ideal. So, we did some work to improve it!

Here’s a video of our QA team trying to break the Quick Menu. Notice the improved scrollbar and how the menu remembers the previous position when switching tabs. Also, when you fold categories up, you no longer “teleport” across the menu. Nice!

Portal Placement

We’re implementing a way to vastly improve portal dropping! When you drop a portal right now, you blindly drop it in front of you, hoping that the location you’re putting it is valid. No more! Now, you get a nice UI showing you where the portal will be, and if the portal is valid or not.

We’ve shown these graphics off before, but just to catch you up:


Invalid Portal Location


Valid Portal Location Indicator


Portal Drop Preview

This feature had been queued behind other tasks, as we became resource constrained and had to wait to assign someone for implementation.

Some work got done, and now the task has a prototype. It’s waiting for initial testing and iteration.

Even More Personal Mirror Iteration

As we talked about last time, we had to make some trade-offs in how we implemented handling of transparency on avatars in mirrors. We’ve seen the feedback from users in the Live Beta, and we’re still researching the best path forward. Handling transparency in mirrors across the multitudes of user-created shaders is tough, and there hasn’t been an ideal solution we’ve found so far.

Also, the Face Mirror has a new scaling feature! That’s way easier to show off:

Unlimited Mirror Resolution

We got some feedback last time that users want to be able to save the “Unlimited” mirror resolution, instead of having it restart per-session. So, we did that. It saves between sessions.

Initially, we did this because setting your mirror to Unlimited resolution devours system resources, and someone clicking on a bunch of settings might not realize they just completely filled up their VRAM by clicking that button. The setting has a warning, but it can be a challenge to get important, complex information comprehended when someone’s smacking buttons.

We were able to mitigate part of this issue because of another non-user facing task we’re working on, where the user’s settings get sent to the output log. This means, at the very least, VRChat Support agents will be able to see that setting and potentially diagnose issues faster.

Hide Avatar by Distance

This feature is getting some more iteration to address some bugs and issues.

First off, users that you’ve blocked still have their proxies show up when they’re outside the radius. This was fixed.

Also, PhysBones poses would get reset when users left the radius and re-entered. This wasn’t desirable, so we also fixed it.

Finally, our investigation into animators resulted in us deciding that the lowest-risk approach is simply to disable all renderers on the avatars when they’re hidden. Animators still run, so the state of the avatar should be fine once it shows again. This will incur a performance cost, however, especially in cases where an avatar’s animator is poorly made.

Unfortunately, this is a bit of “damned if you do, damned if you don’t” situation, so we decided to err on the side of not breaking avatars for the time being.

For now, animators will continue to run, but renderers will be turned off. Of course, this isn’t a final decision, and we may return back to this later to see if we can come up with a better solution.

All three of these tasks were in QA testing, and some have passed.

Avatar Haptics

We last talked about this feature here, but in short: Avatar Haptics allows you to pat someone on the head, touch them on the arm, or grab their tail, and your controller will respond with some haptic feedback. No avatar setup is required for this.

For a little bit of tech insight, it uses a special rendering pass to detect avatars and depth, and uses that to calculate haptic strength.

One challenge we’re finding is that the Valve Index haptics aren’t giving us great haptic feedback. This is because the input hooks available to us are limited, since we’re still using legacy input. Upgrading our input integration is a very high-impact task (as in, we’d have to change a whole bunch of code) and is therefore out of scope of avatar haptics, but it does put more pressure on us wanting to do the input upgrade sooner rather than later.

For what it is worth, we already really wanted to upgrade our input system anyways, but this is just yet another reason.

This task is getting some engineering and optimization attention, because it uses some techniques that could impact performance.

Chatbox

We’ve gotten a ton of feedback from people using the Chatbox on the Live Beta! We’ve read as much as we can, and we’re still gathering more. There’s a lot of people asking for stuff that we already have on the roadmap (in addition to the bug reports), so let’s catch you up.

If you’re not familiar, the chatbox allows you to send messages in text format to users that are near to you in the same instance. The chatbox appears above your head when you send a message.

The intent behind the Chatbox is to provide an alternate way of communication that is as similar as possible to communicating with voice in VRChat. We want everyone to be able to talk with their friends in VRChat, but we also don’t want to turn VRChat into a “general chat”, text chatroom, or IM service. The chatbox is meant for ephemeral messages that allow people near each other to communicate, but disappear once they’re gone, just like voice.

Keyboard

A lot of people have talked about our keyboard. The new Chatbox feature and Keyboard Paste buttons have put a lot of pressure on it. A lot of people aren’t a fan of our implementation, and we aren’t either. It’s hard to use and slows everything down when it pops up.

We’re planning to redo our keyboard, likely sometime after the new main menu is released.

Currently, we’re in the design and iteration phase. We have a list of internal requirements for a new keyboard, and are figuring out the nuts and bolts of what we want the ideal VR keyboard to look like.

This is a high-priority task, as we’ve got a lot of new features pushing on the keyboard. However, due to its scope, it’ll come a bit later.

Chatbox Sound

We’ve received feedback that folks want a sound to be played when text is sent. We think that’s a good idea. We’ll be doing this and tying it to that user’s voice channel. You can toggle the Chatbox Sound on or off for everyone in the Quick Menu settings.

We’re also going to provide an OSC endpoint for “text finished” so you can play this sound at the appropriate time.

As a final note: muting people (either directly or via the safety menu) hides their chatbox right now, and it’ll also turn off the Chatbox Sound.

Chatbox Options

In total we’ll have these settings that you can adjust (these aren’t final):

  • Chatbox Sound
    • Toggles the sound that plays when someone sends a message
    • On or Off
  • Display Duration
    • Changes the amount of time messages stay above someone’s head
    • 2 seconds to 60 seconds
  • Chatbox Opacity Slider
    • Changes the opacity of the chatbox and related UI
    • 10% to 100%
  • Keyboard Opacity Slider
    • Changes the opacity of the keyboard that appears for chatbox
    • 10% to 100%
  • Chatbox Size Slider
    • Changes the size of the chatbox
    • Small to Large
  • Keyboard Size Slider
    • Changes the size of the keyboard
    • Small to Large

Action Menu and Bindings

Right now, the method you use to pull up the keyboard is the Action Menu. However, there’s been asks for other bindings, such as the traditional “T” key on the keyboard.

However, we need to ensure we’re not going to squash world bindings, because world authors using Udon can bind to any key they’d like. As such, this needs to be easily enabled or disabled from the Action Menu.

We’re also investigating adding VR controller mapping, but we need to ensure we’re not running over other settings.

Chatbox Position

We’ve received some feedback regarding the positioning of the chatbox. By default, we’re going to have it remain in its current position, which typically will be over a user’s head.

We realize that this might not work well with all avatars, so we’re looking into providing a second “middle” option that will move the chatbox up or down the chatter’s avatar to match the viewer’s height. We think this will help out users with shorter avatars.

Chatbox Visibility Range

Right now, chatbox visibility range is the same as user statuses, but we’re thinking it should be about the same as voice settings (like falloff, Earmuffs, etc).

So, we’re going to change it so that the chatbox fades out at the same distance that voice does.

Everyone or Friends by Default

We’ve seen a few requests from users who want the chatbox to be enabled for everyone by default. We understand the thinking here: why not let everyone communicate how they want, without having to jump through hoops?

While generally we’d agree, we think there’s a pretty strong moderation and safety impetus to limit it to Friends-only to start. Users who have your chatbox hidden will be able to see an activity indicator when you type, so it isn’t totally invisible. We’ll watch how people use this feature (and how often users get reported for abusing it) and re-assess this choice moving forward.

With that said, we’ll be keeping an eye on things, and are open to changing this. It’s often hard to gauge stuff like this via a beta. Only about 4-5% of the userbase has used the Live Beta, so it’s a bit difficult to see how people will use it en masse. Additionally, Beta testers consist primarily of very engaged users, so it can be tough to estimate how a new feature will impact newer or more casual users.

Visibility In Mirror

Ever see a shirt in a mirror? It’s backwards! That’s how mirrors work!

…but it’s not necessarily how we want chatboxes in mirrors to work. We’re looking into ways to solve this – likely with the use of a shader.

Filter

The chatbox will have a basic profanity filter that will be on by default.

We know that not all users will want this on, so you’ll be able to turn this off locally.

Chatbox Iteration

Here’s what we’re working on for the Chatbox this week, in rough priority order.

High

  • Fix a bunch of bugs!
  • QM Settings and new options
  • Typing indicator should disappear after 5 seconds
  • If player is muted or has voice blocked via safety, hide indicator
  • The typing indicator should inherit settings from chatbox (opacity, size, etc)

Mid Prio

  • Inherit voice falloff range for chatbox distance
  • Add sound on message send
  • Add binding for keyboard (T?)
  • Make keyboard bindable in VR
  • Implement “middle” chatbox placement

Other Stuff

Here’s some additional items that aren’t exactly ongoing development, but are things we’d like to let you know about.

Beta Feedback Board Changes

We get a LOT of feedback, especially during Beta releases. The volume of this feedback is pretty huge, and we have to be careful about how we organize and handle it so we don’t lose information in the process.

We’ve been working on organizing our Beta Feedback Board a bit better. Over time, you’ll notice that we’ll start implementing “Categories”, where you can mark your feedback or bug report as pertaining to a specific feature (you can always choose ‘uncategorized’). We’re also changing the way that this feedback is processed internally, to help handle the influx of feedback that comes with any Beta.

We’ve also implemented a “Build Number” field, so you no longer have to append the build number to the title of your post.

We’re also looking at ways to help people in increasing the quality of their feedback posts. High-quality feedback and bug reports are much easier to take action on, and reduce the risk of duplicate, non-constructive, or unactionable posts. This is probably the toughest part, but we’ll continue to work on providing ways to make this easier for everyone.

Continued Development

We’ve been very busy over the past few weeks. The pace is quite high, but we’re getting some seriously good work done rather quickly. However, this pace does bring up a few questions and challenges for our continued development efforts.

First off, we don’t want to burn our team too hard. VRChat doesn’t subscribe to the “crunch” culture of development, but there are certainly times where members of our team choose to go all-in. We have a lot of people on the team that are personally and emotionally invested in VRChat – people who were oftentimes hired directly out of the community. For many of us (T: myself included), VRChat is a dream job. However, that passion can easily overflow into working yourself too hard. We must be careful to guard against that enthusiasm turning into anything resembling a requirement, and we continue to be successful in that regard.

Second, despite the majority of these new features being things we already had lined up for eventual release (and as such, already had some good work done on them), there’s a lot of missing polish and standing bugs that come with rapid development. We have been circling back to fix these issues as we moved along, pushing critical ones out as small patches while the Live Beta continues feature iteration. In other words, if I had a 2003-era “Under Construction” GIF to put here and on every feature we’ve been working on, I would.

And finally, something to keep in mind is that the VRChat team isn’t the same size it was a year ago. We’ve doubled in size – which meant we had to do some serious organization! Although we weren’t disorganized before, scaling to our current size meant things needed to change. We had to figure out how to best organize projects internally, set up teams, structure, all that fun management stuff. Then, we had to try things out, and ensure it worked out for us.

We’re through most of those growing pains now, so we have more resources and more people to throw at more projects! Those projects are better organized, which helps us finish tasks more effectively and more efficiently. So now, we can develop more things, more quickly, simultaneously. We finally hit our stride not too long ago, which means we’re now capable of the kind of rapid iteration you’ve been seeing from us.

Of course, we’re not done growing, either. We’re still hiring.

All of that in mind, we feel it is important to tell you that we’ve seen all of your feedback over the past few weeks. We’ve learned lessons that have fundamentally changed our development process and priorities for both the near and far future. Your feedback is extremely important, and we want you to continue to tell us how to make VRChat better for you and the communities that you’re a part of.

We know how important VRChat is to you. VRChat is also extremely important to all of us on the team. We want to keep working with you to make it the best place for anyone and everyone to express themselves, create art, learn new things, share experiences, have fun with friends, and make some new ones.

Conclusion

That’s it for today! Remember, we’re at two updates a week now versus the daily ones from before. Expect the next update on Friday, August 19th.

Thank you!

64 Likes

Last update you mentioned this regarding Avatar Scaling:

"…is not how we want to implement it, because it is a limited method that requires avatar changes to work.

We don’t want to do it the way they did it because we know we can do it better, basically. That sounds kinda smug or something, sorry."

I beg you please, let the users do the scale animations unity on their own, do not lock the avatars’ size to what the developer team decide is the best scale interval.

19 Likes

Updating the quest mb/physbone limit would be nice…

2 Likes

Love what you guys have been doing, especially the desktop camera and personal mirrors. I do have a question if you’re planning to add a stream camera for Desktop users? I have a friend who streams VRChat on desktop and It would be cool if they and many others are able use stream cameras.

3 Likes

Glad to see these updates as always! Looking forward to them :slight_smile:

Just would like to comment on something bugging me about Chatbox though:

The intent behind the Chatbox is to provide an alternate way of communication that is as similar as possible to communicating with voice in VRChat. We want everyone to be able to talk with their friends in VRChat, but we also don’t want to turn VRChat into a “general chat”, text chatroom, or IM service. The chatbox is meant for ephemeral messages that allow people near each other to communicate, but disappear once they’re gone, just like voice.

This part doesn’t bug me, and makes sense. Chatboxes are meant to basically be User Voice and act like User Voice for those who wish to avoid using voice itself, but this philosophy seems at odds with the current friends only by default setting. If chatboxes are meant to be User Voice for Users without voices, I’d expect them to follow the same design as User Voice, being a safety feature and on by default for all ranks (Canny)

I understand the moderation concerns and the lack of data, but I’d imagine they’d be similar moderation concerns to what users can say in user voice anyway, unless I’m missing a big difference there?

Anyway, thanks again for all the updates and listening to the feedback! I hope the team receives my feedback too! :yellow_heart:

8 Likes

I’m glad you guys are working hard on ensuring you’re not working too hard.

About flipping the chatbox in mirrors, I think the nameplates should be as well. But that was probably already brought up internally.

1 Like

Still, there is no info on Localization, especially since the 2.0 menu will be very text-heavy. I hope VRC is acknowledging the significant portion of the community that relies on these for accessibility

2 Likes

Avatar search when? Don’t ask me to be patient either, hard to be patient when we had this feature for quite a while with mods and you guys give less than 24 hours notice that you’re adding EAC. Really should have had most of the most popular mods features done before adding EAC. Searching for avatars was one of the only reasons I played the game and if I have to go world to world to find cool avatars that takes the fun out of it because it becomes a job.

7 Likes

We have plans regarding avatar scaling-- the main concern is that we want world and instance creators to be able to lock down controls on that and many other features. I could’ve sworn we talked about it in a previous update, but it’s getting very hard to remember which post we said things in…

Anyhow, scaling is fine, but the limits should be up to the instance and world creator, not each individual user or avatar. That’s been the internal discussion so far.

That’s not on the books for now, apologies. The Quest 2 is being pushed to its absolute limits as-is. We try to add as much as we can any time we re-assess.

Since the Stream camera outputs to the Desktop screen, I’m actually not sure how this would work. If you can be more descriptive, make a post to our feature requests board.

Toxicity via voice chat is absolutely a big problem in VRChat. People bring it up a TON. We see it in reddit posts, tweets, feedback posts, and even in news stories. Reducing toxic behavior in voice chat is a HUGE challenge that many, many people have been asking us to solve.

Text chat is yet another vector for toxicity. We might be wrong and people might be super nice, but we’d rather be wrong and be able to loosen up restrictions instead of being wrong and having to tighten them up.

Maybe, that’s a good point!

There’s no info on localization because we haven’t had any localization efforts yet. We know its important, and it’s one of the things we really want to do once our UI is finally solidified and we won’t have to worry about major changes for a long time.

No active development yet, but we’ve noted in most (if not all) Dev Update threads over the past week that we are very aware that people want avatar search. We’re just not actively working on it yet, as there’s a lot of design decisions we want to make first.

6 Likes

What about gamma and contrast controls? Those were talked about initially but have been absent from further announcements

1 Like

All of this post today has been most wonderful to read, was a great write up. BUT. This of all has me most excited tbh. I’ve been looking forward to the UI 2.0 for a long time now and the fact we could have this in our hands possibly as soon as next week has me very hyped!

Hopefully this goes over well and doesn’t incur too much of a performance cost as this feature has been absolutely godly for my frames and has definitely allowed me to much better enjoy my time in even maximum hard-capped instances.

2 Likes

I was expecting to see something good news or bad news about public avatar search today… :cry:

Maybe we need an updated tutorial UI to point users to the setting.

1 Like

I agree this suggestion, increasing the mb for Quest into 20 or 25, its very limited having 10mb for uploading content for quest knowing what there is no transparency available.

Still in! Just haven’t mentioned them again. Just because I stop writing about a thing doesn’t mean it stops existing. :sob:

SAME. I want this damn thing out.

That’s a big concern for us too. Unfortunately, because of Write Defaults, dead-ends, and other non-deterministic animator qualities, we’re backed into a corner.

We’re getting to the point where we’ve got so many toggles and options that the QM is getting a little inscrutable, yeah. Especially to new users.

4 Likes

regarding the chat box and safety moderation, wouldn’t it be counter intuitive to be only visible to friends by default requiring others to locally enable seeing the chat boxes, I feel it’d make more sense for it to be visible to everyone by default, or have it as one of the safety settings like voice is to just enable or disable it for specific users ie visitor, new user, user, known, trusted, friends, that way those who cannot speak either due to psychological issues or physical issues etc can be seen trying to communicate by default without having to play “charades” to get others to enable it and see what’s being said, the profanity filter could remain as a settings toggle on or off though in the settings menu or QM that probably wouldn’t be as big an issue, I just feel the text chat should be treated just as equally as the voice chat setting/feature.

2 Likes

Will you plan on adding Camera Animations to the game? I still miss making cinematic videos with this mod before EAC.

3 Likes

avatar search is going to take awhile since it will require a change in how avatars are made public or private. There are a lot of creators who would not want their avatars to appear in search

could always make it a toggle :radio_button:

2 Likes

That is extra stuff that needs to load into RAM.
The Quest does not have much RAM.

Doing this could doom Quest users from being able to partake in large instances because, until the SDK reports VRAM as a metric, most people aren’t even aware of how heavy their avatars are RAM size wise, which is different from how big an avatar’s download size is.