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.
OnPortalSpawnEvent
Create a legitimate way to enable and disable player spawned portals within a specific radius, trigger or collider of a world, while retaining the ability to have player spawned portals elsewhere in the same world. Currently in VRChat, you cannot place a player spawned portal at a world spawn or next to another player. What if this specific behavior can be a feature used for world building without necessarily needing to disable portals entirely from the project? There is no way to disable player spawned portals in a specified area of a world without placing a bunch of spawn points to act as a restrictor. Stickers and items have layers or colliders where they cannot be placed, but this seems to not work the same way for player portals. If player spawned portals cannot be disabled through a collider or layer like stickers and items, then there should be a way to achieve this through Udon scripting with an 'onPortalSpawnEvent' or other equivalent node. However, if the colliders, layers, as well as Udon options are not possible to implement for player spawned portals, my alternative is to add a toggle within the world instance menu to enable or disable player spawned portals in the currently existing way as emoji, items, stickers, drones, prints, and pedestals. It may seem like a niche use case, I believe this feature can be used for minigames, bars, nightclubs, venues and wherever locations and events that a world creator or instance master may want to specifically disable or re-enable portal spawning as an in-game toggle. Thank you for taking the time to see my suggestion.
1
Allow VRCURL URL / Dynamic URLs At Runtime, It's Time for a Change
With the Remote string loading and image loading, we should be able to dynamically construct endpoint url's to cater to different scenarios and offer more flexibility. I know other posts about this do exist, but I feel like VRChat won't really pay attention without there being more volume and input from the end users. Please upvote relevant requests and share your thoughts. I'm using this post to potentially share my feedback and idea, and offer a starting point for us to discuss on. I want to be able to kickoff my project in VRChat and the string loading with dynamic URL's will play a major role in making it a reality. I am assuming this was not possible because of "security" concerns, but let's face it that we offer users to block untrusted URL's as is and give them warnings. VRChat is not only a social platform, but a sandbox for creators in terms of avatar, world, and scripting content. I've developed essential tools on Garry's Mod and other sandbox games, and they had no problem letting scripts make API calls, despite the community having a dangerous and toxic userbase. This allowed me to let my clients configure "roles" and preferences from an external web portal. Are you afraid of data exfiltration? There are ways to do that already. Malicious URL calls? Anything on the internet can be malicious as is. We can't keep having this "Carebear" security mindset and keep it locked tight that severely limits our creativity, but look for accountability and flexibility. The security concern is admired, but now its necessary to send dynamic URL's for search queries when we deal with remote strings or images, otherwise we have no choice but to dump the entire dataset. I will just have to create hundreds of VRCURL's and just do a bunch of if/else's and download the entire "database" instead of feeding search queries to get specific datasets to save bandwidth and filter through the data set on the server side. Maybe to meet in the middle, we can be transparent of the requests to be made. Add a prompt to the end user stating that "This World is requesting permission to let your game send/receive content to and from http://xyz.com " and it would be whitelisted to that user individually. Any new URL's not on the list will prompt another permission request. It would Only apply to the domain name, and Subdomain only. Maybe prevent changing the domain/subdomain of the URL entirely. This can also allow the user to feel more confidence knowing that their "Untrusted URLs" is no longer a wildcard, but can consult a list to see which untrusted URL's they're permitting on their client. With your upcoming "Udon" menu implementation, it could be considered to have VRChat built-in user preferences specific to the worlds, and include the whitelist there of URLs the World has requested to communicate with.
3
Whitelist ImageConversion.LoadImage in Udon
Greetings, I'd like to have access to the 'ImageConversion.LoadImage' method from Udon : https://docs.unity3d.com/2022.3/Documentation/ScriptReference/ImageConversion.LoadImage.html The reason is : I'm currently making a 3D Model Loading using Udon#, that interprets GLB/VRM data. https://github.com/vr-voyage/vrchat-glb-loader Not having access to LoadImage forces me to re-encode, in advance, the images (PNG/JPEG/WebM) stored in these files into GPU-ready formats (DXT5/BC7/ETC2). ( https://github.com/vr-voyage/glb-textures-converter-rust ) Re-encoding textures in advance leads to issues due to different systems having different requirements (BC7 for PC, DXT5 for Quest, ETC2 for Android/iOS, ...). So while this is not blocking me, being able to use LoadImage would benefit me greatly, since I'd be able to create one asset for all the different platforms, without having to manipulate the data beforehand. This request is similar to https://feedback.vrchat.com/feature-requests/p/udon-expose-unityengineimageconversion-class-and-methods but, I only need 'LoadImage'. I don't need to encode pictures in-game. I'd like to note that using the ImageLoader instead is not possible. The image data is embedded inside binary data. So while there's an URL for the binary data, which is then downloaded using the StringLoader, there's no direct URL to the embedded images. The ImageLoader cannot convert local data (i.e. I cannot pass it a byte[]), it only converts data it can download from a valid URL.
1
Load More