2012-07-11 12 views
8

Przeczytałem Valve article on multi-player networking, który został zaadaptowany z pracy Yahna Berniera z 2001 roku, zatytułowanej Latency Compensating Methods in Client/Server In-game Protocol Design and Optimization. Robię realtime gry multi-player za pomocą serwera node.js podłączony do klientów poprzez socket.io i mam kilka pytań dotyczących zasad opisanych poniżej:Zasady gry wieloosobowej w czasie rzeczywistym dla TCP i Node.js

Entity Interpolation

[interpolacji] utrzymuje ten roztrzęsiony ruch spowodowałby, że zazwyczaj prowadziło to do buforowania aktualizacji serwera, a następnie odtwarzało je z przerwami między nimi płynnie interpolowanymi. Może również chronić przed zakłóceniami spowodowanymi utratą pakietów.

Client-Side Prediction

Przewidywanie jest pojęcie klienta przewidywania skutków działań lokalnego gracza bez czekania na serwerze, aby je potwierdzić. Przewidywany stan jednostki jest testowany na podstawie poleceń serwera podczas ich przybywania, aż do wykrycia dopasowania lub niezgodności.

Lag Compensation

kompensacja Lag jest pojęcie serwera przy użyciu odtwarzacza latencję przewinąć czas podczas przetwarzania wejściowy [użytkownik], aby zobaczyć, co zobaczył gracz gdy komenda została wysłana . W połączeniu z przewidywaniem, kompensacja opóźnienia w postaci może pomóc w walce z opóźnieniem sieci do punktu niemal eliminując go z perspektywy atakującego.

  • Czy zasady stosuje się do TCP jak do UDP i będzie tam żadnych różnic w realizacji? Widzę, że interpolacja podmiotu nie musiałaby chronić przed utratą pakietów, ale to na ten temat.

  • Czy mogę komunikować się między serwerem a przeglądarką internetową i vice versa przy użyciu UDP i Node.js?

  • Od kiedy papier ma ponad dekadę, czy te zasady są nadal w użyciu, czy pojawiła się inna technologia?

Każda pomoc będzie bardzo cenna.

Odpowiedz

2
  • Czy zasady odnoszą się do protokołu TCP, tak jak do UDP i czy występują jakiekolwiek różnice w implementacji? Widzę, że interpolacja podmiotu nie musiałaby chronić przed utratą pakietów, ale to na ten temat.

Mimo że nie będziesz musiał radzić sobie z utratą pakietów, będziesz musiał poradzić sobie z dłuższymi czasami transportu. Protokół TCP jest wolniejszy od UDP i musisz go złagodzić w trybie multiplayer w czasie rzeczywistym. Sądzę, że zasady te nadal obowiązują na poziomie podstawowym.

  • Czy mogę komunikować się między serwerem a przeglądarką internetową i vice versa za pomocą UDP i Node.js?

Generalnie rzecz biorąc, jeszcze nie. Przynajmniej nie bez jakiejś formy rozszerzenia przeglądarki lub wtyczki - WebSockets używa TCP. To powiedziawszy, nadchodzi WebRTC (a dokładniej, PeerConnection API). Gdy kanały danych są zaimplementowane, komunikacja UDP powinna teoretycznie być możliwa.

  • Od kiedy papier ma ponad dekadę, czy te zasady są nadal w użyciu, czy pojawiła się inna technologia?

Byłbym bardzo zaskoczony, gdy usłyszałem, że nie są już używane - cytowany artykuł jest praktycznie niezbędny do czytania dla programistów gier. To samo dotyczy nowych technik, które nie pojawiają się, chociaż od kilku lat nie zwracam uwagi na zmiany w tej dziedzinie.