OnlineBeaconHost fails to initialize with EOS Net Driver

Hey! I’ve been trying to use the EOS Net Driver as the BeaconNetDriver in UE 5.3, but my OnlineBeaconHost fails to initialize with this net driver. I have no issues when using the Steam Net Driver. Also I’m pretty sure this used to work as well.

Has anyone run into the same issue?

Here are the relevant logs below. Some EOS systems use LogTemp for some reason…

LogKronos: KronosPartyManager: Creating party beacon host...
LogTemp: Verbose: Init as EOSNetDriver listen server. LocalURL = (:7787/Kronos/Examples/Maps/KronosExampleMenu)
LogTemp: Warning: Could not get socket subsystem
LogBeacon: KronosPartyListener_0: AOnlineBeaconHost::InitHost failed

I have the EOS Socket Subsystem enabled.
I also have everything configured as well.

After a little digging, it appears that the warning is issued at line 44 of NetDriverEOSBase.cpp.
That is, SocketSubsystem is null.
The reason why it is null is probably because the value returned by FindWorld() on line 184 is nullptr.
In other words, the problem seems to be that the network driver is not associated with a world.

I have looked into this so far, but I don’t know how to fix it either.

1 Like

I have resolved.

Then I looked into it further, and no matter how hard I tried, I couldn’t fix it, so apparently Epic’s official OnlineSubsystemEOS.NetDriverEOS is not compatible with BeaconNetDriver? I thought it might be.
So I used Redpoint’s EOS Online Subsystem. Then, I was able to use the beacon without any problem at all!

I’m currently working on a workaround / solution for this. I managed to get rid of the null world issue by manually assigning one, and it seems the beacon gets initialized.

bool AMyOnlineBeaconHost::InitBase()
{
    bool bInitResult = Super::InitBase();

    // The NetDriver is created during Super::InitBase.
    // If the net driver's world is invalid then use the actor's world instead.
    if (NetDriver && NetDriver->GetWorld() == nullptr)
    {
        UWorld* MyWorld = GetWorld();
        NetDriver->SetWorld(MyWorld);
    }

    return bInitResult;
}

However I have custom login code for my beacons which doesn’t finish for some reason. I’m currently investigating further.

2 Likes

The problem is maybe in configuration. For me adding netdriver definition in config didn’t work, I had to add it in C++ in game instance init

void UECRGameInstance::Init()
{
	Super::Init();
 
	for (auto& Definition : GEngine->NetDriverDefinitions)
	{
		if (Definition.DefName == NAME_BeaconNetDriver)
		{
			return;
		}
	}
 
	FNetDriverDefinition BeaconDriverDefinition;
	BeaconDriverDefinition.DefName = NAME_BeaconNetDriver;
	BeaconDriverDefinition.DriverClassName = FName("OnlineSubsystemEOS.NetDriverEOS");
	BeaconDriverDefinition.DriverClassNameFallback = FName("/Script/OnlineSubsystemUtils.IpNetDriver");
	GEngine->NetDriverDefinitions.Add(BeaconDriverDefinition);
}

The issue has been fixed in UE 5.5. However it does seem like the EOS Online Subsystem currently does not work with party sessions.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.