Developer Update - 17 August 2023

Welcome to the Developer Update for 17 August 2023!

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

Important Info / Announcements

VRChat Android Alpha is now LIVE!

That’s right, the VRChat Android Alpha is available now for all VRChat Plus subscribers! Strasz has a whole Dev Update and blog post for ya.

This is an EAAAARLY test. There’s lots of bugs, rough edges, UI headaches, known issues, and that kinda stuff. Hence, alpha!

Find and install VRChat for Android Mobile Devices using this link to the Google Play Store.

After opting into testing, it can take 15-30 minutes for your permission to be granted. After that time, you can use the install link to install the app!

:warning: If you do not have VRChat Plus, you will still be able to install this app, but you will not be able to use it. Patience, let us shake out all these bugs first.

However, we’ve been using it internally for playing around and dogfooding a good bit. We’ve been having a lot of fun being able to hang out in VRChat anywhere we go. On the couch, on the bus, at the airport, or sneaking in some time to chat during your lunch break. Plus, those notifications sure are useful…

We wanted to get it in your hands in some way early on so you can help us track down problems and start creating things that work well on mobile.

If you find bugs or have feedback, please plzzzz post to our Feedback boards we made specially for this. We want to hear your feedback!

Quick Note: Quest Pro Eye Tracking Build Turned Off

We recently announced that we turned off the native eye tracking Quest Pro build. This was the build that you had to manually select that let you use the Quest Pro in standalone mode and get eyetracking.

Important Note: This does not effect using OSC with the Quest Pro to get eye tracking on PC. That still works perfectly fine and is totally unaffected.

This was done because there’s some serious issues with the SDK required to get this to work. It caused a ~20% reduction in framerate on a platform that’s already starving for performance, and caused significant issues in our development and build process. In addition, while it wasn’t a significant motivation to remove the build, it is important to illustrate that the build was utilized by an extremely small amount of people on a consistent basis.

Check out this Feedback post for more info. We don’t have a date for this build to return, but we’ll let you know when it’s on the way.

World Category Changes

We’re doing some experimenting! Data data data.

If you notice the world categories shifting around and changing, don’t worry about it. That’s us poking and experimenting with new categories, new layouts, and other changes to see how it affects and improves the user experience in VRChat.

Don’t be alarmed if you see things coming and going. Our hope is to make the content delivered in our World browser fresher and more relevant over time!

Ongoing Development

World Preloading

Ever wanted to preload a world so you don’t have to sit in the loading screen while that 568MB virtual convention world downloads?

Wait no more! We’re implementing World Preloading!

actually i guess you still have to wait i mean you still have to download the world i guess

First, here’s a video of it in action!

It also works from Invites!

Let’s dig in a little bit. When you visit the instance page for any world, you’ll now be shown a new “Preload World” button.

After clicking this button, VRChat will check if that world is currently in your local cache (in other words, if you’ve recently downloaded it). If it isn’t in your cache, VRChat will start a download for that world that will run in the background while you’re still in your current instance.

The preload world button will change appearance to track the progress of this download and to allow you to abort the download if you wish by clicking the button again. If you press this cancel button, the download is immediately stopped and any data downloaded so far is discarded.

PreloadInProgressButton

If you let the download finish, the button will change again to let you unmark this world as a preloaded world. Unmarking the world after the download has finished will not automatically remove it from your cache. Additionally, marking a world for preloading while it’s already in your cache will skip the download and just mark the world as a preloaded world.

While a world is being downloaded in the background, the tile for that world in the UI displays a progress bar reflecting the progress of the current download. This bar is only visible during downloads.

There’s a widget in the quick menu (similar to earmuffs and queues) that shows the progress of the current download with the ability to cancel:

PreloadQMBar

When the download finishes, the Cancel button is replaced with a Join button that will immediately send the user to the instance they were last looking at when they started preloading the world! If the world instance is full or no longer available, the button will open the world details page for this world instead.

PreloadQMBarDone

As you saw in the video, you’ll also get a notification if you’ve closed your menu.

This also works with queues! If you start preloading an instance that has a queue, you’ll join the queue right away while you’re preloading. If the instance doesn’t have a queue when you start preloading, but has one after you’re done preloading and attempt to join, you’ll join the queue then.

Now, when another user invites you to join them, you may want to preload the world they’re in before you start travelling there. To support this, a View Instance button is now available under the more options button (“…”) on invites.

PreloadInviteMoreOptions

When clicked, this button will open the details page for the world your friend is in, opened on the instance that they’re inviting you to. This applies even if the type of instance wouldn’t normally be visible in the instances list (i.e. Invite or Invite+).

From there, you’ll follow the same flow as before to preload and then join the world.

FAQ

Here’s some common questions we’ll expect people to have about this feature!

How many worlds can I preload at once?

Users are currently limited to a maximum of one preload at any time. When you mark a new world for preloading, the previously marked world (if any) will be automatically unmarked as a preload.

If the previously marked world was still being downloaded in the background at the time, this will also automatically stop that download. In other words, you can only have a maximum of one world downloading in the background at a time.

Do preload marked worlds get removed from the cache?

We attempt to keep preload-marked worlds in the cache for as long as possible and give them priority over non preload-marked worlds, but preloaded worlds may still disappear from the cache due to the limitations of Unity’s caching system.

What happens when a preloaded world is dropped from the cache or gets an update?

When VRChat starts or the user looks at the details panel for a preload marked world, we check to see if it has fallen out of the local cache or the world has received an update from its creator.

If we detect that we do not have the most up to date version of the world, we automatically unmark it as preloaded, so the user has to click the “Preload World” button again to re-mark it as a preload. If they do this, it will initiate a background download for the most recent version of the world, effectively updating it.

What happens when I join a world that’s still preloading?

If you join a world that hasn’t finished being downloaded in the background yet, the download progress as it appears in the blue void with the loading tips should continue from where the background download left off. For example, if you start joining an instance while a world is 60% downloaded, the progress bar in the loading screen should immediately begin at about 60% instead of restarting from 0%.

Naturally, if you join a world after the background download has already finished, there should be no download progress shown at all in the loading screen.

Conclusion

That’s it for this Dev Update! Our next update is scheduled for August 31st, 2023. See you then!

18 Likes

I am very excited about this developer update.
Thanks :slight_smile:

1 Like

I like the mobile setup for testing quest content, but desperately think there needs to be a way to allow rendering of very poor avatars, even if that feature is default off. Some avatar setups are literally impossible to do without getting put into very poor, and 99% of the reason I would ever want to use the mobile version is to test quest content since I don’t own one, yet this disparity makes that more difficult

6 Likes

Good Birthday update for me! :partying_face:

Can’t wait to VRChat from the terlet.

3 Likes

I agree that some form of override, even if its like, one very poor at a time, would be nice specifically for testing quest content. That was the primary reason that I’ve been excited for the android release, testing quest avatars with an android emulator.

Completely agree with the reasons for blocking very poor content on mobile though.

5 Likes

relevant canny so we dont make multiple Canny

I completely understand the normal reasons why it shouldn’t be preferred but until the perf system gets more accurate for things its kind of a big deal to just outright disallow it

Is there a way to disable portal placement on group instances? It would be a good function for events.

2 Likes

Maybe a menu to popup to preload the portal to a world could be helpful. Most of my world-to-world travels have been done via a portal which can be beneficial to preload if possible.

3 Likes

Whilst there has been an effort to stop them, I know that crashers do in fact still exist, from the testing within the VRC phone client, will these crashers crash just the app, or the entire phone? Quest (which also runs Android) sometimes shuts down the entire device.

Is this covered by the “quest can only run certain content?”
[Question reposted from Discord]

I’d love to see an option to automatically preload worlds in your favourites (or a smaller ‘priority favourites’ category)

Automatic preloading as soon as an invite is received (from friends?) would be cool to have, those of us with australian internet need every possible second of download time.

Amazing work :slight_smile:

edit: Maybe also the same for avatars? That’d be a lot more API intense though I’d imagine (and just makes it easier for gigantic, unoptimised avatars to work better)

1 Like

:pray:

It been a long time coming, but this will definitely take a huge chunk out of the tedium/boredom/loneliness when trying to go places, especially when they are larger worlds. I never used the user created methods, mostly because i didn’t think about it much, but if it means less time in the void then it’s very welcome. People are gonna love it in general i’m sure!

2 Likes

This is so cool, it’s really great to see VR Chat on Mobile officially, I hope an iOS version doesn’t take so long to arrive.

Only two things I would ask for the Mobile version, support for cardboard and controllers (a pair of joycons and a VR Box would be a cheap alternative for those without a VR headset).

And please consider releasing a version for PSVR (PS4) or PSVR 2 (PS5) it’s a headset with a huge playerbase, I bet many would be happy with that.

Can pre-loading also have some option to happen automatically when receiving invite? Would give much smoother experiance for people with fine connection as usually you want to say goodbye and the invite would be downloaded by then

3 Likes

Why not just get rid of the Loading screen entirely and replace it with preloading the World? I feel like that would be better.

1 Like

World Preloading

Ever wanted to preload a world so you don’t have to sit in the loading screen while that 568MB virtual convention world downloads?

Wait no more! We’re implementing World Preloading!

actually i guess you still have to wait i mean you still have to download the world i guess

that’s pretty nice :+1:

1 Like

Highly agreed. Being able to select portals to view the instances info has been asked for for a while now so this is a great excuse to finally add that!
Perhaps there could also be an option to automatically begin preloading upon placing a portal yourself?

This would be really cool too!! Although I imagine there are more questions that need answering if this were to be the case. Considering you can only have one world “guaranteed preloaded” at a time, receiving too many invites you don’t actually want could possibly push out a world you wanted to keep preloaded from the cache. I’m sure the team could get something similar to work eventually though

That preloading feature is amazing, thanks team.

PlayStation VR is unlikely to happen as Sony doesn’t allow this kind of user-generated content platform on its consoles

Would it be possible to have “automatic pre-download when accepting invitations” or “pre-download for doors placed on the map within a certain distance” or even just integrate joining a world into the pre-download (when clicking into a world, stay in the original world and wait for the pre-download to complete, in the meantime press both triggers at the same time to leave the world and go to the loading page)?

And of course, is it possible to turn “pre-downloads” into “pre-loads”? Loading part of the map in the background with little impact on the current world or preempting network communication (since most of the time entering a map is not spent loading locally, but on network communication) dramatically speeds up loading and communication.

1 Like

My phone isn’t compatible with the alpha :`( what phone is requires to play? Will you make it compatible with slightly more aged phones?