Report a Bug
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
Title
Details
26
[SDK][862] "Offline Test" option is broken with multiple clients
Please fix multi-client "Offline Testing" or provide a better way to test networking without a full world upload. The SDK provides two buttons for testing. One is for local testing and the other is for full uploads. Local testing, or "Offline Testing", still requires a network connection and also provides an option for the number of clients. While some things appear to work with only one client, when using more than one client, local testing breaks and behavior is unreliable. Since this is built right into the SDK, people believe that it is correct functionality and think that their world is broken, wasting many hours of debugging and more bad testing. Known issues: -Network IK only sends for master -OnPlayerJoined/OnPlayerLeft triggers do not fire -Sitting in stations force all clients to the same position -Object ownership does not act properly between clients -Sometimes only the master can execute ANY triggers -Some clients do not make it to the same instance -Some clients are kicked to home Previous canny relating to multi-client local testing was closed with the response that using the same account for the same instance is not supported. Users are required to log into different accounts. This is not a solution. The general user does not know they are required to have multiple accounts to test their own worlds properly. Multiple accounts can only enter the same world if the world has been fully uploaded. Some users also have a very slow or limited connection and uploading a full world is impractical. https://vrchat.canny.io/bug-reports/p/multi-client-bugs
1
1
VRC_Trigger SecurityException with VRC_AudioBank
■Version: + VRCSDK-2019.12.06.19.26_Public + Unity 20198.4.13f ■Description of the bug: Cannot add Actions in VRC_Trigger when VRC_AudioBank attached in same object. ■Steps to reproduce (how did you encounter the bug?): 1. add some object in empty scene 2. Attach VRC_Trigger and VRC_AudioBank to that object 3. Add OnInteract option to VRC_Trigger 4. If click "+" button under the list, Raise "SecurityException: Unknown type: System.Object" ■Any extra files? (output logs, screenshots): error log paste below: SecurityException: Unknown type: System.Object at VRCSDK2.VRC_Serialization+NetworkSurrogateSelector.GetSurrogate (System.Type type, System.Runtime.Serialization.StreamingContext context, System.Runtime.Serialization.ISurrogateSelector& selector) [0x00022] in <cb6e57278ceb44adb717845689e0dd87>:0 at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.InitSerialize (System.Type objectType, System.Runtime.Serialization.ISurrogateSelector surrogateSelector, System.Runtime.Serialization.StreamingContext context, System.Runtime.Serialization.Formatters.Binary.SerObjectInfoInit serObjectInfoInit, System.Runtime.Serialization.IFormatterConverter converter, System.Runtime.Serialization.SerializationBinder binder) [0x00032] in <e1319b7195c343e79b385cd3aa43f5dc>:0 at System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo.Serialize (System.Type objectType, System.Runtime.Serialization.ISurrogateSelector surrogateSelector, System.Runtime.Serialization.StreamingContext context, System.Runtime.Serialization.Formatters.Binary.SerObjectInfoInit serObjectInfoInit, System.Runtime.Serialization.IFormatterConverter converter, System.Runtime.Serialization.SerializationBinder binder) [0x00006] in <e1319b7195c343e79b385cd3aa43f5dc>:0 at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.WriteArray (System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo objectInfo, System.Runtime.Serialization.Formatters.Binary.NameInfo memberNameInfo, System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo memberObjectInfo) [0x0004d] in <e1319b7195c343e79b385cd3aa43f5dc>:0 at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Write (System.Runtime.Serialization.Formatters.Binary.WriteObjectInfo objectInfo, System.Runtime.Serialization.Formatters.Binary.NameInfo memberNameInfo, System.Runtime.Serialization.Formatters.Binary.NameInfo typeNameInfo) [0x00056] in <e1319b7195c343e79b385cd3aa43f5dc>:0 at System.Runtime.Serialization.Formatters.Binary.ObjectWriter.Serialize (System.Object graph, System.Runtime.Remoting.Messaging.Header[] inHeaders, System.Runtime.Serialization.Formatters.Binary.__BinaryWriter serWriter, System.Boolean fCheck) [0x001d3] in <e1319b7195c343e79b385cd3aa43f5dc>:0 at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize (System.IO.Stream serializationStream, System.Object graph, System.Runtime.Remoting.Messaging.Header[] headers, System.Boolean fCheck) [0x0006e] in <e1319b7195c343e79b385cd3aa43f5dc>:0 at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize (System.IO.Stream serializationStream, System.Object graph, System.Runtime.Remoting.Messaging.Header[] headers) [0x00000] in <e1319b7195c343e79b385cd3aa43f5dc>:0 at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Serialize (System.IO.Stream serializationStream, System.Object graph) [0x00000] in <e1319b7195c343e79b385cd3aa43f5dc>:0 at VRCSDK2.VRC_Serialization.ParameterEncoder (System.Object[] parameters) [0x00034] in <cb6e57278ceb44adb717845689e0dd87>:0 at VRCSDK2.VRC_AudioBank.ProvideEvents () [0x00040] in <cb6e57278ceb44adb717845689e0dd87>:0 at VRCSDK2.VRC_TriggerEditor+<>c__DisplayClass27_0.<RenderTriggerEventsEditor>b__2 (UnityEngine.Rect buttonRect, UnityEditorInternal.ReorderableList list) [0x00143] in G:\Project\Unity\VRCW2018-orbitalbase\Assets\VRCSDK\Dependencies\VRChat\Editor\Components\VRC_TriggerEditor.cs:565 at UnityEditorInternal.ReorderableList+Defaults.DrawFooter (UnityEngine.Rect rect, UnityEditorInternal.ReorderableList list) [0x0012e] in C:\buildslave\unity\build\Editor\Mono\GUI\ReorderableList.cs:115 at UnityEditorInternal.ReorderableList.DoListFooter (UnityEngine.Rect footerRect) [0x0003a] in C:\buildslave\unity\build\Editor\Mono\GUI\ReorderableList.cs:643 at UnityEditorInternal.ReorderableList.DoLayoutList () [0x00085] in C:\buildslave\unity\build\Editor\Mono\GUI\ReorderableList.cs:397 at VRCSDK2.VRC_TriggerEditor.RenderTriggerEventsEditor (UnityEditor.SerializedProperty triggerProperty, System.Int32 idx) [0x000b7] in G:\Project\Unity\VRCW2018-orbitalbase\Assets\VRCSDK\Dependencies\VRChat\Editor\Components\VRC_TriggerEditor.cs:602 at VRCSDK2.VRC_TriggerEditor.RenderTriggers () [0x0014f] in G:\Project\Unity\VRCW2018-orbitalbase\Assets\VRCSDK\Dependencies\VRChat\Editor\Components\VRC_TriggerEditor.cs:223 at VRCSDK2.VRC_TriggerEditor.OnInspectorGUI () [0x002d5] in G:\Project\Unity\VRCW2018-orbitalbase\Assets\VRCSDK\Dependencies\VRChat\Editor\Components\VRC_TriggerEditor.cs:157 at UnityEditor.InspectorWindow.DoOnInspectorGUI (System.Boolean rebuildOptimizedGUIBlock, UnityEditor.Editor editor, System.Boolean wasVisible, UnityEngine.Rect& contentRect) [0x0010b] in C:\buildslave\unity\build\Editor\Mono\Inspector\InspectorWindow.cs:1647 UnityEngine.DebugLogHandler:Internal_LogException(Exception, Object) UnityEngine.DebugLogHandler:LogException(Exception, Object) UnityEngine.Logger:LogException(Exception, Object) UnityEngine.Debug:LogException(Exception) UnityEditor.InspectorWindow:DoOnInspectorGUI(Boolean, Editor, Boolean, Rect&) (at C:\buildslave\unity\build\Editor\Mono\Inspector\InspectorWindow.cs:1654) UnityEditor.InspectorWindow:DrawEditor(Editor[], Int32, Boolean, Boolean&, Rect&) (at C:\buildslave\unity\build\Editor\Mono\Inspector\InspectorWindow.cs:1495) UnityEditor.InspectorWindow:DrawEditors(Editor[]) (at C:\buildslave\unity\build\Editor\Mono\Inspector\InspectorWindow.cs:1330) UnityEditor.InspectorWindow:OnGUI() (at C:\buildslave\unity\build\Editor\Mono\Inspector\InspectorWindow.cs:655) System.Reflection.MonoMethod:InternalInvoke(Object, Object[], Exception&) System.Reflection.MonoMethod:Invoke(Object, BindingFlags, Binder, Object[], CultureInfo) System.Reflection.MethodBase:Invoke(Object, Object[]) UnityEditor.HostView:Invoke(String, Object) (at C:\buildslave\unity\build\Editor\Mono\HostView.cs:342) UnityEditor.HostView:Invoke(String) (at C:\buildslave\unity\build\Editor\Mono\HostView.cs:336) UnityEditor.HostView:InvokeOnGUI(Rect, Rect) (at C:\buildslave\unity\build\Editor\Mono\HostView.cs:302) UnityEditor.DockArea:DrawView(Rect, Rect, Boolean, Boolean, Boolean) (at C:\buildslave\unity\build\Editor\Mono\GUI\DockArea.cs:361) UnityEditor.DockArea:OldOnGUI() (at C:\buildslave\unity\build\Editor\Mono\GUI\DockArea.cs:320) UnityEngine.Experimental.UIElements.IMGUIContainer:DoOnGUI(Event, Matrix4x4, Rect, Boolean) (at C:\buildslave\unity\build\Modules\UIElements\IMGUIContainer.cs:244) UnityEngine.Experimental.UIElements.IMGUIContainer:HandleIMGUIEvent(Event, Matrix4x4, Rect) (at C:\buildslave\unity\build\Modules\UIElements\IMGUIContainer.cs:438) UnityEngine.Experimental.UIElements.IMGUIContainer:HandleIMGUIEvent(Event) (at C:\buildslave\unity\build\Modules\UIElements\IMGUIContainer.cs:421) UnityEngine.Experimental.UIElements.IMGUIContainer:HandleEvent(EventBase) (at C:\buildslave\unity\build\Modules\UIElements\IMGUIContainer.cs:401) UnityEngine.Experimental.UIElements.EventDispatcher:ProcessEvent(EventBase, IPanel) (at C:\buildslave\unity\build\Modules\UIElements\EventDispatcher.cs:511) UnityEngine.Experimental.UIElements.EventDispatcher:Dispatch(EventBase, IPanel, DispatchMode) (at C:\buildslave\unity\build\Modules\UIElements\EventDispatcher.cs:307) UnityEngine.Experimental.UIElements.BaseVisualElementPanel:SendEvent(EventBase, DispatchMode) (at C:\buildslave\unity\build\Modules\UIElements\Panel.cs:176) UnityEngine.Experimental.UIElements.UIElementsUtility:DoDispatch(BaseVisualElementPanel) (at C:\buildslave\unity\build\Modules\UIElements\UIElementsUtility.cs:245) UnityEngine.Experimental.UIElements.UIElementsUtility:ProcessEvent(Int32, IntPtr) (at C:\buildslave\unity\build\Modules\UIElements\UIElementsUtility.cs:68) UnityEngine.GUIUtility:ProcessEvent(Int32, IntPtr) (at C:\buildslave\unity\build\Modules\IMGUI\GUIUtility.cs:179)
0
58
SetMaterial action use wrong material named similarly
in progress
SetMaterial action use wrong material in some cases. It depends on how materials named. * Reproduce 100% if scene data is so * You can see at wrld_2d141628-bab5-461d-b0ff-7c81e1a0ebb0 * Tested with client 2018.3.2 built636, SDK VRCSDK-2018.10.02.10.29_Public REPRODUCE STEPS: -------------------- 1. Create new world (Create new project, make floor, add VRC_SceneDescriptor, assign Spawns point). 2. Create materials 2-1. Create two materials in diffrent folder. 2-2. Name these equal name. (Ex. "f1/Mat.mat", "f2/Mat.mat") 2-3. Change albedo color as visually identifiable. (Ex. Red to "f1/Mat.mat", Blue to "f2/Mat.mat") 2-4. Create two objects and assign each materials. (This step is for ensuring materials available in DynamicMaterials of VRC_SceneDescriptor. I used spheres in following screenshot.) 3. Setup SetMatrial action 3-1. Create two objects. Name t1 and t2. (I used cubes in screenshots.) 3-2. Setup VRC_Trigger > OnInteract > SetMatrial to self. And use each created material for material parameter of the action 4. Test Expected behaviour: Interaction with t1 changes t1 material to "f1/Mat.mat". And, Interaction with t2 changes t2 material to "f2/Mat.mat". Actual result: t1 and t2 change to identical material. 5. Additional test 5-1. Change material name of that is not appeared actually in privious test. Add characters to the tail of original name. (ex. "Mat111.mat") 5-2. Setup VRC_Trigger again. (This step need because VRC_Trigger doesn't follow material renaming.) 5-3. Test. The result doen't change. This means equal name is not true source of this issue. (If it is not reproduced. Try exchange materials name. It depends on reordering DynamicMaterials when SDK builds world. I couldn't get ordering rule enabling 100% reproduce.) MY ANALYSIS: -------------------- I guess the runtime behavior of Set Material action as follows: 1. Extract parameter string from SetMaterial action. Check it begins with "Assets/". If so, continue. 2. Remove charcters from beginning to last "/" . 3. Iterate DynamicMaterials of VRC_SceneDescriptor from head, and check if its material name (not include path and ".mat" extension) matches head of the string of step 2. If it matches, use that material. I think it should also use folder names section of specified asset path string. And of course, it should compare entire string. SCREENSHOTS AND LOG: -------------------- This is result of additional test. 1. f1/Mat.mat is actually red. 2. f2/Mat111.mat is actually bule. 3. Both SetMaterial use f1/Mat.mat Triggers actually use f1/Mat.mat and f2/Mat111.mat. > 2018.10.03 12:19:54 Log - [VRC_TriggerInternal] 15.12996 t1 via OnInteract executing [SetMaterial (False, 0.000, 0, "t1", Assets/iwsd_vrc/Issues/set-material-to-unexpected/Reproset/f1/Mat.mat, 0)] > 2018.10.03 12:19:55 Log - [VRC_TriggerInternal] 15.6973 t2 via OnInteract executing [SetMaterial (False, 0.000, 0, "t2", Assets/iwsd_vrc/Issues/set-material-to-unexpected/Reproset/f2/Mat111.mat, 0)] (Recently we had software version up. So this screenshots aren't taken with latest software. But I could reproduce with latest. It's same.) WORKAROUND -------------------- Name materials uniquely with long name. Don't use a name which matches the head of another material name. ABSTRACT IN JAPANESE -------------------- 概要 SetMaterial アクションが間違ったマテリアルを使う事がある。起こるかどうかはマテリアルの名前の付け方に依存している。 マテリアル選択のアルゴリズムはおそらく次のようになっている。 1. SetMaterial の文字列を取り出す。先頭が「Assets/」であることを確認する 2. 文字列の先頭から最後の「/」までを捨てる 3. DynamicMaterials を先頭から見ていき、そのアセットの名前(パスと「.mat」は含まれない)が前述文字列の先頭部分に一致したら、それを使用する。 これにより同名のマテリアルが別のフォルダに入っているとどちらか一方しか使う事が出来ない。そうでない方を使っている SetMaterial は間違ったマテリアルを使用することになる。 この現象を起こすのに名前は完全に同じである必要は無く、使われる方のマテリアルの名前と先頭部分でさえあれば良い。
6
Load More