Hello, I am trying to figure out how to make my idea work with the help of the online subsystem.
The idea is as follows:
A player hosts a game by starting an instance of an unreal engine dedicated server that runs locally. This dedicated server then creates a session which all the clients (including the “host”) should join.
I am aware that the player could just run a the server as a listen server, but this is not what i want. I want each client to have more or less the same way of communicating with the server.
Most of it works: session is created, session can be discovered and joined by players etc.
But when they try to ClientTravel to the connection string, something like this:
FString ConnectString;
if (GetSessionPtr()->GetResolvedConnectString(SessionName, ConnectString))
{
// Travel to the session
if (APlayerController* PC = GetWorld()->GetFirstPlayerController())
{
PC->ClientTravel(ConnectString, ETravelType::TRAVEL_Absolute);
}
}
The correct, (although raw) ip:port is returned and no NAT traversal seems to be happening as the connection times out.
Currently I am using the Epic Online Services and I was under the impression that it should handle all the NAT stuff for me.
Was i wrong, does EOS not handle NAT?
Will steam be able to do this for me?
Am i approaching this wrong?
Any help will be appreciated.
Have a good day