Intel Mac (10.15.2) Can't Start Game as Host

Options

My Computer: late 2013 MacBook Pro OSX: 10.15.2

Working on moving my game over from Bolt to Fusion. I can run single player mode, but I'm running into an error with nano sockets when calling StartGame() with GameMode.Host.

I've followed the installation instructions from the website (unchecking the M1 nano sockets inclusion) but I'm still seeing this error:

DllNotFoundException: nanosockets assembly:<unknown assembly> type:<unknown type> member:(null)
Fusion.Sockets.NetAddress.CreateFromIpPort (System.String ip, System.UInt16 port) (at Fusion/Fusion.Sockets/NetAddress.cs:119)
Fusion.Sockets.NetAddress.Any (System.UInt16 port) (at Fusion/Fusion.Sockets/NetAddress.cs:98)
Fusion.NetworkRunner.StartGameModeCloud (Fusion.StartGameArgs args) (at Fusion/Fusion.Runtime/Runner/NetworkRunner.Matchmaking.cs:728)
UnityEngine.Debug:LogException(Exception)
Fusion.FusionUnityLogger:LogException(String, DefaultContext&, Exception) (at Assets/Photon/Fusion/Scripts/FusionUnityLogger.cs:139)
Fusion.Log:Exception(NetworkRunner, Exception) (at Fusion/Fusion.Common/Log.cs:114)
Fusion.<ShutdownWithException>d__295:MoveNext() (at Fusion/Fusion.Runtime/Runner/NetworkRunner.Matchmaking.cs:803)
System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1:Start(<ShutdownWithException>d__295&)
Fusion.NetworkRunner:ShutdownWithException(Exception)
Fusion.<StartGameModeCloud>d__294:MoveNext() (at Fusion/Fusion.Runtime/Runner/NetworkRunner.Matchmaking.cs:781)
System.Threading.Tasks.TaskCompletionSource`1:TrySetResult(Int16)
Fusion.Photon.Realtime.Async.OperationHandler:SetResult(Int16) (at Fusion/Fusion.Realtime/RealtimeExtensions/OperationHandler.cs:34)
Fusion.Photon.Realtime.Async.OperationHandler:OnJoinedRoom() (at Fusion/Fusion.Realtime/RealtimeExtensions/OperationHandler.cs:122)
Fusion.Photon.Realtime.MatchMakingCallbacksContainer:OnJoinedRoom() (at Fusion/Fusion.Realtime/Realtime/LoadBalancingClient.cs:4177)
Fusion.Photon.Realtime.LoadBalancingClient:OnEvent(EventData) (at Fusion/Fusion.Realtime/Realtime/LoadBalancingClient.cs:3227)
ExitGames.Client.Photon.PeerBase:DeserializeMessageAndCallback(StreamBuffer) (at C:/Dev/photon-sdk-dotnet/PhotonDotNet/PeerBase.cs:899)
ExitGames.Client.Photon.EnetPeer:DispatchIncomingCommands() (at C:/Dev/photon-sdk-dotnet/PhotonDotNet/EnetPeer.cs:583)
ExitGames.Client.Photon.PhotonPeer:DispatchIncomingCommands() (at C:/Dev/photon-sdk-dotnet/PhotonDotNet/PhotonPeer.cs:1771)
ExitGames.Client.Photon.PhotonPeer:Service() (at C:/Dev/photon-sdk-dotnet/PhotonDotNet/PhotonPeer.cs:1685)

On the nanosockets intel package, I checked the "Load on startup" box and applied the changes, just to see if Unity was actually loading the library and this is what came out of the log:

Plugins: Couldn't open Assets/Photon/Fusion/Plugins/NanoSockets/macOS/Intel/libnanosockets.dylib, error: dlopen(Assets/Photon/Fusion/Plugins/NanoSockets/macOS/Intel/libnanosockets.dylib, 2): Symbol not found: ___darwin_check_fd_set_overflow
 Referenced from: Assets/Photon/Fusion/Plugins/NanoSockets/macOS/Intel/libnanosockets.dylib (which was built for Mac OS X 11.0)
 Expected in: /usr/lib/libSystem.B.dylib
 in Assets/Photon/Fusion/Plugins/NanoSockets/macOS/Intel/libnanosockets.dylib
UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool&) 

I'm noticing this line in particular "which was built for Mac OS X 11.0", do I need to upgrade my machine and the lib will open properly? Does this also imply that current Mac system requirements are OS X 11+?

Any help would be greatly appreciated

Best Answer

  • Mattingus
    Mattingus
    edited July 2022 Answer ✓
    Options

    UPDATE:

    updated OSx from 10.15 -> 11.0 and the problem went away, this is due to the following function within OS X:

    ___darwin_check_fd_set_overflow
    

    This was added in OS X 11, which means technically there is an OS X requirement for fusion to run properly

Answers

  • Mattingus
    Mattingus
    edited July 2022 Answer ✓
    Options

    UPDATE:

    updated OSx from 10.15 -> 11.0 and the problem went away, this is due to the following function within OS X:

    ___darwin_check_fd_set_overflow
    

    This was added in OS X 11, which means technically there is an OS X requirement for fusion to run properly