World/Udon Bugs & Feature Requests

Post about current World or Udon bugs feature requests. One item per post!
Non-constructive and off-topic posts will be moved or deleted.
Per-world asset bundles that users can download optionally at runtime
Many worlds have various small textures that could be higher or lower resolution depending on user preference. If users could opt-into having higher/lower resolution textures, then Quest builds could start out smaller (so as to meet the Quest world size limit), and users would have more control over their performance & experience in any given world. Players could also download new textures related to some optional add-on feature in the world. This can somewhat be achieved with image downloading, however that solution doesn't solve this problem for a couple reasons: The 5-second rate limit means you're incentivized to download large atlases for multiple textures, which is something some worlds can't feasibly do. But even if that were always feasible, if hundreds of textures need to be downloaded, the user would have to wait multiple minutes just for the world to initialize. Downloaded images can't be ASTC compressed, so they can't be as small as compressed local textures can be. If I could just upload one bundle of textures at a different resolution than those in the world to begin with, and set compression parameters to have the textures in the bundle compressed to ASTC, then have users download the entire thing at once for Udon to process at runtime, then all of those issues could be avoided. This would also be beneficial for downloaded text, not just images. You could even open this feature up to file types like audio clips or mesh files to give creators even more freedom/potential to create experiences they otherwise wouldn't have been able to before.
0
·
Feature Requests
Add caching options for VRCImage/String/VideoDownloader components to skip request limits and lower network usage
Currently when a world loads, for example all VRCImageDownloader have to redownload their content, with a 5 second period between each. This both puts strain on hosts and also limits what we can do with worlds in a nice way since all non-bundled content has to be redownloaded every time. Not to mention it puts pressure on bandwidth for users. Ideally there should be a parameter on these functions to make a cached download request, at the very least for images/video, so it can be decided on a case-by-case basis (as this would of course not be desired for all cases where a URL is input by a user or is frequently changing on the source server.). If caching is enabled on the request and a local copy exists, you skip sending a request to the server and skip the 5-second cooldown on this downloader type, simply loading it from disk. This avoids the security concerns since no contact is made to the server. ----------------------------------------------------------- The cache could be stored as a sub-folder of a specific world, being shared across instances, which would make sense, and would make cleanup simple. But even more gains could be had from it being a global cache, so if I pasted the same URL in another world, it could instantly load it from my cache and any others who already have it cached, avoiding duplication of data. A simple dictionary file can be maintained and loaded on VRChat load to avoiding having to scan the cached files each time, as the amount of files could definitely grow pretty big. But a global cache like that isn't essential and would gladly give it up if it means implementing this request is more likely. Also, having an option to set the "TTL" (time to live) of the cached file would be a nice benefit too, though not an essential feature to have from the start. But would be pretty simple to add it as a saved property in the cache record data and compare it to the creation date and just do a redownload. (The local data should be encrypted using existing world encryption systems to prevent modifying the files and so there's no concern about illegal/awkward media ending up in a person's cache).
1
·
Feature Requests
Load More