Using EOS as the default OSS

I have been messing about with the ‘preview’ version of EOS provided with UE 4.27.
It’s been a long journey looking through all the source code to figure out how to use it but so far so good.

There is one issue though. I cannot seem to use EOS as the default OSS whiles also allowing external authentication through the platform (i.e. Steam). This includes both using the platform credentials to log into EOS or to log into an EAS account.

I could be missing something here but I’ve looked through FUserManagerEOS::Login() (/Engine/Plugins/Online/OnlineSubsystemEOS/Source/OnlineSubsystemEOS/Private/UserManagerEOS.cpp) numerous times and I believe it misses this use-case.

One quick solution I was planning to add was to simply remove the !bIsDefaultOSS condition or at least change it to !bIsDefaultOSS || AccountCredentials.Type="platform" on lines 334 and 348.

I intended to add this myself but I am experiencing trouble linking any custom-built version of UE4 to my project.

If anyone knows of a solution I can make which doesn’t require editing the engine source, please let me know. Thank you.

1 Like

I have already sort of come up with a solution for the above problem by making my own wrapper for EOS OSS with it’s own GetSubsystem() function, which always returns EOS if the user is logged in, otherwise will return the Platform subsystem. This way it doesn’t matter what Default Subsystem is set to and it also supports offline play.

However, another problem I am facing is EOS Persistent Authentication. The built-in system does not implement it. I was attempting to add it myself until two problems occured:

  1. OnlineSubsystemEOS.h(8): [C1083] Cannot open include file: 'SocketSubsystemEOS.h': No such file or directory.
  2. The logged in user would not be registered with EOS OSS since there is no access to FUserManagerEOS::AddLocalUser()

Is there a way I can simply take the built-in EOS OSS and make it into a project plugin that I can freely edit?

1 Like
	string EOS_PLUGIN_PATH = System.IO.Path.Combine(EngineDirectory, "Plugins/Online/OnlineSubsystemEOS/Source/OnlineSubsystemEOS/Private");
	PublicIncludePaths.Add(EOS_PLUGIN_PATH);

	string EOS_SDK = "EOS-SDK-18059966-v1.14.1";
	string EOS_PATH = System.IO.Path.Combine(ModuleDirectory, "..", "EOS", EOS_SDK, "SDK");
	string EOS_INCLUDE_PATH = System.IO.Path.Combine(EOS_PATH, "Include");

	PrivateDefinitions.Add("WITH_EOS_SDK=1");
	PublicIncludePaths.Add(EOS_INCLUDE_PATH);
1 Like

I’m getting the exact same error. Did you find a solution to the include file not being found?

I have not. @dromo did post something above but I have yet to try that solution.

The mentioned user does seem to know what they are doing due to all the specific strings they are using; it seems promising.

You might find this of interest, Unreal Engine Epic Online Services (EOS) #1: "Setup SDK and Test Sample Project" - YouTube

1 Like

Great tutorial for getting started with EOS. If only it existed when I needed it instead of spending a few days figuring it all out myself.

It doesn’t include anything about the issues I’m currently having. It does seem the series is still active so maybe they’ll be a video in the future.

I’ts active. I just reworked parts 4/5/6 to explain more about whats going on and to see your lobby in the portal. Up next is using EOSPlus which will allow for cross platform (I’m going to use steam for this series) for multiple platforms along with Epic which I touch on in part 5.

I’ve followed all your sample constats config steps, but when i run the debugger get “[EOS SDK] Platform Create Failed!” and “EOS SDK SetCurrentPayload: A1B2C3D4E5”,I don’t know what went wrong

Better way is to add

PublicDependencyModuleNames.AddRange(new string[] { “Core”, “CoreUObject”, “Engine”, “InputCore”, “OnlineSubsystem”, “OnlineSubsystemEOS”, “OnlineSubsystemUtils” });

to *.Build.cs