Welcome to the Developer Update for 30 May 2024!
Today’s Dev Update thumbnail features Inokashira-kōen Station(井の頭公園駅) by nyanya! Enjoy a stroll around this realistic recreation of a railway station in Mitaka, Japan for PC Only.
If you’d like to catch up, you can read our previous Developer Update from 16 May.
Important Info / Announcements
VRChat GEAR is Here!
Rock official VRChat GEAR and check out our Merch Lab! We recently relaunched our official store, with all new merch – including thigh highs, a mug, a water bottle, pins, caps, and more!
Have a suggestion for new merch? Leave us a response on our Canny or tag us in #VRCGEAR on social media!
Ongoing Development
Localization Update - Hebrew
We actually accidentally name-dropped Hebrew in our latest Dev Update before it was ready!
Up until the start of last week, our Hebrew implementation suffered from being backwards as Hebrew is a Right-to-Left (RTL) language.
This required a bit more engineering time to get right since it required implementing something called the Unicode Bidirectional Algorithm. No easy feat! But, as a result, we’ve managed to achieve the basic RTL/LTR support that’s required for Hebrew.
To clarify, our menus are still laid out in a Left-To-Right format, but at least Hebrew text won’t be backwards, like this for example: !etuc yrev si taCRV
Boop! Booping is Incoming!
Our new “Booping” social feature allows users to send “boops” to their friends! They can attach any emoji to their boop, including custom and animated emojis so long as you’re a VRC+ user. When the recipient opens their notifications, they’ll see a Boop Explosion containing all of the boops they’ve just received!
Boops can be sent by opening the UserDetails page in either the Quick Menu or Main Menu in the Client and tapping the new Boop button. They can also be sent also from within the native Android app too.
Client:
Native App:
VRChat Constraints Revisited
Development of VRChat constraints continues! When it was first announced that we were working on them, we mentioned that we’d be bringing a deeper technical dive in a few weeks. Well, here it is:
-
The initial version of the constraints system was a single component handling all of the constraint behaviors at once. This has now been split up into several different component types each with its own dedicated behavior, which matches Unity’s layout and will hopefully make animating these constraints more straightforward.
-
An automatic conversion option has been added to the SDK for avatar projects. If your avatar contains any Unity constraints, the SDK will offer to automatically replace them with identical VRChat constraints for you, while also remapping any animations on your avatar from the old constraints to the new ones. We hope this will make it easier to convert existing avatars that use constraints.
-
We’ve added two new advanced settings since the last update:
-
The new Freeze To World setting will cause the constrained transform to stop following its sources and keep its current pose in world space when switched on. This is our official implementation of “world constraints”, which is a specific combination of constraints often used by avatars to keep an object fixed in place. By using this advanced setting instead, you can replicate this behavior using just one constraint rather than needing several working together, which can help improve your avatar’s performance and make the avatar easier to build and maintain.
-
The new Rebake Offsets When Unfrozen setting works with the Freeze To World setting above to control how the constraint will behave when it’s unfrozen. If offset rebaking is enabled, the constraint will recalculate its offsets to keep the pose relative to its sources that it had at the time it was unfrozen, instead of jumping back to where it should be based on its original offsets.
-
Here’s a quick video illustrating the two new advanced settings applied to a parent constraint:
We’ve also been working through how VRChat constraints will be ranked for avatar performance.
Up to now, constraint count has been an unranked performance stat, with a suggested limit of 15 constraints per avatar. We are planning to make this a ranked stat as VRChat constraints are released. We aren’t ready to talk about the thresholds for each rank just yet, but we are aiming to keep them fairly lenient based on the performance difference between VRChat constraints and Unity constraints.
In addition to constraint count, we’re also intending to add a new performance stat related to constraints called Constraint Depth, which essentially tracks the deepest chain of constraints across your entire avatar. This is because constraints that do not depend on one another can be solved in parallel, while ones that do depend on one another need to be solved in a specific order. Based on our benchmarking, this gives a more accurate estimate of an avatar’s overall performance than just using the number of constraints alone.
VRChat constraints are in the closing stages of internal QA and are on target for release this July.
We look forward to seeing what you’ll create with them!
Avatar Download and Uncompressed Size Limit Reminder
July 16th – that’s 47 days until the limits are reduced for PC avatars!
In case you’ve forgotten back in March, we announced the introduction of limits for both download size (compressed size) and the uncompressed size (which was previously called called estimated memory usage). We mentioned there have been limits already in place for a number of months, but as not to break content without notice (even if very unoptimised) these limits were set very high.
We want to reduce those limits to something more sane while still allowing tons of headroom to have things on an avatar.
So what are the current limits and what are we changing them to?
On PC
Download size (compressed size)
Current: 500 MB, Planned: 200 MB
Uncompressed size
Current: 1.2 GB, Planned: 500 MB
On Android (Quest)
Download size (compressed size)
Current: 10 MB, No planned change
Uncompressed size
Current: 40 MB, No planned change
So if you are creating avatars for Android, there is no change. If you create avatars on PC and they happen to have a lot of stuff on them, or if you are fond of very high resolution textures for everything, you may need to optimise.
Speaking of which, until now there’s been no indication in the SDK that these reduced limits have been exceeded, and we’re looking to fix that. In an upcoming SDK update we will be adding a warning to the build panel that indicates if the last built avatar went over the reduced limits.
Here are a couple screenshots showing what that looks like.
To conclude, this change won’t affect the vast majority of avatars, but it’s always worth checking to see where there’s easy gains for optimisation. If your avatars are in the danger zone, now is the time to act.
You can find optimisation tips at Avatar Optimization Tips | VRChat Creation. There’s many amazing optimisation tools out there created by the community which can help give detailed information on what’s taking up space and automate optimisation. Many of these can be added with just a few clicks to your project via the Creator Companion app.
As a brief note, we’d still really like to include tools within the SDK itself to help you optimize your avatar. That’s something we’d like to work on this year, although nothing is set in stone yet.
Next Upcoming VRChat Jam
Already?!
This is still in the works so some things are subject to change, but here’s what we’re thinking:
SUMMER MUSIC FEST!
Imagine a beachfront property or a tropical oasis with - a DJ setup?!
For our next VRChat Jam, we’re aiming to have a world and avatar jam from July 8 - August 2 2024 based on summer music festivals.
There will be two parts to this: the world entries and the avatar entries. You can enter for both or just one category!
So put on your straw hats, get those glowsticks ready, and let’s get to it!
Participants will be asked to make a cross-platform world and avatars that celebrates “Summer Vibes at the Beach”, whatever that means to you!
Worlds will be judged in these categories:
- Summer Vibe-iness
- Media Player Integration
- Performance Level
- Ease of Use
Avatars will be judged in these categories:
- Summer Vibe-iness
- AudioLink Integration
- Performance Rank (Medium or better)
- Extra Features
Much like Spookality, there will be a special world row and avatar section featuring the winners for at least a month after the jam. We’ll also try to feature clubs and venues that use the worlds and avatars from the jam on our socials, so tag us if you’re using them!
On the technical aspect, this may be one of the more challenging jams we’ve hosted. We’ll be asking for worlds and avatars with AudioLink, worlds with video/media players, avatars and worlds to be cross-platform (that includes Android and maybe even iOS if we’re ready by then!), avatars to be at least Medium performance rank, & more.
We’ll be providing a list of prefabs and resources we think world and avatar creators will need to know to get started in early July on our forums. There’s a lot to cover, so if there’s anything you think we should include, please let us know!
Conclusion
That’s it for this Dev Update! Lots to look forward to this summer, eh?
Our next text update is scheduled for June 13. See you then!