Unity Netcode join issue between meta android port version and pcvr version of the same game

I am working on a Meta Quest port of my PCVR game. I am testing the multiplayer aspect of it and I am running into this error when attempting to join cross-platform:

Failed to join session TQG4bvK4tra7xpNHj6qJ6j: SessionException - Unexpected exception processing network metadataUnityEngine.Debug (object)SessionManager/d__14 () (at Assets/Scripts/Network/SessionManager.cs:266)Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask2<SessionManager/<JoinSessionById>d__14, bool>:Run () (at ./Library/PackageCache/com.cysharp.unitask@6a18b5d4ef81/Runtime/CompilerServices/StateMachineRunner.cs:313)
System.Runtime.CompilerServices.AsyncTaskMethodBuilder1<Unity.Services.Multiplayer.ISession> (System.Exception)Unity.Services.Multiplayer.WrappedMultiplayerService/d__21 () (at ./Library/PackageCache/com.unity.services.multiplayer@fd9e62928265/Runtime/Multiplayer/WrappedMultiplayerService.cs:85)System.Runtime.CompilerServices.AsyncTaskMethodBuilder1<Unity.Services.Multiplayer.SessionHandler>:SetException (System.Exception)
Unity.Services.Multiplayer.SessionManager/<JoinByIdAsync>d__19:MoveNext () (at ./Library/PackageCache/com.unity.services.multiplayer@fd9e62928265/Runtime/Multiplayer/Session/SessionManager.cs:140)
System.Runtime.CompilerServices.AsyncTaskMethodBuilder1<Unity.Services.Multiplayer.SessionHandler> (System.Exception)Unity.Services.Multiplayer.SessionManager/d__23 () (at ./Library/PackageCache/com.unity.services.multiplayer@fd9e62928265/Runtime/Multiplayer/Session/SessionManager.cs:260)System.Runtime.CompilerServices.AsyncTaskMethodBuilder (System.Exception)Unity.Services.Multiplayer.SessionManager/d__26 () (at ./Library/PackageCache/com.unity.services.multiplayer@fd9e62928265/Runtime/Multiplayer/Session/SessionManager.cs:310)System.Runtime.CompilerServices.AsyncTaskMethodBuilder ()Unity.Services.Multiplayer.SessionManager/d__27 () (at ./Library/PackageCache/com.unity.services.multiplayer@fd9e62928265/Runtime/Multiplayer/Session/SessionManager.cs:332)System.Runtime.CompilerServices.AsyncTaskMethodBuilder ()Unity.Services.Multiplayer.SessionHandler/d__133 () (at ./Library/PackageCache/com.unity.services.multiplayer@fd9e62928265/Runtime/Multiplayer/Session/SessionHandler.cs:800)System.Runtime.CompilerServices.AsyncTaskMethodBuilder ()Unity.Services.Multiplayer.LobbyHandler/d__108 () (at ./Library/PackageCache/com.unity.services.multiplayer@fd9e62928265/Runtime/Multiplayer/Lobby/LobbyHandler.cs:907)System.Runtime.CompilerServices.AsyncTaskMethodBuilder ()Unity.Services.Multiplayer.LobbyHandler/d__73 () (at ./Library/PackageCache/com.unity.services.multiplayer@fd9e62928265/Runtime/Multiplayer/Lobby/LobbyHandler.cs:250)System.Runtime.CompilerServices.AsyncTaskMethodBuilder ()Unity.Services.Lobbies.Internal.LobbyChannel/d__13 () (at ./Library/PackageCache/com.unity.services.multiplayer@fd9e62928265/Runtime/Lobbies/SDK/LobbyUpdates/Internal/LobbyChannel.cs:84)System.Threading.Tasks.TaskCompletionSource`1 (bool)Unity.Services.Wire.Internal.Client/<>c__DisplayClass47_0/<b__0>d () (at ./Library/PackageCache/com.unity.services.wire@2d36cce58c62/Runtime/Centrifuge/Client.cs:680)System.Runtime.CompilerServices.AsyncTaskMethodBuilder ()Unity.Services.Wire.Internal.Client/d__49 () (at ./Library/PackageCache/com.unity.services.wire@2d36cce58c62/Runtime/Centrifuge/Client.cs:734)System.Threading.Tasks.AwaitTaskCo

SessionException: Unexpected exception processing network metadataUnity.Services.Multiplayer.NetworkModule.ProcessNetworkMetadataAsync (System.String metadata) (at ./Library/PackageCache/com.unity.services.multiplayer@fd9e62928265/Runtime/Multiplayer/Modules/Network/NetworkModule.cs:538)Unity.Services.Multiplayer.SessionHandler.InitializeModulesAsync () (at ./Library/PackageCache/com.unity.services.multiplayer@fd9e62928265/Runtime/Multiplayer/Session/SessionHandler.cs:742)Unity.Services.Multiplayer.SessionManager.InitializeModulesAsync (Unity.Services.Multiplayer.SessionHandler session) (at ./Library/PackageCache/com.unity.services.multiplayer@fd9e62928265/Runtime/Multiplayer/Session/SessionManager.cs:305)Unity.Services.Multiplayer.SessionManager.InitializeModulesAsync (Unity.Services.Multiplayer.SessionHandler session) (at ./Library/PackageCache/com.unity.services.multiplayer@fd9e62928265/Runtime/Multiplayer/Session/SessionManager.cs:310)Unity.Services.Multiplayer.SessionManager.SetupSessionAsync (Unity.Services.Multiplayer.ILobbyHandler lobbyHandler, Unity.Services.Multiplayer.BaseSessionOptions options, System.Collections.Generic.Dictionary2[TKey,TValue] sessionProperties) (at ./Library/PackageCache/com.unity.services.multiplayer@fd9e62928265/Runtime/Multiplayer/Session/SessionManager.cs:247)
Unity.Services.Multiplayer.SessionManager.JoinByIdAsync (System.String sessionId, Unity.Services.Multiplayer.JoinSessionOptions sessionOptions) (at ./Library/PackageCache/com.unity.services.multiplayer@fd9e62928265/Runtime/Multiplayer/Session/SessionManager.cs:140)
Unity.Services.Multiplayer.WrappedMultiplayerService.JoinSessionByIdAsync (System.String sessionId, Unity.Services.Multiplayer.JoinSessionOptions sessionOptions) (at ./Library/PackageCache/com.unity.services.multiplayer@fd9e62928265/Runtime/Multiplayer/WrappedMultiplayerService.cs:85)
SessionManager.JoinSessionById (System.String sessionId) (at Assets/Scripts/Network/SessionManager.cs:237)
UnityEngine.Debug:LogException(Exception)
<JoinSessionById>d__14:MoveNext() (at Assets/Scripts/Network/SessionManager.cs:267)
Cysharp.Threading.Tasks.CompilerServices.AsyncUniTask2() (at ./Library/PackageCache/com.cysharp.unitask@6a18b5d4ef81/Runtime/CompilerServices/StateMachineRunner.cs:313)System.Runtime.CompilerServices.AsyncTaskMethodBuilder1:SetException(Exception)
Unity.Services.Multiplayer.<JoinSessionByIdAsync>d__21:MoveNext() (at ./Library/PackageCache/com.unity.services.multiplayer@fd9e62928265/Runtime/Multiplayer/WrappedMultiplayerService.cs:85)
System.Runtime.CompilerServices.AsyncTaskMethodBuilder1(Exception)Unity.Services.Multiplayer.d__19() (at ./Library/PackageCache/com.unity.services.multiplayer@fd9e62928265/Runtime/Multiplayer/Session/SessionManager.cs:140)System.Runtime.CompilerServices.AsyncTaskMethodBuilder1:SetException(Exception)
Unity.Services.Multiplayer.<SetupSessionAsync>d__23:MoveNext() (at ./Library/PackageCache/com.unity.services.multiplayer@fd9e62928265/Runtime/Multiplayer/Session/SessionManager.cs:260)
System.Runtime.CompilerServices.AsyncTaskMethodBuilder:SetException(Exception)
Unity.Services.Multiplayer.<InitializeModulesAsync>d__26:MoveNext() (at ./Library/PackageCache/com.unity.services.multiplayer@fd9e62928265/Runtime/Multiplayer/Session/SessionManager.cs:310)
System.Runtime.CompilerServices.AsyncTaskMethodBuilder:SetResult()
Unity.Services.Multiplayer.<CleanupSessionAsync>d__27:MoveNext() (at ./Library/PackageCache/com.unity.services.multiplayer@fd9e62928265/Runtime/Multiplayer/Session/SessionManager.cs:332)
System.Runtime.CompilerServices.AsyncTaskMethodBuilder:SetResult()
Unity.Services.Multiplayer.<LeaveAsync>d__133:MoveNext() (at ./Library/PackageCache/com.unity.services.multiplayer@fd9e62928265/Runtime/Multiplayer/Session/SessionHandler.cs:800)
System.Runtime.CompilerServices.AsyncTaskMethodBuilder:SetResult()
Unity.Services.Multiplayer.<ResetAsync>d__108:MoveNext() (at ./Library/PackageCache/com.unity.services.multiplayer@fd9e62928265/Runtime/Multiplayer/Lobby/LobbyHandler.cs:907)
System.Runtime.CompilerServices.AsyncTaskMethodBuilder:SetResult()
Unity.Services.Multiplayer.<LobbyUnsubscribeCallbacksAsync>d__73:MoveNext() (at ./Library/PackageCache/com.unity.services.multiplayer@fd9e62928265/Runtime/Multiplayer/Lobby/LobbyHandler.cs:250)
System.Runtime.CompilerServices.AsyncTaskMethodBuilder:SetResult()
Unity.Services.Lobbies.Internal.<UnsubscribeAsync>d__13:MoveNext() (at ./Library/PackageCache/com.unity.services.multiplayer@fd9e62928265/Runtime/Lobbies/SDK/LobbyUpdates/Internal/LobbyChannel.cs:84)
System.Threading.Tasks.TaskCompletionSource1(Boolean)Unity.Services.Wire.Internal.<b__0>d() (at ./Library/PackageCache/com.unity.services.wire@2d36cce58c62/Runtime/Centrifuge/Client.cs:680)System.Runtime.CompilerServices.AsyncTaskMethodBuilder()Unity.Services.Wire.Internal.d__49() (at ./Library/PackageCache/com.unity.services.wire@2d36cce58c62/Runtime/Centrifuge/Client.cs:734)System.Runtime.CompilerServices.AsyncTaskMethodBuilder1:SetResult(Reply)
Unity.Services.Wire.Internal.<SendCommandAsync>d__27:MoveNext() (at ./Library/PackageCache/com.unity.services.wire@2d36cce58c62/Runtime/Centrifuge/Client.cs:151)
System.Runtime.CompilerServices.AsyncTaskMethodBuilder1(Reply)Unity.Services.Wire.Internal.d__6() (at ./Library/PackageCache/com.unity.services.wire@2d36cce58c62/Runtime/Centrifuge/CommandManager.cs:67)System.Threading.Tasks.TaskCompletionSource`1(Reply)Unity.Services.Wire.Internal.CommandManager(Reply) (at ./Library/PackageCache/com.unity.services.wire@2d36cce58c62/Runtime/Centrifuge/CommandManager.cs:90)Unity.Services.Wire.Internal.Client(Reply) (at ./Library/PackageCache/com.unity.services.wire@2d36cce58c62/Runtime/Centrifuge/Client.cs:611)Unity.Services.Wire.Internal.Client(Byte[]) (at ./Library/PackageCache/com.unity.services.wire@2d36cce58c62/Runtime/Centrifuge/Client.cs:344)Unity.Services.Wire.Internal.<>c__DisplayClass53_0:b__0() (at ./Library/PackageCache/com.unity.services.wire@2d36cce58c62/Runtime/Centrifuge/Client.cs:753)UnityEngine.UnitySynchronizationContext()

It does not matter which platform is hosting (android meta quest or windows pcvr), the error is the same on the joining side.

All my package versions are the same, the meta port is the same project as the pcvr version except with reduced textures at the moment.

Joining between meta port versions works fine, regardless if one of the clients the its run via editor on the pc.

Anyone have ideas with how to proceed with this issue?

Meaning transport settings are guaranteed to be the same?

What about Mono vs IL2CPP? Since Android is built with IL2CPP you should do the same with the PC version so they are compatible on the binary/backend level.

If that’s not it, try with managed code stripping set to disabled or minimal (if disabled is unavailable). Just a hunch because of the metadata issue, it could indicate a reflection issue where some type/method got stripped from one platform’s build.

And for testing be sure to use a development build. This might provide more details.

Hi @SpaceOwlGames,
Can you provide this additional information?

  • The manifest file (so we can see what various package versions you are using).
  • The version of Unity you are using.
  • The version of Android OS you are using.