Problem Running Local Multiplayer with EOS (Epic Online Services)

Hello their

I have a somewhat complicated problem with a simple feature … creating a game with online and Local Multiplayer (LAN)

I am developing a PVP Multiplayer game that runs through the network (Online or LAN), I am using EOS (more specifically EIK "Epic Online Services Integration Kit Plugin), and I have managed to get everything running for Online multiplayer, but when I set the mode for LAN I get in all sorts of trouble

1 - you can’t create a session without logging in to an epic account (AKA you need to be online) which defeats the point of LAN from the get-go.

my investigation found that EOS requires a login in “OnlineSessionEOS.cpp” line 1037 before executing line 1072

but bypassing this does not create the session it just crashes the engine in line 1122

note that I have tried logging in with the device ID … but that caused 3 problems
1 - you still have to be online to Login
2 - you can’t create even an online session when you are logged in with a Device ID (although you can join one for some reason … lobbies don’t work either)
3 - In line 1037 even though it says (>= ELoginStatus::UsingLocalProfile) if you are logged in with Device ID you are still considered not logged in.

if I ignored all of this, and connected to the internet anyway, logged in with an Epic account I could create a LAN session with no problem but when I try to join it I get these

note that the first “1” and “success” notes are my checks for the number of sessions found and the result of join session, Also I have checked the IP Port and firewall all seem correct, and I am running this on the same machine in the editor … I have tested it with two machines with the same results, (note that I didn’t thinker with the Port settings on my router or the game).

If there is a better way to keep using EOS for local multiplayer I will be grateful … but I have tried another solution that seems to have much more potential, Using “OnlineSubsystemNull”

I have disabled EOS in “Defultengine.ini” and used the default create and join the session that comes with unreal and it worked ( with three issues I will explain in a minute), it does not require any login and it just works.

the problem is I could not get EOS Desiabled or OnlineSubsystemNull to override it

I have tried using the Destroy() function but EIK keeps starting up again, and I can’t remove it completely because I need it for online play, and even if I got over that I have three issues with OnlineSubsystemNull for LAN

1 - it only works if the devices are connected to the same switch … (If you have multiple switches connected and working just fine accessing Local IPs and devices it doesn’t work)
2 - it doesn’t work on Hotspots created by mobile or PC it just doesn’t find anything
3 - it doesn’t pass any user information about the session which makes knowing which session to join impossible.

the first two problems are most likely present with EOS, and the HotSpot one is relatively a deal breaker for LAN.

I understand that this is a deep and advanced problem, thus once a solution is found I will create a YouTube video once I manage to get it running with the exact steps needed to get both online MultiPlayer and locally.

Thank you so much

Hello.

Did you find a solution? I am actually struggling with the same problem. LAN connection was working for me with Null system but now that I’ve tried to implement Online connection with EOS, now the LAN connection does not work.

Hopefully we’ll find something!

I am following the problem with the developer of EIK, it is taking a while to solve because it is very complecated …

EIK is a plugin that exposes EOS to blue prints, and he is implementing lan using Null, but up to this point I was not able to run it

you can get the plugin and check the code for switching the online subsystem from get Githup repo for EIK,

I believe it is being managed here

Source/OnlineSubsystemEIK/AsyncFunctions/Sessions/EIK_FindSessions_AsyncFunction.cpp

if(B_bLanSearch)
{
	SubsystemToUse = NULL_SUBSYSTEM;
}
if(const IOnlineSubsystem *SubsystemRef = IOnlineSubsystem::Get(SubsystemToUse))
{
	if(const IOnlineSessionPtr SessionPtrRef = SubsystemRef->GetSessionInterface())
	{

you will find it equivalents in hosting, finding and joining sessions, but keep in mind that although it is create the subsystem (I can confirm that) it is still not working for me

we have also talked about the fact the Null (at least according to my testing) does not support Hot spot nor wireless repeaters (even after I confirmed that indeed they do share local hosting)

and it does not support cross platform ( found the check for the platform deep in the code, you know how it goes a reference to a reference to a reference )

so yea hope this help … I may not come back to this thread, so pleas check the plugin updates (the latest version at the time is 4.0.4),

We have fixed the LAN Support for the plugin : https://eik.betide.studio/multiplayer/lan

Thanks for this!