Developer Update - 19 September 2024

Welcome to the Developer Update for 19 September 2024!

Today’s Dev Update thumbnail features Experience by Nootau! Re-experience Windows XP in 3D space, for PC Only.

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

Important Info / Announcements

VRChat Avatar Seller Pilot Program & Feedback Opportunity

As you know, we’re still working on the Creator Economy! We’re in the process of identifying creators who meet the qualifications for a potential pilot program for avatar sellers.

Please fill out this survey if you’re interested in being considered, and/or would like to provide feedback to help us understand how VRChat can improve your avatar creation/selling experience.

Hotlinking VRChat Images

This is a small change that will only affect third-party websites and applications that utilize VRChat assets such as avatar or world thumbnail images.

In an upcoming change, VRChat will no longer permit “hotlinking” of images from our servers. To avoid disruption in any third-party service, maintainers should proxy and cache these images on their own infrastructure. This will ensure that users of those websites and services have a smooth experience, while reducing the load on our infrastructure!

This change will take place in early October at the soonest.

Any kind of hotlinking that points to /api/1/file/ or /api/1/image/ will be affected, including linking within an <img src=...> as well as linking to it using a <a href=...> tag.

Ongoing Development

Persistent User Data Open Beta - Coming Soon!

We’re looking to ship Persistent User Data to Open Beta within the next few weeks! We’ve talked about Persistence in previous dev updates but as a short summary: Persistent User Data allows world creators to save certain types of data that the world can remember for each individual user upon every visit (unless the user clears it manually).

Currently the feature is in Closed Beta. If you’d like to read more on how it works, you can check out our closed beta docs which will be merged to our main Creator’s docs once the feature is live.

We’ve also been working with our Closed Beta testers who have been doing all sorts of amazing and fun things with the feature! Here are some examples:

Creator: Faxmashine
Description: No Time Two Talk’s options and interests are automatically saved! And interests sync more quickly between players.
Video:

Creator: Karet
Description: After opening a pack of collectable cards, the cards you draw are saved to your inventory so that when you next visit the world you can pull them out.
Video:

Creator: MyroP
Description: In this theme park builder world, a save slot system is implemented that lets users save and manage their progress. When you rejoin the world later, you can choose a save slot and load your saved data.
Video:

Creators: syncpulse & lun-4
Description: In YTS, they are using Player Data to store world settings like mirrors and brightness, and Player Objects to sync third-person position and other data for the tablet. They’ll be using similar systems in upcoming projects as well.
Video:

Creator: Vee
Description: District 77 is a Multi-venue event and exploration world utilizing persistence for Settings, collectibles and even your spawn location! Don’t want to spawn in the subway all the time? You can instead wake up in the park or in front of your favorite venue!
Video:

Creator: Happyrobot33
Description: The goal with this demo is to show that persistence has enough space to store a decent amount of data. This demo allows you to either load an image from a URL or take a picture directly in the world, and then have that save to the world. You are also able to see other users images when they join or take new ones
Video:

Creator: Happyrobot33
Description: This is a upcoming update to the OpenFlight system that adds persistence to almost all of the customization settings. You can create different named slots for different purposes, such as a competitive mode and a normal mode. You can also set which of these slots to load upon joining the world, so you wouldn’t have to run over to the panel and tweak the settings every time you join. Additionally, you can select other users in the instance and copy their slots and by extension their settings into your data, allowing for the easy sharing of different settings. There is also a experimental metrics system that tracks how far and for how long you’ve flown, along with a rank system that we plan to support as a extension to the system to gamify flying
Video:

Creator: VRChat Team
Description: When cutting wood on this world, the logs count and logs themselves persist after you rejoin the world.
Video:

Physbone & Constraint Execution Order

A long standing issue for avatars in VRChat has been that if you have a PhysBone set up as the child of a constraint, the PhysBone can shift or jitter around. This happens because constraints have always been solved later in the frame than PhysBones, which can cause the following situation:

  1. You have a game object that’s constrained to stay at a certain position that also has a PhysBone under it.
  2. Your avatar moves in such a way that the game object’s position changes.
  3. The PhysBone detects that the game object has moved, so it simulates the physical effect of the movement.
  4. Later in the same frame, the constraint detects that the game object has moved, and moves it back to where it should be.
  5. The frame is rendered, which means the PhysBone will shift as if its parent is moving even though it actually isn’t.

In the future, we’re intending to organize PhysBones and constraints during the frame to allow constraints to run before PhysBones where necessary, which means that PhysBones under constraints will now be solved based on their position and rotation after their constraint has run rather than before. This should solve the issue where PhysBones unexpectedly shift around when used as children of constraints.

As an example, here’s a clip of an avatar that has a copy of the sample avatar’s head under a constraint with Freeze To World switched on as it behaves now in the live client:

And here’s the same avatar with these execution order changes. Notice that the hair and ears no longer shift about as we look around:

We’re aware of similar ordering issues between contacts and constraints as well - we’re aiming to resolve those too, although we’re not quite far enough ahead to show progress with that just yet.

A couple of things to keep in mind:

  • This change specifically allows constraints to run either before all PhysBones or after all PhysBones. While this is expected to solve the majority of the cases where jittering appears, it will not fully solve jittering in situations where PhysBones and constraints are layered repeatedly (for example, a constraint containing a PhysBone containing another constraint).
  • There is an existing technique that involves scale constrainting a game object to your avatar’s head in order to hide it in first person while still showing it in mirrors and to other people.
    While we’ve done what we can to preserve this technique as part of this change, we can’t guarantee full compatibility due to the need to change the execution order.
    The VRCHeadChop component introduced in March this year is designed to handle this case. If you’re using constraints to hide objects in first person, it’s strongly recommended that you move over to using this component instead as soon as you can, since we cannot guarantee compatibility for the constraint method in the future.

Chatbox 2.0 is in Open Beta!

Changes:

  • The default setting for Chatbox visibility has been changed from Friends to Everyone

Mute Individual Chatboxes

  • You are now able to select a user and mute / unmute their Chatbox in a similar way to how you would mute their voice to override your visibility setting

Chatbox Auto Send

  • Chatbox messages will now automatically send and display to other players as you are typing
  • This is enabled by default and a new “auto send messages” setting can be toggled off to disable this behavior

Selected User Message Never Disappears

  • Highlighting / selecting a player will keep their Chatbox active until you de-select them

Mobile Touch UI Chatbox Button

  • A new Chatbox button is available next to the PTT mic button on the mobile touch UI to open the Chatbox input pop-up for quick chatting

Chatbox Visibility supports Earmuffs and World zones

  • Chatbox visibility now supports earmuff mode by fading out the opacity of chatboxes outside your earmuffs range. This range and how much they fade is determined by your earmuff settings and how much you are fading out voice volume
  • Chatbox visibility should better support world voice zones and hide when you can’t hear someone in a different zone

Basic Profanity Filter

  • A new simple profanity filter is enabled by default on Chatbox content
  • This option can be toggled off in the comfort and safety settings menu

Minimized Keyboard View

  • The keyboard input popup can now be minimized to a smaller simplified view, hiding most of the keys and buttons
  • The arrow button in the upper left of the top bar toggles the keyboard between the full and minimized views
  • When in minimized view a new “submit” button appears to the right of the input field
  • The character’s remaining text display has been replaced with a new fill bar
  • The default keyboard state will be minimized on desktop, mobile, and Pico and the full view will be the default in VR
  • Updated the input field to listen to the submit input on mobile similar to how it does on other platforms. This will allow for the submit / send key on mobile keyboards to submit the input
  • The keyboard popup will now open in portrait mode on mobile and not force the orientation to landscape. This will allow Chatbox messaging and world input in portrait orientation

Report Chatbox Messages

  • You are now able to report users for Chatbox messages through Report → Chat

Example Central! What is it?

We’re getting closer to shipping a new feature for managing SDK examples called Example Central!

This would be a new window in Unity that comes pre-installed with any VCC project where you’d have access to a library of scene examples that feature useful or common functionality that you can add to your projects with a single click. We’ll be starting small with a few examples and add more as we go so if you have any suggestions for potential examples that creators like you would use a lot, let us know!

examplecentral

Build & Test for Mobile!

We’re also excited to share that we’re working on a Build & Test capability for mobile platforms!

Currently Build & Test is a feature that allows creators to quickly test their worlds for Android before publishing. We are planning to expand the feature so that Creators can test their worlds on their mobile devices to check for mobile compatibility & feel as well.

Keep an eye out for more updates on this feature soon!

Next Upcoming VRChat Jam

Spookality is coming!

For those unfamiliar, every year we host a World and Avatar Jam celebrating Halloween. We encourage creators to submit horror worlds, chill hangout worlds that match the holiday spirit, spooky or cute avatars to go trick-or-treating in, etc.

Keep an eye out on our socials for this year’s sub-theme. We’re aiming to announce on September 23 2024.

Conclusion

That’s it for this Dev Update!

Our next text update is scheduled for October 3. See you then!

16 Likes

They better teach Space Cowboi some manners :stuck_out_tongue:

6 Likes

avatars are probably fine because that’s already happening, but customers better get project files for their purchases.

i just don’t want the platform to turn into roblox, with microtransactions on every world.

17 Likes

Suuuuuuuuper ballin update. Very happy more chatbox settings are finally available, especially being able to mute them. Also happy to see CE and Persistence get more development work on them. Once CE avatars and single purchases are out, you bet I’m putting every paycheck I earn into Vbucks (not really). Building and testing for mobile isn’t something I would have access too at the moment but once I do it will be VITAL for making sure questies don’t suffer, at least that much. Example central is also pretty nice.

3 Likes

Loving the new chatbox! Quick question about the report feature, however. Does reporting a textbox chat send the actual specific message within the report, the surrounding context / messages, or does it only “flag” an account for review?

7 Likes

Fantastic update, can’t wait to see more about persistence and avatar in-game selling <3

3 Likes

Persistence is a huge tool for world devs ngl, can’t wait for everyone to start using it <3 no more setting up everything everytime you join!

2 Likes

I was just thinking how VRChat should help creators sell avatars. Was even thinking they should use Creator Companion to help you download the project files.

Me, patiently waiting for stickers:
Yes… ha ha ha… Yes!

8 Likes

Thank goodness. I can finally mute the rude jerks who use the chat box to announce their Spotify Now Playing right in front of the DJ at the club.

4 Likes

This is honestly a great step forward. However I would also like to see the immobile settings get a little update as well, especially with regards to world immobile inheriting avatar rotation.

Hopefully we could have an option to customize, add and remove certain words to the profanity filter if we so chose.

3 Likes

It’s great that these improvements in favor of people are arriving so early!


But I wonder if we can talk about the uncompressed size limit? There’s already a bunch of people abusing some of the tools that corrupt Avatar’s uncompressed size to Pending, causing it to misbehave.

Seconding the project files; one of the biggest plushies about VRC has always been the culture of customizing your avatar, and a default experience that doesn’t provide project files would break this.

1 Like

I would love to see if the persistent user data could sync between worlds (within the same author). For example, User makes a change on world A, then whenever the user joins the world B (same creator from world A), world B gets to read the changes the user made on world A. This could allow world creators to sync user settings/infos within their collection of worlds.

And also I really hope to see a custom resolution option (whether it’s in config.json or UI configurable) for the new desktop stream camera in open-beta.

Keep up those good things team!

That’s very good and interesting. Keep it up like that please!

I’m really hoping that we can set different falloffs for the earmuff mode between chatbox and voices. Keeping voices quiet near me, but still being able to read my mute friend’s messages across the table should be possible

3 Likes

VRChat Avatar Seller Pilot Program & Feedback Opportunity

As you know, we’re still working on the Creator Economy! We’re in the process of identifying creators who meet the qualifications for a potential pilot program for avatar sellers.

mellstroy

I am very please by this update

3 Likes

There is so much in this update, can’t wait to see how everyone will interact with all of this.

I love to see that people might get easier access to paid avatars without requiring a PC (especially on standalone platforms). But I would hate to see this become the norm and lose customization in the name of DRM. DRM truly ruins everything. I hope that we’re always given both options.

Very, very, very happy to have chatboxes on by default and per-user chatboxes. The optional live typing can make it flow a bit better like a normal conversation, too.

As chatboxes are less intrusive or distracting than voiced speech, a toggle to have them affected by earmuffs or not would also be appreciated. Sometimes I don’t mind seeing chatboxes for actual chat, but only want to hear those closest to me.

Also very happy to see proof of persistence being developed and used! Thank you!

Great update with the catbox (edit: haha, *chatbox). (Gotta turn off the live message and profanity filter. I would have put them off by default). Only thing I’m missing with chatbox now is the ability to use the rest of the UI with the keyboard up. I’m not mute but it must be really annoying for people who rely on it that you can’t.

catbox :thinking:

1 Like