Catch up to upstream + fix P2P multi-process Steam-ID routing #2

Merged
gabrielgad merged 211 commits from merge-upstream-dev into dev 2026-06-12 16:56:34 -04:00
gabrielgad commented 2026-06-12 14:57:32 -04:00 (Migrated from github.com)

Summary

Brings the fork current with upstream Detanup01/gbe_fork (~209 commits) while keeping splitux tweaks (self-hosted-runner CI + auto_accept_p2p config layer), and fixes a real SteamNetworkingSockets P2P regression.

P2P fix (the headline)

When multiple local processes share one Steam account (a bootstrap launcher exe + the shipping game exe both loading steam_api64 — exactly what Satisfactory does), CONNECTION_ACCEPTED/DATA were routed by destination Steam ID via find_connection() (first match only), landing on the wrong process. The process that called ConnectP2P never reached Connected, causing a 120s timeout.

New Networking::sendToAllWithID() delivers to every connection holding the dest Steam ID; the socket owner handles it, others drop it. All four P2P send paths routed through it.

Verified: Satisfactory two-instance Steam co-op connects end-to-end (Welcomed by server, data flowing, joiner loads host world). Benefits any P2P game with a launcher+game or multiple local instances.

Orphan branches

Fast-forwarded third-party/{common,deps}/win + deps/common to upstream (premake beta8, SDL3 sources) — required for the merged tree to build.

## Summary Brings the fork current with upstream `Detanup01/gbe_fork` (~209 commits) while keeping splitux tweaks (self-hosted-runner CI + auto_accept_p2p config layer), and fixes a real SteamNetworkingSockets P2P regression. ## P2P fix (the headline) When multiple local processes share one Steam account (a bootstrap launcher exe + the shipping game exe both loading steam_api64 — exactly what Satisfactory does), `CONNECTION_ACCEPTED`/`DATA` were routed by destination Steam ID via `find_connection()` (first match only), landing on the wrong process. The process that called `ConnectP2P` never reached Connected, causing a 120s timeout. New `Networking::sendToAllWithID()` delivers to **every** connection holding the dest Steam ID; the socket owner handles it, others drop it. All four P2P send paths routed through it. **Verified:** Satisfactory two-instance Steam co-op connects end-to-end (Welcomed by server, data flowing, joiner loads host world). Benefits any P2P game with a launcher+game or multiple local instances. ## Orphan branches Fast-forwarded `third-party/{common,deps}/win` + `deps/common` to upstream (premake beta8, SDL3 sources) — required for the merged tree to build.
Sign in to join this conversation.
No description provided.