Has anyone been able to get Online Subsystem Steam to work on a mac (Apple Silicon) in UE5.3.1?

I’ve followed the steps in the official documentation to set it up: Online Subsystem Steam Interface in Unreal Engine | Unreal Engine 5.3 Documentation

But no matter what I do, I keep getting this error in the log when I try to host a session:

LogOnline: Error: STEAM: Failed to create file: /Users/karl/Desktop/Gamedev/Unreal/DemoGame/Build/Mac/DemoGame.app/Contents/UE/DemoGame/Binaries/Mac/steam_appid.txt
LogOnline: Warning: STEAM: Could not create/update the steam_appid.txt file! Make sure the directory is writable and there isn't another instance using this file
LogOnline: Warning: STEAM: Could not set up the steam environment! Falling back to another OSS.
LogOnline: Warning: STEAM: Steam API failed to initialize!
LogOnline: Display: STEAM: OnlineSubsystemSteam::Shutdown()
2023-10-30 20:43:12.865 DemoGame[20350:180691] [UE] [2023.10.31-00.43.12:865][117]LogOnline: Error: STEAM: Failed to create file: /Users/karl/Desktop/Gamedev/Unreal/DemoGame/Build/Mac/DemoGame.app/Contents/UE/DemoGame/Binaries/Mac/steam_appid.txt
2023-10-30 20:43:12.865 DemoGame[20350:180691] [UE] [2023.10.31-00.43.12:865][117]LogOnline: Warning: STEAM: Could not create/update the steam_appid.txt file! Make sure the directory is writable and there isn't another instance using this file
2023-10-30 20:43:12.865 DemoGame[20350:180691] [UE] [2023.10.31-00.43.12:865][117]LogOnline: Warning: STEAM: Could not set up the steam environment! Falling back to another OSS.
2023-10-30 20:43:12.865 DemoGame[20350:180691] [UE] [2023.10.31-00.43.12:865][117]LogOnline: Warning: STEAM: Steam API failed to initialize!
2023-10-30 20:43:12.865 DemoGame[20350:180691] [UE] [2023.10.31-00.43.12:865][117]LogOnline: Display: STEAM: OnlineSubsystemSteam::Shutdown()
1 Like

The solution was to remove the Development Entitlements so that the game is built without the Sandboxing flag which limit its permissions, such as reading and writing the steam_appid.txt among other things.

Project Settings > Xcode > Mac: Development Entitlements > Remove the value

9 Likes

I don’t know how you figured this out, but you solved my problem as well! Windows I could host / join, Mac it couldn’t even find the subsystem let alone search / join one.

Thank you!!!

How did you figure that out ? This is life saving thank you ! Now, the clients work

@AkenOo @slashtom After a couple of weeks of debugging it hit me that it might be related to Apple’s sandboxing technology (I’m an app developer). I’m happy it worked for you guys too!

First of all thanks immensely for posting this entitlements fix. I would have never progressed without it.

So now I’m in situation where I can successfully create sessions, but when I try to join a Mac session the connection succeeds, however the destination map never loads and the client is never spawned. Additionally the Mac can connect to PCs and PCs can connect with each other, it’s just that Macs can’t successfully host clients on their map. My guess is it’s related to the server travel issues that many have been experiencing.

Just putting this out there for the record and hoping someone has a recommendation to proceed. Here’s my DefaultEngine.in settings (derived from the AdvancedSessions Discord) if anyone wants to take a look…

[/Script/Engine.GameEngine]
!NetDriverDefinitions=ClearArray
+NetDriverDefinitions=(DefName=“GameNetDriver”,DriverClassName=“/Script/SteamSockets.SteamSocketsNetDriver”,DriverClassNameFallback=“OnlineSubsystemUtils.IpNetDriver”)

[/Script/OnlineSubsystemSteam.SteamNetDriver]
NetConnectionClassName=“/Scripts/SteamSockets.SteamSocketsNetConnection”

[OnlineSubsystem]
bHasVoiceEnabled=true
DefaultPlatformService=Steam

[OnlineSubsystemSteam]
bEnabled=True
bUseSteamNetworking=True
SteamDevAppId=480