Nawet gry, które są w 100% klientem / serwerem, czasami mają problemy, gdy klient stoi za NAT. Gry Peee-peer to jeszcze większe problemy. Niektóre gry wymagają korzystania z wielu transportów (takich jak UDP i TCP) lub wielu połączeń (takich jak inny port UDP dla głosu).
Jakie są sposoby, aby upewnić się, że gra działa niezawodnie, gdy działa za routerem NAT?
- Peer-Peer: Nie istnieje scentralizowany serwer. Gracz A rozpoczyna grę, a gracz B chce dołączyć
- Klient-Serwer: scentralizowany serwer pod dobrze znanym adresem (nazwa hosta) akceptuje wszystkie połączenia przychodzące. Każdy klient komunikuje się tylko z tym serwerem.
- Kombinacja: tam, gdzie serwer tylko dobiera graczy, ale aktualizacje gier są równorzędne. Różni partnerzy mogą zobaczyć każdego gracza z innym adresem IP / portem potencjalnie (np. Niektórzy klienci stoją za tym samym NAT, a niektórzy na innym routerze)
źródło
Nie pozwól, aby klient poinformował serwer lub peer o swoim adresie. Innymi słowy, nie należy osadzać adresu IP klienta A w pakiecie gry, a klient B lub serwer odpowiada na ten adres. Zawsze odpowiadaj na adres / port, z którego pochodzi wiadomość.
Zminimalizuj różne porty UDP lub TCP używane w grze. Ułatwia to konfigurowanie reguł NAT.
Pozwól użytkownikowi zastąpić domyślny port używany w grze. W ten sposób kilka serwerów może być hostowanych za tym samym NAT.
źródło
Wraz z innymi odpowiedziami użyj istniejącego koła: http://miniupnp.free.fr/ Ta biblioteka walczy z prawie wszystkimi problemami w formie funkcjonalnej, dając ci kontrolę nad tym, kiedy i jak uderzać i ciągnąć :)
źródło