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:
- You have a game object that’s constrained to stay at a certain position that also has a PhysBone under it.
- Your avatar moves in such a way that the game object’s position changes.
- The PhysBone detects that the game object has moved, so it simulates the physical effect of the movement.
- Later in the same frame, the constraint detects that the game object has moved, and moves it back to where it should be.
- 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!
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!