EOS on Lyra game

Lyra with EOS Enabled.

  1. Followed Sneaky Kitty tutorial on EOS. THANKS :slight_smile:

  2. Got all the EOS samples running and working.

  3. Transfered the EOS config to Lyra.

  4. PC1. Start Lyra. Lyra logs in. Lyra creates lobby/game.

  5. PC2. Start Lyra. Lyra logs in with another Epic account. Lyra can see the created lobby/game. But fails when joining :confused:

  6. This is done purely over WAN (No local connections)

  7. Warnings/Errors

7a. LogOnlineFriend: Warning: OSS: [FUserManagerEOS::QueryBlockedPlayers] This method is not supported.
7a. - I guess this fine and caused by anticheat is disabled.

7b. LogEOSSDK: LogEOSLobby: Created lobby socket. LocalUserId=[000…ca8] WebSocket=[000001D98BF52390]
7b. LogEOSSDK: LogEOSLobby: Connection Established
7b. LogEOSVoiceChat: Warning: [000001D956164990] EOS_Lobby_GetLobbyRTCRoomName failed error=EOS_Disabled
7b. LogEOSVoiceChat: Warning: [000001D956164990] RemoveLobbyRoom LobbyId=[bb12e65ed83d4a549da06cb7131ada11] not found
7b. - I guess this is fine and are caused due to a missing EOS policy, which cant be enabled unless running as a trusted server or error in DefaultEngine.ini ? - I have to investigate.

7c. [2022.04.15-11.37.11:936][425]LogEOSSDK: Warning: LogEOSLobby: Lobby attribute inconsistency
7c. - I cant figure the reason for this warning, either cant I find any documentation.

7d. LogOnlineSession: Warning: OSS: [FOnlineSessionEOS::JoinLobbySession] JoinLobby not successful. Finished with EOS_EResult EOS_Lobby_PresenceLobbyExists
7d. LogCommonSession: Error: FinishJoinSession(Failed with Result: Join failed.)
7d. - Something strange is going on about the lobby/join game.
7d. - Suspect: Error in DefaultEngine.ini
7d. - Suspect: EOS Policy error
7d. - Suspect: EOS Plugin versioning or the EOSSDK-Win64-Shipping.dll ? Not up to date?
7d. - Suspect: the Lobby attribute inconsistency

7e. - I have to run Lyra with command line: LyraGame.exe -auth_type=accountportal -auth_login=xxx@xxx.com -auth_password=xyzxyz then Lyra will use EOS, else not.

7f. - I have to approve the Lyra game each time I run it. Persistlogin may solve this problem. How to implement?

7g. - Atm. I have to approve/add users at Epics Dashboard for Lyra before a user can start Lyra. How to change this?

We’re at exactly the same spot, then came across this post. Have you made any additional progress? We’re reaching out to our account contact.

Hello, sorry to hear you are having trouble getting Lyra to work online.

I’ve been using EOS for some time so I guess maybe that helps, I actually have used my own EOS multiplayer plugin with Lyra to connect using steam only but when I read your post I thought I’d try it the out of the box way and it worked easily. I recommend you read all the EOS docs and the Common User Plugin Docs too which Lyra uses as default.

So this is what I did:-

Step 1:- Download Unreal 5.0.1 Source and build it. (You might have problems using the built version)

Step 2:- While you are doing step 1, login to your epic dev portal and setup a product FULLY (lots of docs online for doing that and I saw you’ve watched a video too so I guess there are YT videos too) . If setup fully you’ll have all the data you need for entering in UE5.

Step 3:- UE 5.0.1 Built and running, open Lyra project in UE5 to ensure all the EOS plugins are enabled, the online susbsytem plugin and the Steam plugin too if you are going to do it my way (goto plugins and check). Goto Project Settings and at the bottom under plugins fill in your EOS details from the Dev Portal. Save all, Package the Lyra Game, NOT the Lyra Game EOS (well that’s up to you but I like to configure it myself the EOS version has some helpers that don’t really help if you don’t know how it works) for Win64 Development (make sure its a Dev build, (shipping won’t work unless you have all the details ready to ship!)

Step 4:- While Step 3 is packaging, in your Dev portal link an Identity Provider (so you don’t get the ‘Allow’ popup every time or have to use the SDK Dev Auth which does work too but is a bit annoying everytime) I think there are 12 identity providers to choose from, let’s say you choose Steam (only because most people do :-)). Add that to your Dev portal and make sure you have the encryption key and the Steam product ID 480 if you don’t have your own again lots of docs covering how to do that.

Step5:- Once the package has been completed close the editor and edit your DefaultEngine.ini to use EOS Plus and Steam (once again lots of docs explaining that including in the links I’ve attached in which you can just copy and paste into your ini file. Make sure you use EOS PLUS!

Step 6:- Open the editor and package again (it will only take a minute this time as you already did it once)

Step 7:- Find a friend or another computer on a separate network to yours copy the packaged build to that machine or send to a friend. Now then your friend will need their own Epic account and their own Steam account if thats the Identity provider you are using. Make sure they are happy to link their Steam to Epic accounts, if not you’ll need to create a new Epic account and Steam account. I think you will also need to add that friend to you Dev Portal Organisation too, Hmmm all my testers are I don’t have anyone whos not I guess you could try without and if it fails use the invite in the dev portal to add them.

Ok so now run up Lyra on both machines if you’ve got it all right you’ll see the Overlay for Steam and Epic and the first time your browser will open and ask both of you to link your Epic and Steam accounts (this only happens once after that Lyra just works)

Thats it!!

Issues Ummm, in Project Settings make sure your Artifact is correctly configured, and the tick boxes are ticked to allow crossplay etc.

Epic Dev portal this is probably the most likely place for mistakes this needs to be configured correctly. I’ll try to find someone not in my Org and ask them to test to see if they need to be a user or not, it definitely works if they are in your Dev Portal Org.

DefaultEngine.ini, if you’ve read the docs and copied and pasted the configuration correctly including your steam app ID you should be ok. Under [OnlineSubsystemSteam] make sure you have bInitServerOnClient=true.

I hope you get it working :slight_smile:

Once you have it working, Lyra is an excellent learning tool, make sure you check out the C++ Plugin code Epic has done a great job at showing how to make this modular, I sometimes think people don’t do this enough making it modular means you can use the bits you need in your own project I learned a lot from the Common User Plugin and I like their GAS implementation. Excellent learning material, great job Epic!!

5 Likes

Thanks 530Friday. After reading your post I found 4 potential differences on our end.

  1. I didn’t have EOSPlus enabled.
  2. I was using the same Epic Games account for both of my logins on computer A and computer B.
  3. Our domain is not verified for EAS (by adding a record with the secret into our DNS records)
  4. We’re on 5.0.0 instead of 5.0.1
    I’m going to try fixing 1-4, in order. I’ll report back. I appreciate the help.

No problem, point 2 will definitely stop it working.

I hope you get it sorted out.

I figured this out for now. I should note that we aren’t using Steam, so there are a few differences from just using EAS.

First I enabled EOSPlus and created two accounts, but that didn’t work. Then I read 530Friday’s post again carefully, and I dug into this part “Package the Lyra Game, NOT the Lyra Game EOS”…“configure it myself”.

We were using LyraGameEOS. Initially I tried just packaging LyraGame, but of course this didn’t work because it used the Null OSS driver.

In exploring what it might mean to configure it myself, I realized that by default, the DefaultEngine.ini in Config/Custom/EOS, contains information that contradicts the settings that end up in DefaultEngine.ini when you setup project settings. Therefore there were duplicate (and incorrect) values in the custom/EOS.

Once I either commented out the duplicate settings or set them to the correct values, in addition to enabling EOS plus and using two different users for two different machines, we could join a game from Computer B that had been started from Computer A, and it continued to work when other team members tested from remote sites.

For others that come across this post, I’d say that in addition to following the documentation extremely carefully, note these two additions:

  1. The contradictory settings between the two DefaultEngine.ini files, where using the editor’s project config window changes one but not the other.
  2. The fact that you need to pass -EpicApp=MYARTIFACTNAME in addition to -AUTH_TYPE, -AUTH_LOGIN, and -AUTH_PASSWORD
2 Likes

Hello, Yay! Well done, and yes that’s exactly what I meant, I used the LyraGame and configured the DefaultEngine.ini in the project’s root folder/config myself. I didn’t really understand the purpose of the LyraGameEOS and its different config folder, for me that was confusing, but hey maybe that’s just me!

Anyway, I’m very pleased you got it working how you wanted.

Since I am still lost, could you post what you put in the Default engine INI to get it working?

Also if anyone knows why changing the name in the Projects Settings / Description doesn’t change the name of the EXE when built, I would love to hear the fix.

Also this is the first I am hearinng about these flags. I am assuming they are being put in a Bat file. But I am unsure of some of the values to put in.
The fact that you need to pass -EpicApp=MYARTIFACTNAME in addition to -AUTH_TYPE, -AUTH_LOGIN, and -AUTH_PASSWORD

I know the artifact name but have no idea what to put in the other fields.

Hello the engine.ini settings are in the document I linked to above in an earlier post, scroll down to :-

“ Your DefaultEngine.ini file should now contain the following lines within their respective sections:”

And just copy and paste, I’d recommend reading down from the top though as it explains what it does.

The .exe name is derived from the uproject name so if you have “myproject.uproject” then you’ll get “myproject.exe” to change that on a blueprint only project is easy you’d change it rename the folder and pop:-

[URL]
GameName=myproject → GameName=mynewproject in defaultengine.ini

For a C++ project it’s much more complicated and for a project like Lyra it would be very time consuming. I’m not sure why you’d want to change Lyra’s project name Lyra is Lyra? It’s made as a demonstration, and in modular form to play with, study and learn from, prototype from I guess. If you want to use any of its features in another project, just do that, apply what you’ve learned. Renaming C++ projects in Unreal is in my opinion not best practice. Hope this helps!

When I created the Lyra project , I gave it a different name. Normally this would change the name of the exe file it makes when compiled. But for some reason it didn’t and I changed the name in the Project Settings to the same name I gave the project. The Uproject Name is Not Lyra and it is correct in the Default Engine.ini as well. But still the final EXE file is called LyraGame.exe. I have never encountered this before now.

Ahh ok sorry with you now, have you checked build.cs has the correct name?

@EddieChristian Hello have you figured this out? I’m totally understanding what you mean now I’ve been through it all Target files etc. I also made a new project and migrated Lyra over but to make it work you need to build the LyraGame and even with my new project target set as default the exe is still Lyra, hmmm not figured out what’s happening I like you have never seen this before. Thank you,

The only way I did manage it is if you go to \Binaries\Win64\ folder and Edit [LyraGame.Target] and change the TargetName: from Lyra to what ever your project is, so “TargetName” : “MyNewProjectName” and save and then I edited the LyraGame.lib file and changed the IMPORT_DESCRIPTOR to the new project name so the packaged folder changed to.

Is that solution any help to you?

1 Like

Hi, sorry for resurfacing this old thread, but I have been trying to get Lyra Multiplayer to work aswell. I have configured EOS on the dev portal and put all the stuff in the .ini, I am building from source and I get a steam overlay and the “You are connected” Message, however at the bottom of the screen it still says “Not Logged In” and when I attempt to start a game I get this error:

Assertion failed: UniqueId.IsValid() && UniqueId.IsV2() [File:D:\UE 5.0\Engine\Plugins\Online\OnlineSubsystemUtils\Source\OnlineSubsystemUtils\Private\OnlineServicesEngineInterfaceImpl.cpp] [Line: 124] 



0x00007ff7ce65a0e2 LyraGame.exe!UOnlineServicesEngineInterfaceImpl::GetPlayerNickname() [D:\UE 5.0\Engine\Plugins\Online\OnlineSubsystemUtils\Source\OnlineSubsystemUtils\Private\OnlineServicesEngineInterfaceImpl.cpp:124]
0x00007ff7d590bf40 LyraGame.exe!ULocalPlayer::GetNickname() [D:\UE 5.0\Engine\Source\Runtime\Engine\Private\LocalPlayer.cpp:1604]
0x00007ff7d5922e3c LyraGame.exe!ULocalPlayer::SpawnPlayActor() [D:\UE 5.0\Engine\Source\Runtime\Engine\Private\LocalPlayer.cpp:290]
0x00007ff7d0633cd2 LyraGame.exe!ULyraLocalPlayer::SpawnPlayActor() [D:\Unreal Projects\Tarkov Killer\Source\LyraGame\Player\LyraLocalPlayer.cpp:36]
0x00007ff7d6194617 LyraGame.exe!UEngine::LoadMap() [D:\UE 5.0\Engine\Source\Runtime\Engine\Private\UnrealEngine.cpp:14214]
0x00007ff7d6156b1c LyraGame.exe!UEngine::Browse() [D:\UE 5.0\Engine\Source\Runtime\Engine\Private\UnrealEngine.cpp:13412]
0x00007ff7d61ac938 LyraGame.exe!UEngine::TickWorldTravel() [D:\UE 5.0\Engine\Source\Runtime\Engine\Private\UnrealEngine.cpp:13575]
0x00007ff7d5750d3b LyraGame.exe!UGameEngine::Tick() [D:\UE 5.0\Engine\Source\Runtime\Engine\Private\GameEngine.cpp:1821]
0x00007ff7cdc1b3b7 LyraGame.exe!FEngineLoop::Tick() [D:\UE 5.0\Engine\Source\Runtime\Launch\Private\LaunchEngineLoop.cpp:5215]
0x00007ff7cdc32d0c LyraGame.exe!GuardedMain() [D:\UE 5.0\Engine\Source\Runtime\Launch\Private\Launch.cpp:183]
0x00007ff7cdc32dda LyraGame.exe!GuardedMainWrapper() [D:\UE 5.0\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:147]
0x00007ff7cdc35e5c LyraGame.exe!LaunchWindowsStartup() [D:\UE 5.0\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:283]
0x00007ff7cdc47614 LyraGame.exe!WinMain() [D:\UE 5.0\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:331]
0x00007ff7d74edd8a LyraGame.exe!__scrt_common_main_seh() [d:\a01\_work\12\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288]
0x00007ff805a67c24 KERNEL32.DLL!UnknownFunction []
0x00007ff80658d721 ntdll.dll!UnknownFunction []

Have you ever encountered this? It seems like you are the only person on these forums who ever got this working.

@EddieChristian Here’s a Youtube video that walks through the process that @530Friday.com described. This process worked for me too…

3 Likes

Hey! Thanks for this extra bit of information. Question about the second point you make at the end of your post: when you say “pass” what exactly do you mean? Is something added to the config file? Or are you taking about some command line parameters? Just a little more detail in this area will help me tremendously!

Thanks!

Here is my situation:

  1. Lyra multiplay worked fine for OSSV1;
  2. If used OSSV2 by enable it in CommonUser.build.cs, EAS worked, but failed for Join, which reported “invalid parameter”.
  3. People from Epic told to upgrade to UE5.2. But there were some compiling errors. And haven’t gotten further feedback from Epic till now.

Did you ever find a fix for this? getting the same error
"Assertion failed: UniqueId.IsValid() && UniqueId.IsV2() [File:D:\UnrealEngine\Engine\Plugins\Online\OnlineSubsystemUtils\Source\OnlineSubsystemUtils\Private\OnlineServicesEngineInterfaceImpl.cpp] [Line: 121] "