Download

Can't find steam dedicated server session

I have a new project I’m starting up and I wanted to iron out the kinks with steam dedicated server because I know on my last one it was a pain. I’ve copied a lot of what I had done previously, and I’m not having much luck getting the steam dedicated server to show up when I do a find sessions on my client. The find sessions returns a successful status code, but returns 0 zero results.

I’ve gone through a bunch of the setup, including the DefaultEngine.ini stuff, I’ve put in my own app id from steam, added a custom game session class, custom game instance class, I’ve opened up 27015, 7777, etc, etc. I can even join the game if I open up the console and do a open steam.STEAMP2PADDRESS. As far as I’m concerned, the server is working as you would expect, but the session is not making it up to the steam master server list. If I create a session on a client through create session, and then look on another client, it finds it just fine, and I can even join it that way. But the dedicated server is a no go.

I’ve tried it with the null subsystem, using LAN, and it works exactly how I would expect it to. Spin up dedicated server, find session, join it.

At a loss here, anyone ever experience similar issues before? Any help is appreciated, thank you!

My register server function:


UE_LOG(LogOnlineGame, Verbose, TEXT("Start registering server"));


    IOnlineSubsystem* OnlineSub = IOnlineSubsystem::Get();
    if (OnlineSub)
    {
        UE_LOG(LogOnlineGame, Verbose, TEXT("Online sub good"));

        IOnlineSessionPtr SessionInt = Online::GetSessionInterface();
        if (SessionInt.IsValid())
        {
            UE_LOG(LogOnlineGame, Verbose, TEXT("Sesssion int valid"));

            TSharedPtr<class FOnlineSessionSettings> ShooterHostSettings = MakeShareable(new FOnlineSessionSettings());
            ShooterHostSettings->Set(SETTING_MAPNAME, GetWorld()->GetMapName(), EOnlineDataAdvertisementType::ViaOnlineService);
            ShooterHostSettings->NumPublicConnections = 64;
            ShooterHostSettings->NumPrivateConnections = 0;
            ShooterHostSettings->bIsLANMatch = false;
            ShooterHostSettings->bShouldAdvertise = true;
            ShooterHostSettings->bAllowJoinInProgress = true;
            ShooterHostSettings->bAllowInvites = true;
            ShooterHostSettings->bUsesPresence = false;
            ShooterHostSettings->bAllowJoinViaPresence = true;
            ShooterHostSettings->bAllowJoinViaPresenceFriendsOnly = false;
            ShooterHostSettings->bIsDedicated = true;
            ShooterHostSettings->bAntiCheatProtected = true;

            //HostSettings = ShooterHostSettings;
            OnCreateSessionCompleteDelegateHandle = SessionInt->AddOnCreateSessionCompleteDelegate_Handle(OnCreateSessionCompleteDelegate);
            SessionInt->CreateSession(0, GameSessionName, *ShooterHostSettings);

            UE_LOG(LogOnlineGame, Verbose, TEXT("Starting session %s on server"), *FName(GameSessionName).ToString());
        }
    }

I believe you need to use the Steamworks SDK to manually register your server with steam.

I’ve had it working before, and that’s not the case for sure. When you register a session using the steam subsystem, any client connected to the same game should be able to find all sessions.

Hey - any update on that? Is Steamworks manual registration needed?