THANK YOU!
This helped me realize I needed to actually search for lobbies, even though I thought I wasn’t, like Draug suggested.
LastSessionSearch->QuerySettings.Set(SEARCH_PRESENCE, true, EOnlineComparisonOp::Equals);
became
LastSessionSearch->QuerySettings.Set(SEARCH_LOBBIES, true, EOnlineComparisonOp::Equals);
for me. That made me see WAY more results in the LogOnlineSession logs. But after that, I wasn’t able to join my game. Then I noticed another log after it listed all the found sessions
[2025.06.28-20.59.57:781][224]LogOnlineSession: Warning: STEAM: [FOnlineSessionSteam::JoinSession] The values of FOnlineSessionSettings::bUsesPresence and FOnlineSessionSettings::bUseLobbiesIfAvailable are treated as equal and have to match
So this must be a new requirement going up Unreal Engine versions. Once I set those two keys on the search result before joining it, I got it to work too!
Result.Session.SessionSettings.bUsesPresence = true;
Result.Session.SessionSettings.bUseLobbiesIfAvailable = true;
MultiplayerSessionsSubsystem->JoinSession(Result);
What I’m confused about is why the connecting client would have to set session settings. Wouldn’t they be coming from the host? Those bools are already set when I created the session, it’s weird we have to set it here too before joining.