Hi, i downloaded Multiplayer Shootout example from launcher and just enabled steam, to do it i followed rama’s guide and i have to note, that in empty 2d side scroller project steam overlay works fine on shift + tab, but! when i enabled steam in Multiplayer Shootout in:
Config/DefaultEngine.ini
Target.cs
Build.CS
and packaged game i get error
“failed to create session”
when trying host a game
from this point i’m really confused what’s wrong, since steam overlay doesn’t appear in this packaged example for any reason, instead of empty 2d side scroller!
to enable steam in your installed engine follow rama’s guide and don’t forget put steam sdk into engine folder called “thirdparty”
if you have time, please try my way or download ready to go archives and help me find out wtf is wrong
p.s. when running this example from editor in standalone mode hosting game work fine and i see my steam name!
error appears at “MyGameInstance” blueprint, “HostGameEvent”, “Create Session” - for any reason it return failure, but why? how can i find what behind this blueprint function in C++? because then i probably can do some kind of debugging right from C++
seems i found, it’s in
CreateSessionsCallbackProxy.h
// Creates a session with the default online subsystem
UFUNCTION(BlueprintCallable, meta=(BlueprintInternalUseOnly = “true”, WorldContext=“WorldContextObject”), Category = “Online|Session”)
static UCreateSessionCallbackProxy* CreateSession(UObject* WorldContextObject, class APlayerController* PlayerController, int32 PublicConnections, bool bUseLAN);
and in CreateSessionsCallbackProxy.cpp
UCreateSessionCallbackProxy* UCreateSessionCallbackProxy::CreateSession(UObject* WorldContextObject, class APlayerController* PlayerController, int32 PublicConnections, bool bUseLAN)
{
UCreateSessionCallbackProxy* Proxy = NewObject<UCreateSessionCallbackProxy>();
Proxy->PlayerControllerWeakPtr = PlayerController;
Proxy->NumPublicConnections = PublicConnections;
Proxy->bUseLAN = bUseLAN;
Proxy->WorldContextObject = WorldContextObject;
return Proxy;
}
any idea why can it fail in packaged and doesn’t in standalone?
futher investigation gave me idea check log of running packaged game and here it is
steam online subsystem wasn’t inited
tryed tricky way, linked steam_api.lib into my custom class with
#include “steam_api.h”
#pragma comment(lib, “steam_api64.lib”)
but it didn’t help and same error appears in packaged game
LogModuleManager:Warning: ModuleManager: Module ‘onlineSubsystemSteam’ not found - its StaticallyLinkedModuleInitializers function is null
futher debugging around lead me to
build.h
#ifndef IS_MONOLITHIC
#define IS_MONOLITHIC 1 // for auto-complete
#error UBT should always define IS_MONOLITHIC to be 0 or 1
#endif
in ModuleManager.cpp there’s
#if IS_MONOLITHIC
else
{
// Monolithic builds that do not have the initializer were not found during the build step, so return FileNotFound
// (FileNotFound is an acceptable error in some case - ie loading a content only project)
UE_LOG(LogModuleManager, Warning, TEXT( “ModuleManager: Module ‘%s’ not found - its StaticallyLinkedModuleInitializers function is null.” ), *InModuleName.ToString() );
OutFailureReason = EModuleLoadResult::FileNotFound;
}
#endif
so why OnlineSubsystem fails to load?
i have to note again for clarification:
in new empty 2d side scroller - steam work
in Multiplayer Shootout standalone from UE editor - steam work
in Multiplayer Shootout packaged - steam don’t work
solved, just miss
DynamicallyLoadedModuleNames.Add(“OnlineSubsystemSteam”);
in build.cs, but how it happened i don’t know, just facepalm
This is a problem for me now, i did the adding of dynamically loading the modules, but it didint solve it, still a problem.