Open Beta

Post about the current Open Beta. Post logs to Gist/Pastebin! One item per post!
Non-constructive and off-topic posts will be moved or deleted.
[SDK 3.10.4 beta 2] Allows us to ignore a global collider locally
Issue: With the new global collider option users can now mark a PhysBone collider as global to allow it to collide with other peoples PhysBones. This however has one problem, you can't have a global collider that can collide with other peoples PhysBones, while not having it collide with all of your PhysBones. For example Furry Avatars often have PhyBones in their toes, but maybe also want to be able to have a global collider on their foot. Currently those two would interfere with each other and there is no way to prevent that without making the collider local or disabling "Self" on the Phys Bone collision. (Doing so would also prevent hands etc from colliding.) Suggestion: Essentially, allow us to somehow have a global PhysBone collider that we can locally ignore. There are 2 ways I could see this being solved: Have a "Ignore Colliders" list on each PhysBone. If you have a global collider that you don't want it to collide with you can just drag it in there. Similar to PhysBones themself, have "Collide Self" and "Collide Others" toggles on PhysBone colliders when set to global, allowing you to decide if it should only be global for you, others or both. Current Workarounds: Currently you can just have "Allow Self" disabled on the PhysBone and live with you not being able to touch or grab them. If you want to add that back you could add your own finger colliders, etc. just for that PhysBone. Attachments: Here is a screenshot of the "Allow Self" and "Allow Others" settings on PhysBones that could also be implemented for colliders.
1
·
Feature Requests
[1851/Open Beta Follow-up Report] Risks of Desynchronization in Global Gimmick Worlds Due to Serialization Recovery Failures
Context & Positive Data To evaluate the serialization and exception-handling logic introduced in the recent Open Beta build, I conducted a live stress test in a 19-player public instance (Japan Region) of 'Terrors Of Nowhere (ToN)'—a world known for its heavily-loaded global Udon scripts and numerous synchronized dynamic objects. The initial results were highly encouraging. The main runtime thread deadlocks (stalls) and system crashes that frequently plagued previous parallel builds did not occur. The game loop remained entirely stable until the round concluded and the final save code was successfully generated. Furthermore, hardware runtime performance (framerate) was maintained at a level comparable to previous builds, showing no noticeable performance degradation from the serialization overhead. Technical Issue & Log Analysis However, a rigorous analysis of the client output_log revealed a significant underlying side effect at the engine level. During gameplay, when dynamic objects (such as Emerald Coil and maxwell) were awakened from a dormant state, the Udon engine (specifically the Odin Serializer) repeatedly flooded the log with the following exception errors: - Error - [Behaviour] Emerald Coil has no serialization hashes, but is attempting to recover from hibernation. Error - [Behaviour] Unsafe to use serialization recovery data for Emerald Coil. - It is important to note that these errors are not custom diagnostic strings written by the world creator. Rather, they are core system warnings thrown by the VRChat Udon engine itself when it fails to match synchronization hash values while processing the sequential serialization queue. In this Open Beta build, a fatal client freeze was avoided because the engine was designed to drop the unsafe packet and force-transition to the next queue sequence (Skip & Catch) instead of stalling the main thread. Additionally, because the world itself is exceptionally well-engineered with defensive coding to detect dropped packets and re-synchronize (Reset/Sync) via global packets in subsequent frames, the game remained playable with only minor visual/gimmick synchronization errors (desync). Expected Risks of Serialized Standardization While this engine-level packet drop mechanism serves as a reliable workaround for crashes, standardizing this serialization method poses severe risks for the broader ecosystem: Logical Deadlocks in Standard/Legacy Worlds: In the vast majority of standard or abandoned legacy worlds—where exception handling is not as meticulously designed as in 'ToN'—this serialization recovery failure will likely cause world scripts to break entirely upon packet loss. This will result in severe desynchronization (e.g., triggers failing to fire, doors not opening on certain clients), ultimately breaking the logical flow of the instance. Timeline Fragmentation in Cross-Build Environments: While an Open Beta (serialized) client skips corrupted packets to patch its timeline, Live Build (parallel) clients continue to broadcast data at full speed. This accumulated timeline drift will inevitably isolate Beta users, causing the 'ghost instance/individual isolation' phenomenon where a user becomes completely desynced from the rest of the players. Conclusion & Recommendation Mitigating crashes and deadlocks through the current serialization implementation is a commendable temporary workaround. While standardizing serialization might temporarily reduce cross-build fragmentation, it will inherently degrade overall data stability and real-time responsiveness in worlds with extensive global gimmicks. Therefore, the development team should not treat the current serialized approach as the final architecture. To prevent users from having to rely on manual workarounds—such as manually restricting avatar performance ranks or rolling back to the Live Build to avoid desync—we strongly urge the team to transition toward a "controlled parallel optimization architecture." This approach should maintain the robust exception-handling margins (Try-Catch limiters) established in this build while intelligently splitting threads for high-performance concurrency.
0
·
Bug Report
[1851/Feedback/Optimization] Analysis of Loading Logic and Exception Handling after Recent Updates
I am submitting this report not as a critical 'failure' report, but as a technical analysis of the engine's current behavior regarding sequential loading and exception handling. I am impressed by the improved stability despite these minor exceptions. Overview Following the recent updates, VRChat’s loading mechanism has transitioned from parallel processing to sequential loading. I have conducted stress tests to evaluate system responsiveness and stability during world transitions and avatar loading under this new architecture. Key Observations Sequential Loading Stability: Unlike previous versions, no deadlocks or client crashes were observed during world or avatar loading. The engine demonstrates robust management of the loading queue. Exception Handling for High-Complexity Avatars: When loading avatars with complex reference structures (e.g., extensive PhysBones), a significant number of NullReferenceException and Cyclic dependency warnings are triggered. However, the engine successfully manages these by suppressing fatal errors, employing 'warning/skip' logic to continue the process and ensure successful entry into the world without session crashes. Cache Optimization Efficiency: On high-performance systems (utilizing CPU architectures with large L3 caches, such as the 7950X3D), cached assets allow for near-instantaneous processing upon re-entry, resulting in highly efficient loading times despite the sequential processing model. Technical Assessment The observed error logs appear to be side effects of the engine’s defensive routines, prioritizing data integrity and strict loading order verification. The current shift toward 'pragmatic stability'—prioritizing session integrity over immediate parallel speed—is highly effective. While functional stability is maintained, the high frequency of NullReferenceException logs suggests potential for further refinement. Future optimizations targeting an Dependency Graph-based loading scheduler could significantly minimize these logs by resolving execution order conflicts before they trigger exceptions. Conclusion This update has substantially enhanced the platform's reliability and stability. While the current log output is verbose, it confirms that the engine's new defensive architecture is functioning as intended. Continuous optimization of the loading logic to reduce these redundant exceptions will further elevate the technical maturity of the VRChat engine.
0
·
Bug Report
Load More