HI, i successfully established lobbies with steamworks sdk but can’t join the same map/session with listening servers, here is my code:
void UMainGameInstance::CreateMap()
{
if (m_steamID == m_steamIDLobbyOwner)
{
SteamMatchmaking()->SetLobbyGameServer(m_steamIDLobby, 0, 0, m_steamID);
GetWorld()->ServerTravel("/Game/Maps/TestLevel?listen", true);
}else
{
GEngine->AddOnScreenDebugMessage(-1, 10, FColor::Red, TEXT("You are not a host"));
}
}
void UMainGameInstance::OnLobbyGameCreated(LobbyGameCreated_t* pCallback)
{
GEngine->AddOnScreenDebugMessage(-1, 10, FColor::Red, TEXT("Game Created"));
if (pCallback->m_ulSteamIDGameServer)
{
// The game server has been created successfully
CSteamID steamIDGameServer = pCallback->m_ulSteamIDGameServer;
if (m_steamIDLobby.IsValid() && m_steamIDLobbyOwner != m_steamID)
{
FString SteamURL = FString::Printf(TEXT("open steam.%llu"), steamIDGameServer.ConvertToUint64());
GetWorld()->Exec(GetWorld(), *SteamURL);
}
else
{
GEngine->AddOnScreenDebugMessage(-1, 10, FColor::Red, TEXT("No valid lobby ID to join or you are the host."));
}
}
else
{
GEngine->AddOnScreenDebugMessage(-1, 10, FColor::Red, TEXT("Failed to see game server id."));
}
}