Invalid parameter EOS_Lobby_CopyLobbyDetailsHandleOptions.LocalUserId reason: is not a valid Product User ID, Result: EOS_InvalidUser

Engine: Unreal Editor v5.4.4
Plugins: EOS OSS v1.0.0
Project: Unreal’s EOS OSS Sample

Hi there,
I’ve been trying to implement P2P multiplayer in our project by using the EOS OSS plugin but keep running into the same error when creating a lobby and when attempting to join a lobby:

LogEOSSDK: Error: LogEOSLobby: Invalid parameter EOS_Lobby_CopyLobbyDetailsHandleOptions.LocalUserId reason: is not a valid Product User ID, Result: EOS_InvalidUser

I’ve downloaded and setup Unreal’s EOS OSS sample project to see if the problem was my implementation, but on the sample project I get the same error under the same circumstances. I didn’t change any code besides what was needed to active P2P, according to the sample getting started documentation.

Looking at the log, it seems like EOS OSS is getting a combination of IDs instead of just the product user id, therefore creating an invalid product user id error:

LogOnlineSession: Warning: EOS: [FOnlineSessionEOS::SetLobbyMemberAttributes] Lobby Member with UniqueNetId [ce8da4a8aea941a6ab9a26e0e3656556|0002536845f84d8ba395f6ee9658d083] not found in Lobby Session with SessionId [60ab95de9d2644bd8611cb27c259322f]
LogEOSSDK: Error: LogEOSLobby: Invalid parameter EOS_Lobby_CopyLobbyDetailsHandleOptions.LocalUserId reason: is not a valid Product User ID, Result: EOS_InvalidUser
LogOnlineSession: Warning: EOS: [FOnlineSessionEOS::OnLobbyUpdateReceived] EOS_Lobby_CopyLobbyDetailsHandle not successful. Finished with EOS_EResult EOS_InvalidUser
LogEOSSDK: Error: LogEOSLobby: Invalid parameter EOS_Lobby_CopyLobbyDetailsHandleOptions.LocalUserId reason: is not a valid Product User ID, Result: EOS_InvalidUser
LogOnlineSession: Warning: EOS: [FOnlineSessionEOS::OnLobbyUpdateReceived] EOS_Lobby_CopyLobbyDetailsHandle not successful. Finished with EOS_EResult EOS_InvalidUser

On that first log, the first id prior to the “|” is the id from authenticating with Epic, the second one is the actual product user id, which I can also find in the dev portal when searching for this lobby.

I’ve also tested the EOS SDK Lobby sample and there I can create and join a session without this error, so it’s an error that seems to only exist in the EOS OSS plugin.

Does anyone have a solution for this or should I use the EOS SDK in Unreal directly?

After looking into this some more, I was able to get rid of the EOS_InvalidUser error when creating a lobby by manually adding the host to the session prior to calling CreateSession(), like so:

IOnlineSubsystem* Subsystem = Online::GetSubsystem(GetWorld());
IOnlineSessionPtr Session = Subsystem->GetSessionInterface();
IOnlineIdentityPtr Identity = Subsystem->GetIdentityInterface();

TSharedRef<FOnlineSessionSettings> SessionSettings = MakeShared<FOnlineSessionSettings>();
// all the usual session settings...

SessionSettings->MemberSettings.FindOrAdd(Identity->GetUniquePlayerId(0).ToSharedRef());

Session->CreateSession(0, NAME_GameSession, *SessionSettings)

So it feels like EOS OSS may be trying to access the player too soon when the session is created.

However, I’m still facing the same EOS_InvalidUser error when a client joins a session, as I haven’t yet been able to add the joining client to the session’s settings it is trying to join prior to joining.

The error doesn’t seem to affect gameplay, as both players can see each other, their movements replicate, etc, however, I’d still like to fix this error.