> If you’re looking for a way to have peer-to-peer multiplayer without setting up your own server, have a look at Steam’s Networking API which also has a Godot integration via GodotSteam, or have a look at the Epic’s NAT P2P API. Both provide NAT hole punching support with relay services as a fallback.
Steam used to work this way iirc, but they now always use a relay. This is user friendly, because with normal peer to peer your IP address is given to other players. DDOSing, bringing down Twitch streams, and all sorts of unfun things can result from that. Of course, this does give steam your users' IP addresses.
> Of course, this does give steam your users' IP addresses.
A rendezvous is unavoidable, even for UDP P2P. The hole puncher server would be the rendezvous -- or the STUN (P2P) / TURN (TCP) server if you wanted to make the smarter choice and use an existing protocol. Either way, the rendezvous gets the IP no matter what.
The only way to avoid leaking the IP to some middle party is to use port forwarding and manual communication of the IP.
IIRC, Twilio offers a paid STUN/TURN service. But you could also self-host it using some open source TURN server, since all it requires is a public IP address (with the caveat of course that it might not be geographically close to the end user).
Working in games is an amazing way to discover abusive behaviour and the value of defensive programming, and that is just for dealing with your colleagues (may not be joking).
Gamers are incredible at breaking things when using your product legitimately, once they decide to look behind the curtain you are in trouble. One of the big advantages (acknowledging the downsides) of in cloud gaming is it dramatically reduces the scope for this.
Steam used to work this way iirc, but they now always use a relay. This is user friendly, because with normal peer to peer your IP address is given to other players. DDOSing, bringing down Twitch streams, and all sorts of unfun things can result from that. Of course, this does give steam your users' IP addresses.