Ich versuche, meinem Spiel Netzwerkfunktionen hinzuzufügen. Ich möchte, dass jeder Benutzer das Spiel hosten kann und jeder als Client eine Verbindung herstellen kann. Der Client sendet dem Host Informationen über die Position seines Spielers usw. Wenn der Host eine Nachricht empfängt, validiert er diese und sendet sie dann an seine anderen Clients. Ich werde mich hauptsächlich mit UDP beschäftigen, aber ich werde auch TCP für Chat- und Lobby-Sachen benötigen.
Das Problem ist, dass ich scheinbar kein Paket vom Client an den Host senden kann oder umgekehrt, ohne die Portweiterleitung auf meinem Router zu aktivieren. Aber ich denke nicht, dass dies notwendig ist. Ich glaube, der Grund, warum ich eine Portweiterleitung benötige, ist, dass ich ein Paket von einem Computer in einem LAN an einen anderen Computer in einem anderen LAN senden möchte, aber keiner von beiden hat eine globale IP-Adresse, da sie sich in einem LAN befinden. Ich kann also wirklich nur Pakete senden, die auf den Router des anderen Netzwerks abzielen, der diese an den Computer weiterleiten muss, den ich erreichen möchte. Wie kann ich dies ohne Portweiterleitung tun? Irgendwie kann ein Webserver ohne Portweiterleitung mit meinem Computer kommunizieren, der keine globale IP hat. Und ich habe viele Multiplayer-Spiele gespielt, bei denen ich die Portweiterleitung nicht aktivieren muss. Also muss es möglich sein.
Übrigens benutze ich SDL_Net. Ich denke nicht, dass dies etwas ändern wird.