SDK Bug & Feature Requests

Please check out the following rules and use the provided template when posting a bug report! Off-topic posts will be deleted.http://bit.ly/vrchat-bug-reports
[1854] In local world testing, launching multiple clients causes the second and subsequent clients to freeze on a black screen
〇 Environment OS: Windows 11 Pro 25H2 Build 26200.8457 Unity: 2022.3.22f1 VRCSDK: 3.10.3 〇 Summary When performing local world tests using Build & Test Your World or Test Your Last Build, launching multiple clients simultaneously may cause the second and subsequent clients to become stuck on a black screen. Launching clients with a delay between each instance can partially mitigate the issue. 〇 Steps to Reproduce Open the VRChat SDK in Unity. Run Build & Test Your World or Test Your Last Build. Launch multiple clients at the same time. The second and subsequent clients may remain stuck on a black screen and fail to proceed. 〇 Additional Reproduction Conditions Based on investigation, this issue appears to be indirectly related to log output. The issue occurs consistently under the following conditions: Disable debug log output for the client. Launch the first client. Launch the second and subsequent clients. The additional clients will consistently become stuck on a black screen. 〇 Possibly Related Issue A potentially related issue, also suspected to be caused by log output, was observed: When two clients are running in a local test and are in the same world, performing a rejoin from one client causes VRChat to crash. After this occurs, VRChat will continue to crash consistently when rejoining the same world, even when running only a single client. This issue can be resolved by deleting the log files in the following directory: %HOMEPATH%\AppData\LocalLow\VRChat\VRChat 〇 Suspected Cause It is likely that a deadlock or similar resource contention involving log files is occurring, causing clients to freeze or crash. 〇 Expected Behavior All clients should launch and enter the world normally when running multi-client local tests. Rejoining a world should not cause crashes regardless of log file state. 〇 Actual Behavior The second and subsequent clients may freeze on a black screen when launched simultaneously. Under certain conditions, rejoining a world causes VRChat to crash persistently until log files are deleted. 〇 Notes This issue significantly impacts local multi-client testing workflows and should be addressed with high priority.
3
·
Bug Report
·
tracked
Type referenced by 'VRCUdonUdonBehaviourArray' could not be resolved.
Getting lots of these errors in the unity console. Here are some simple steps to reproduce the errors. Create new unity project in 2019.4.31f1 import latest VRC SDK for worlds (VRCSDK3-WORLD-2021.11.24.16.19_Public) open Udon Example Scene select any object in the hierarchy create a new udon behavior component open the udon graph add a variable for an UdonBehavior[] add a reference to the new variable in the graph add the array get graph node TypeResolverException: Type referenced by 'VRCUdonUdonBehaviourArray' could not be resolved. VRC.Udon.UAssembly.Assembler.UAssemblyAssembler.CreateUninitializedDataVariable (System.String dataVariableName, System.String typeString) (at <b45aa2c5f8b540baba60e42ec85f5c1c>:0) VRC.Udon.UAssembly.Assembler.UAssemblyAssembler.VisitDataDeclarationStmt (VRC.Udon.UAssembly.Parser.Stmt+DataDeclaration stmt) (at <b45aa2c5f8b540baba60e42ec85f5c1c>:0) VRC.Udon.UAssembly.Parser.Stmt+DataDeclaration.Accept (VRC.Udon.UAssembly.Parser.Stmt+IVisitor visitor) (at <b45aa2c5f8b540baba60e42ec85f5c1c>:0) VRC.Udon.UAssembly.Assembler.UAssemblyAssembler.VisitBlockStmt (VRC.Udon.UAssembly.Parser.Stmt+Block stmt) (at <b45aa2c5f8b540baba60e42ec85f5c1c>:0) VRC.Udon.UAssembly.Parser.Stmt+Block.Accept (VRC.Udon.UAssembly.Parser.Stmt+IVisitor visitor) (at <b45aa2c5f8b540baba60e42ec85f5c1c>:0) VRC.Udon.UAssembly.Assembler.UAssemblyAssembler.Process (VRC.Udon.UAssembly.Parser.Stmt statement) (at <b45aa2c5f8b540baba60e42ec85f5c1c>:0) VRC.Udon.UAssembly.Assembler.UAssemblyAssembler.Assemble (System.String assembly) (at <b45aa2c5f8b540baba60e42ec85f5c1c>:0) VRC.Udon.EditorBindings.UdonEditorInterface.Assemble (System.String assembly) (at <1963e50294534d109b013282bf0faf6c>:0) VRC.Udon.Editor.UdonEditorManager.Assemble (System.String assembly) (at Assets/Udon/Editor/UdonEditorManager.cs:347) VRC.Udon.Editor.ProgramSources.UdonAssemblyProgramAsset.AssembleProgram () (at Assets/Udon/Editor/ProgramSources/UdonAssemblyProgram/UdonAssemblyProgramAsset.cs:82) UnityEngine.Debug:LogException(Exception) VRC.Udon.Editor.ProgramSources.UdonAssemblyProgramAsset:AssembleProgram() (at Assets/Udon/Editor/ProgramSources/UdonAssemblyProgram/UdonAssemblyProgramAsset.cs:90) VRC.Udon.Editor.ProgramSources.UdonAssemblyProgramAsset:RefreshProgramImpl() (at Assets/Udon/Editor/ProgramSources/UdonAssemblyProgram/UdonAssemblyProgramAsset.cs:36) VRC.Udon.Editor.ProgramSources.UdonGraphProgram.UdonGraphProgramAsset:RefreshProgramImpl() (at Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UdonGraphProgramAsset.cs:62) VRC.Udon.Editor.ProgramSources.UdonProgramAsset:RefreshProgram() (at Assets/Udon/Editor/ProgramSources/UdonProgram/UdonProgramAsset.cs:106) VRC.Udon.Editor.ProgramSources.UdonProgramAsset:RunEditorUpdate(UdonBehaviour, Boolean&) (at Assets/Udon/Editor/ProgramSources/UdonProgram/UdonProgramAsset.cs:82) VRC.Udon.UdonBehaviour:RunEditorUpdate(Boolean&) (at Assets/Udon/UdonBehaviour.cs:200) VRC.Udon.Editor.UdonBehaviourEditor:OnInspectorGUI() (at Assets/Udon/Editor/UdonBehaviourEditor.cs:164) UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr) NullReferenceException: Object reference not set to an instance of an object VRC.Udon.Editor.ProgramSources.UdonProgramAsset.DrawInteractionArea (VRC.Udon.UdonBehaviour udonBehaviour) (at Assets/Udon/Editor/ProgramSources/UdonProgram/UdonProgramAsset.cs:122) VRC.Udon.Editor.ProgramSources.UdonGraphProgram.UdonGraphProgramAsset.DrawProgramSourceGUI (VRC.Udon.UdonBehaviour udonBehaviour, System.Boolean& dirty) (at Assets/Udon/Editor/ProgramSources/UdonGraphProgram/UdonGraphProgramAsset.cs:48) VRC.Udon.Editor.ProgramSources.UdonProgramAsset.RunEditorUpdate (VRC.Udon.UdonBehaviour udonBehaviour, System.Boolean& dirty) (at Assets/Udon/Editor/ProgramSources/UdonProgram/UdonProgramAsset.cs:85) VRC.Udon.UdonBehaviour.RunEditorUpdate (System.Boolean& dirty) (at Assets/Udon/UdonBehaviour.cs:200) VRC.Udon.Editor.UdonBehaviourEditor.OnInspectorGUI () (at Assets/Udon/Editor/UdonBehaviourEditor.cs:164) UnityEditor.UIElements.InspectorElement+<>c__DisplayClass58_0.<CreateIMGUIInspectorFromEditor>b__0 () (at <a259d3c004024353a2c217da97495055>:0) UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr)
2
VRCTween doesn't refresh duration in speed-based mode with ChangeEndValue()
When creating a tween with VRCTweenHandle.SetSpeedBased() , there is no way to call VRCTweenHandle.ChangeEndValue() and have the tween refresh its duration. This is due to the fact that internally dotween doesn't call Tween.DOStartupDurationBased() within Tween.DoChangeEndValue() unless a duration is specified - because VRCTween doesn't provide a duration, it calls it with -1, which means that it never calls the duration update. Additionally, because VRCTweenHandle.SetDuration() sets the duration directly via reflection, there is no chance for it to recalculate the tween, and VRCTweenHandle.SetSpeedBased() - and thus TweenSettingsExtensions.SetSpeedBased() - this only sets it so other hooks update their values, which means that the value is never propagated. This renders speed-based tween values useless for continuous motion. Sample code to prove it: class Blah : UdonSharpBehaviour { public float value; private VRCTweenHandle _handle; public void _FadeUp() { _TweenTo(1, 0.1f); } public void _FadeDown() { _TweenTo(0, 0.1f); } public void _TweenTo(float target, float speed) { if (_handle.IsActive) { _handle.ChangeEndValue(target, true) .SetDuration(speed) .SetSpeedBased(); } else { _handle = VRCTween.TweenFloat(value, target, speed, this, nameof(value), "_DummyCall", VRCTweenEase.Linear) .SetSpeedBased(); } } } If you trigger _FadeUp and _FadeDown, you will see that if the tween is not freshly created, it will result in it ignoring duration. No matter how you change the ChangeEndValue branch (aside from recalculating the values yourself) you will see it will never result in a consistent transition speed. SDK version is worlds 3.10.4, unity version 2022.3.22f1
1
·
Bug Report
·
tracked
Load More