Tworzę platformówkę, która ma funkcję „kooperacyjną”, którą chciałbym pracować w sieci / Internecie.
Teraz przeczytałem o programowaniu gier sieciowych, w tym artykuły, takie jak Co każdy programista powinien wiedzieć o sieciach gier, więc rozumiem różnicę między takimi technikami, jak blokowanie Peer-to-Peer i architektury przewidywania Serwer-Klient:
- Doszedłem do wniosku, że dla każdej gry w czasie rzeczywistym, która będzie rozgrywana przez Internet, blokada Peer-to-Peer po prostu nie jest opcją.
- Obawiam się również, że nawet dla platformówki prosta architektura klient-serwer (bez jakiejś prognozy klienta) spowodowałaby pogorszenie rozgrywki z powodu opóźnienia między akcją a reakcją spowodowanego podróżą w obie strony na serwer. (Powiedziawszy, że chcę wyeliminować potrzebę centralnego serwera, a więc tylko jeden z graczy, klient, rzeczywiście odczuje to opóźnienie).
To pozostawia prognozy dla klientów, ale nawet w przypadku prostej gry, takiej jak platformówka, nadal wydaje się to dość skomplikowane.
Jak mógłbym zacząć od stworzenia działającego systemu przewidywania klientów dla wieloosobowej gry platformowej?
networking
multiplayer
platformer
Justin
źródło
źródło
Odpowiedzi:
Nie sądzę, że połowa twojej bazy kodu zamieni się w kod sieci, jeśli zdecydujesz się zaimplementować taką funkcję.
Moim zdaniem najprostszym sposobem na to jest skonfigurowanie „centralnego” serwera (nawet jeśli oznacza to, że jeden gracz „hostuje” grę, a następnie łączy się z własnym serwerem), który akceptuje wszystkie dane wejściowe użytkownika tak szybko, jak to możliwe i odsyła go z powrotem do każdego klienta.
Na kliencie wdrażasz to nie inaczej niż w przypadku lokalnej gry kooperacyjnej dla dwóch graczy, z tym wyjątkiem, że czytasz P1 z klawiatury i P2 z sieci.
Musisz od czasu do czasu wysyłać serwer do pełnego stanu gry, a obaj klienci mogą albo przejść do nowego stanu autoryzacji z serwera, albo mogą przejść do nowego stanu (przez kilka sekund). O ile nie masz strasznej utraty pakietów lub ton klientów na serwer, takie podejście powinno wystarczyć w zarysowanej sytuacji.
źródło
Mam w pełni funkcjonalną grę w stylu mMORPG z przewidywaniem klienta (gra jest daleka od ukończenia, ale działa „OK”) i mam coś wzdłuż 40 000 linii kodu dla serwera i podwójnego dla klienta (dodaj tę samą kwotę dla narzędzi itp. .). Prognozy to prawdopodobnie nie więcej niż kilkaset linii (jeśli nawet to), a cała sieć składa się z kilku tysięcy linii, ale nie więcej niż powiedzmy 5000 (zależy to trochę od tego, gdzie narysujesz linię).
Rozmyte pytanie rozmyta odpowiedź ;-)
źródło
Znaczna część kodu sieciowego może być niezależna od gry, w którą grasz. Z tego powodu, a ponieważ jesteś nowy w sieci, pierwszą rzeczą, którą sugeruję, jest znalezienie bibliotek, które wykonają to za Ciebie. Na przykład RakNet.
Jedną rzeczą, której będziesz potrzebować w kodzie gry, jest możliwość obsługi wielu różnych stanów gry, których możesz użyć do interpolacji i przewidywania. Jest to dość proste do zaprojektowania z góry, ale może być znaczną pracą, jeśli modyfikujesz istniejącą grę dla jednego gracza.
Pamiętaj również, że jeśli chcesz, aby nieznajomi grali w peer-to-peer przez Internet, prawdopodobnie będziesz potrzebować przynajmniej jednego serwera, który obsługuje lobby / swatanie.
źródło