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.
Save & Load persistent World Data
World persistency would increase usability since old in-world settings could load automatically when the user re-visits the same world later. As worlds get more and more complex, this is no longer a "nice to have" feature - it is now absolutely needed to make a more complex world playable (such as playing a long story through like "The Devouring" for people who don't stay 4+ hours in a single world in VR or in case VRChat crashes while playing it). But it is also needed for grinding mechanics and worlds where you can build something and farm resources - something we are currently working on. Tl;dr, either VRChat gives us a [StoreToDisk] string datatype (without a weird character limit) that saves to disk when it changes and loads again when the user joins the same world or we'll have to implement our own open-source solution reading debug log files and a third-party application running on people's PCs to send Ctrl+V to the window handle (as other world creators have already done it). But either way, we definitely can't go on without a solution here and the current "ask a VR user to copy+paste a string" is not a good way to do it - especially since it's not crash-safe, so users lose all progress when VRChat disconnects the user randomly. But also since we still don't have a "Copy to clipboard"/"Paste from clipboard" function next to a TextInput field for whatever reason, something that would be extremely useful for VR users in general anyway. Ideally, an instance could also specify to only load the progress from whoever created it, since it's not possible right now to know who's the instance creator in Udon, but that's only a minor follow-up issue.
39
·

in progress

[1123] Udon Objects with Udon Children initialize late despite execution order overrides
To reproduce: Create a behaviour with ExecutionOrder -100000 Create a child of it with another behaviour with no execution order overrides Create a behaviour with ExecutionOrder -100000 and NO child objects as a control Create a new separate behaviour with ExecutionOrder +100000 Add a log to Start() to keep track of it Expected result: Behaviours with -100000 to log first Behaviours with no override to log second Behaviours with +100000 to log third What actually happens: Behaviours with -100000 and NO children log first Behaviours with no override log second Behaviours with +100000 log third Behaviours with -100000 WITH children log fourth Repro world: https://vrchat.com/home/world/wrld_f43e6a53-97c2-4a6b-88af-60612f4b3cce This also creates another large issue If you also try to disable those -100000 objects (with Default children) via the +100000 Start() method - the -100000 behaviour will enter a broken state where it will never initialize or receive any events no matter what. You can toggle them on and off after - no methods will ever fire I have created a test world that illustrates the above: https://vrchat.com/home/world/wrld_06ab5f32-ffbe-44dd-9930-b3b28074fcfd Checking the logs when loading in - you'll see a bunch of objects logging OnEnable (the ones that report withChild False ), and a bunch of Default objects which are children of other -100000 objects. Then they will all get disabled by the +100000 behaviour. Clicking the sphere enables those -100000 parents, but they never log either Start() or OnEnable
2
·

tracked

Load More