Download

Multiplayer Shootout packaged example with steam - failed to create session

Hi, i downloaded Multiplayer Shootout example from launcher and just enabled steam, to do it i followed rama’s guide https://wiki.unrealengine.com/Steam,_Using_the_Steam_SDK_During_Development 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!

this is packaged game https://yadi.sk/d/vzSIft84gTgfo
this is whole project with enabled steam https://yadi.sk/d/k4vjiM1sgThQw

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.