I’m making a User Generated Content-plugin and need to load Steamworks to get access the ISteamUGC interface. As OnlineSubsystemSteam and other engine plugins use the SteamShared module for loading Steamworks, I would like to utilize it as well as it seems flexible. However, attempting to use the FSteamSharedModule class results in a crash on startup even with functions like FSteamSharedModule::IsAvailable which shouldn’t be dependent on the module being loaded.
The error logs sadly does not spit out anything meaningful. Any clues? UUGCSubsystem::Initialize shouldn’t even be called before play is pressed in the editor…
UGCSubsystem.h:
#include "UGCSubsystem.h"
#include "SteamSharedModule.h"
THIRD_PARTY_INCLUDES_START
#include "steam/steam_api.h"
#include "steam/isteamugc.h"
THIRD_PARTY_INCLUDES_END
void UUGCSubsystem::Initialize(FSubsystemCollectionBase& Collection)
{
Super::Initialize(Collection);
if (FSteamSharedModule::IsAvailable())
{
UE_LOG(LogTemp, Warning, TEXT("test"));
}
UE_LOG(LogTemp, Warning, TEXT("UUGCSubsystem::Initialize"));
}
SteamUGC.Build.cs:
using UnrealBuildTool;
using System.IO;
public class SteamUGC : ModuleRules
{
public SteamUGC(ReadOnlyTargetRules Target) : base(Target)
{
PCHUsage = ModuleRules.PCHUsageMode.UseExplicitOrSharedPCHs;
PublicDependencyModuleNames.AddRange(new string[]{
"Core",
// ... add other public dependencies that you statically link with here ...
});
PrivateDependencyModuleNames.AddRange(new string[]{
"CoreUObject",
"Engine",
"Slate",
"SlateCore",
"Steamworks",
"SteamShared"
// ... add private dependencies that you statically link with here ...
});
AddEngineThirdPartyPrivateStaticDependencies(Target, "Steamworks");
}
}
Log from startup:
[2022.03.23-22.51.09:633][ 0]LogWindows: Looked in: D:\Program Files\Epic Games\UE_5.0\Engine\Binaries\Win64\Android
[2022.03.23-22.51.09:633][ 0]LogWindows: Looked in: D:\Program Files\Epic Games\UE_5.0\Engine\Binaries\Win64\D3D12
[2022.03.23-22.51.09:633][ 0]LogWindows: Looked in: D:\Program Files\Epic Games\UE_5.0\Engine\Binaries\Win64\IOS
[2022.03.23-22.51.09:633][ 0]LogWindows: Looked in: D:\Program Files\Epic Games\UE_5.0\Engine\Binaries\Win64\Linux
[2022.03.23-22.51.09:633][ 0]LogWindows: Looked in: D:\Program Files\Epic Games\UE_5.0\Engine\Binaries\Win64\LinuxArm64
[2022.03.23-22.51.11:463][ 0]Message dialog closed, result: Ok, title: Message, text: Plugin 'SteamUGC' failed to load because module 'SteamUGC' could not be loaded. There may be an operating system error or the module may not be properly set up.
[2022.03.23-22.51.11:463][ 0]LogCore: Engine exit requested (reason: EngineExit() was called)
[2022.03.23-22.51.11:463][ 0]LogStaticMesh: Abandoning remaining async distance field tasks for shutdown
[2022.03.23-22.51.11:463][ 0]LogStaticMesh: Abandoning remaining async card representation tasks for shutdown