I want to use Steam in my project. It works on Windows, but on Mac the application crashes when trying to load Steam after I copy the sdk/redistributable_bin/osx32/libsteam_api.dylib from steamworks_sdk_132.zip to /Users/Shared/UnrealEngine/4.14/Engine/Binaries/Mac/UE4Editor.app/Contents/MacOS:
TRAP_BRKPT at 0x7fff64b97075
Unknown() Address = 0x12b2db570 (filename not found) [in ???]
FOnlineSubsystemSteam::Init() Address = 0x12b243dad [/Users/build/Build/++UE4+Release-4.14+Compile/Sync/Engine/Plugins/Online/OnlineSubsystemSteam/Source/Private/OnlineSubsystemSteam.cpp, line 322] [in UE4Editor-OnlineSubsystemSteam.dylib]
FOnlineFactorySteam::CreateSubsystem(FName) Address = 0x12b281ed9 [/Users/build/Build/++UE4+Release-4.14+Compile/Sync/Engine/Plugins/Online/OnlineSubsystemSteam/Source/Private/OnlineSubsystemModuleSteam.cpp, line 47] [in UE4Editor-OnlineSubsystemSteam.dylib]
FOnlineSubsystemModule::GetOnlineSubsystem(FName) Address = 0x12b14d648 [/Users/build/Build/++UE4+Release-4.14+Compile/Sync/Engine/Plugins/Online/OnlineSubsystem/Source/Private/OnlineSubsystemModule.cpp, line 234] [in UE4Editor-OnlineSubsystem.dylib]
FOnlineSubsystemModule::LoadDefaultSubsystem() Address = 0x12b14bac7 [/Users/build/Build/++UE4+Release-4.14+Compile/Sync/Engine/Plugins/Online/OnlineSubsystem/Source/Private/OnlineSubsystemModule.cpp, line 91] [in UE4Editor-OnlineSubsystem.dylib]
FModuleManager::LoadModuleWithFailureReason(FName, EModuleLoadResult&, bool) Address = 0x10366225b [/Users/build/Build/++UE4+Release-4.14+Compile/Sync/Engine/Source/Runtime/Core/Private/Modules/ModuleManager.cpp, line 485] [in UE4Editor-Core.dylib]
FModuleDescriptor::LoadModulesForPhase(ELoadingPhase::Type, TArray<FModuleDescriptor, FDefaultAllocator> const&, TMap<FName, EModuleLoadResult, FDefaultSetAllocator, TDefaultMapKeyFuncs<FName, EModuleLoadResult, false> >&) Address = 0x10944d308 [/Users/build/Build/++UE4+Release-4.14+Compile/Sync/Engine/Source/Runtime/Projects/Private/ModuleDescriptor.cpp, line 410] [in UE4Editor-Projects.dylib]
FPluginManager::LoadModulesForEnabledPlugins(ELoadingPhase::Type) Address = 0x10945c7f7 [/Users/build/Build/++UE4+Release-4.14+Compile/Sync/Engine/Source/Runtime/Projects/Private/PluginManager.cpp, line 592] [in UE4Editor-Projects.dylib]
FEngineLoop::AppInit() Address = 0x1032a3815 (filename not found) [in UE4Editor]
FEngineLoop::PreInit(wchar_t const*) Address = 0x103289710 (filename not found) [in UE4Editor]
GuardedMain(wchar_t const*) Address = 0x10329d8a1 (filename not found) [in UE4Editor]
-[UE4AppDelegate runGameThread:] Address = 0x1032ab16c (filename not found) [in UE4Editor]
-[FCocoaGameThread main] Address = 0x1034c5526 [/Users/build/Build/++UE4+Release-4.14+Compile/Sync/Engine/Source/Runtime/Core/Private/Mac/CocoaThread.cpp, line 375] [in UE4Editor-Core.dylib]
__NSThread__start__ Address = 0x7fff8e93ae64 (filename not found) [in Foundation]
_pthread_body Address = 0x7fffa011799d (filename not found) [in libsystem_pthread.dylib]
_pthread_body Address = 0x7fffa011791a (filename not found) [in libsystem_pthread.dylib]
thread_start Address = 0x7fffa0115351 (filename not found) [in libsystem_pthread.dylib]
Yes, all the information is present. I doubt that it is a project issue: the same project works fine on Windows, and I have now tried the ShooterGame example with the same result: it crashes when running as standalone with the same error. It happens no matter whether Steam is actually running or not.
So the only step I’ve taken on the Mac to set up Steam is what I described above, I copied the libsteam_api.dylib
Did you guys ensure to have the Online Subsystem Steam plugin enabled in Edit->Plugins?
I haven’t been able to reproduce the crash on my end at this time. If you add that information to your .ini, enable the plugin, and make the changes to include OSS if you’re using a C++ project as detailed in the above guide, it should work.
Would you guys mind providing your Mac specs? At least the OS version would be great.
The plugin is enabled. I’ve just tried again with 14.1, but the issue persists. I’m using El Capitan (10.11.6) on a ~1 year old MacBookPro 13 (2.7 GHz i5, 16 GB RAM, Iris 6100), let me know if more detailed specs would be useful.
Neither your replies nor the linked guide mention anything about having to copy a .dylib file. So just to be clear, is it expected that this step is necessary, and is the Steamworks SDK 132 from Steamworks the correct source for that file? I only gathered that I need to copy the file because of a log message if it is not present:
LogOnline:Display: STEAM: Loading Steam SDK 1.32 LogMac:Warning: dlopen failed: dlopen(/Users/Shared/UnrealEngine/4.14/Engine/Binaries/Mac/UE4Editor.app/Contents/MacOS/libsteam_api.dylib, 5): image not found LogOnline:Warning: STEAM: Steam SDK 1.32 libraries not present at or failed to load!
As far as I understand it, that file is only needed if you plan on using features such as achievements on Steam. What I’d like you to do for now is run through the basic setup process (i.e. adding the necessary information to your .ini file as detailed in the link I posted above and making sure the plugin is enabled). Try this in a clean project and let me know if you still experience the crash.
From there, we can figure out why you’re getting issues when you’re trying to copy over that file, and I’ll continue to test on my end.
Ok, I’ve created a new project, copied the .ini information and activated the steam plugin. Same result as before: when I don’t copy the file, the game starts but but I get the error message I posted above and Steam doesn’t work (I don’t see myself as playing Spacewar). When I copy the file, I get the same crash.
I tried packaging the game and adding it as a Non Steam Game, with the same result as before: I did not have a Steam overlay, couldn’t see or host sessions, and still had the error message in the logs that the libsteam_api.dylib could not be found, however this time with a path inside the built .app.
After copying the dylib from the Steam SDK to the path inside the .app, however, I did not get a crash and could finally join and host sessions! The Steam overlay still doesn’t work but I can live with that for now.
I can create an answer from this and accept it, but I wonder whether this is really the correct (and only) way of getting Steam to work on OS X. In particular, it would be nice to be able to test Steam on Mac without always having to package the game, and to get rid of the manual file copy step.
I’m glad to hear that you’ve gotten it working for the most part now. As for the behavior you’re describing, it does sound strange. I’ll look into this soon and determine if there is a more efficient way to get this set up and if there is potentially even a bug that is interfering.