[4.27.1] Crash when using Online Subsystem EOS

In UE4.27.1, when using the Online Subsystem EOS plug-in, it crashes.

The reproduction method is as follows.

  1. Create a new project with the third person template.
  2. Enable the Online Subsystem EOS plugin.
  3. Add “DefaultPlatformService = EOS” to the [OnlineSubsystem] section of DefaultEngine.ini.
  4. Reopen the project in this state, it will crash.

It did not occur in UE4.27.0.

This might be cased by the EOS overlay have not been updated to the latest version.
Overlay codes are managed by Epic Games Launcher, so you should update it to the latest from “Settings”, and try it again.

Just wanted to add, that I’m getting the exact same error when I try to reopen the project.

It does compile, but launching the packaged build also results in an error: "Assertion failed: IsValid() [File:Runtime\Core\Public\Templates/SharedPointer.h] [Line: 890]

Updating EOS in the Epic Games Launcher Settings didn’t help and I also tried with a fresh install both for the launcher and engine on another system (both windows 10) and got the same issue.

2 Likes

Able to reproduce the issue and found that the CacheDir default value and the DefaultArtifactName in being blank (not matching the Artifacts entry, was causing the problem. (DefaultEngine.INI)
[/Script/OnlineSubsystemEOS.EOSSettings] CacheDir=CacheDir DefaultArtifactName=
Removing the CacheDir value and updating the DefaultArtifactName to match the defined Artifacts seems to have resolved the issue so far.
[/Script/OnlineSubsystemEOS.EOSSettings] CacheDir= DefaultArtifactName=MyGameStaging
Not exactly clear what value should be placed in the CacheDir field as it talks about a folder, but already defines a path for it based on the userir article and version and cachedir.
Going to test with …TEST :slight_smile:

3 Likes

Clearing the CacheDir value (I already had set the DefaultArtifactName to match a defined artifact) didn’t help in my case. I’m still getting an error when launching the packaged build and also when I try to reopen the project.

There is no default artifact in EOS (including ClientId etc.) that we can use for basic testing, like the “Spacewar” project on steam, right? Just to make sure, the issue is not caused by a bad project configuration or so.

I had this issue, fixed it by changing the line starting with “+Artifacts=(ArtifactName=” in [/Script/OnlineSubsystemEOS.EOSSettings].

At the end of this line you will probably have EncryptionKey="", just put something in between those quotes for example:
EncryptionKey=“lol” and it worked for me

5 Likes

i tried that and it didnt work for me :frowning:

1 Like

This fixed the crash for me. I set my EncryptionKey=“0”

3 Likes
  1. Enable EOS Plugins
  2. you should set eos config form “ProjectSetting->Plugin->OnlineSubsystemEOS”
  3. and add “DefaultEngine.ini” config

if u Make step 1 and 3 you start project fail
this work for me

Up ! I have the same problem :frowning:

it just works with specific encryption codes, maybe try the one from the sample
for me it worked with 0 but it did not work with testlul :smile:

There is a solution?

Solution for me was that i remove gameinstance from the [/Script/EngineSettings.GameMapsSettings] in GameInstanceClass= .
I think that and c++ instance written by use cause crash even if you have compile it before closing. Hope this help. Also dont change artifact setting that is not relevant to failure of C# or C++ file error. It is not use if empty. Also If you should have online subsystem and online subsystemEOS in public domain in your project.build.cs so online system lib can be avialble to complier. i had that issue so just explaing…

If anyone is still struggling with this then the solution (4.27.2 - Plus) is to add encryption keys to your artifacts. The easiest way to do this is via the project settings menu ( ProjectSetting->Plugin->OnlineSubsystemEOS ), and the encryption keys is must be 64 character long hex values. After you’ve done that you can set your DefaultPlatformService back to EOS and all should be well.

2 Likes

I’m having the same problem. I’ve already registered a developer account, but how can I get the encryption key?

Hello,

I have an issue too with the Online Subsystem EOS integration.
I currently use Online Subsystem Steam to create session/join session. I replaced the steam OSS with EOS and configured it correctly according the documentation.

When I get the IOnlineSubsystem the subsystem name is ‘EOS’ but when I try to create a session the game crashes when accessing the SessionInterface.

Assertion failed: IsValid() [File:C:\Program Files\Epic Games\UE_5.0\Engine\Source\Runtime\Core\Public\Templates\SharedPointer.h] [Line: 1063] 

0x00007ffa410220b6 UnrealEditor-MultiplayerTPS.patch_0_PID_16516.exe!FUniqueNetIdWrapper::operator*() [C:\Program Files\Epic Games\UE_5.0\Engine\Source\Runtime\CoreOnline\Public\Online\CoreOnline.h:510]
0x00007ffa41022c75 UnrealEditor-MultiplayerTPS.patch_0_PID_16516.exe!UMultiplayerTPSGameInstance::CreateGameSession() [D:\Projects\Unreal Engine\MultiplayerTPS\Source\MultiplayerTPS\Private\MultiplayerTPSGameInstance.cpp:79]

Hey @Hadrien-EST did you find any solutions ?

You can use any 64-byte hexadecimal string. Or just 16 time 1. It is not very important in term of eos working but only to provide save and correct data to eos we use it.

2 Likes

Hi, I have faced same issue when i made my LAN game to EOS convert. So it basis mean that setting at same point is missing. So first check Engine.ini and verify that eos subsystem is active their. then make sure your artifact is made and is reflected in engine.ini then if you are using blueprints so check for plugin option and check all eos options disable any other subsystem even subsystemNull as we are using EOS so NULL or any other will never use. compile and restart to Verify any crashes if not. Than you have to make call from game instance because any other type of module will not always be runing in game lifetime. only make login call then after login only then create server/session will work.
Sorry for over explaining but your query was short for me to pin point what you asked.

I am using a Parallel Desktop Win10 on Mac and the VS keeps getting the default document folder wrong, Mac instead of Windows.
I force it to be like this and it works now.

const TCHAR* FWindowsPlatformProcess::UserDir()
{
	static FString WindowsUserDir;
	if( !WindowsUserDir.Len() )
	{
		TCHAR* UserPath;

		// get the My Documents directory
		HRESULT Ret = SHGetKnownFolderPath(FOLDERID_Documents, 0, NULL, &UserPath);
		if (SUCCEEDED(Ret))
		{
			// make the base user dir path
			WindowsUserDir = FString("C:\\Users\\<myuser>\\Documents").Replace(TEXT("\\"), TEXT("/")) + TEXT("/");
			CoTaskMemFree(UserPath);
		}
	}
	return *WindowsUserDir;
}