Czytałem artykuł Valve na temat sieci dla wielu graczy, który został zaadaptowany z artykułu Yahna Berniera z 2001 roku zatytułowanego Metody kompensacji opóźnień w projektowaniu i optymalizacji protokołu w grze klient / serwer . Tworzę grę wieloosobową w czasie rzeczywistym, używając serwera node.js połączonego z klientami przez socket.io i mam kilka pytań dotyczących zasad wyszczególnionych poniżej:
Interpolacja jednostek
[Interpolacja] zapobiega ruchowi roztrzęsienia, do którego to zwykle prowadzi buforowanie aktualizacji serwera, a następnie odtwarzanie ich z płynnie interpolowanymi przerwami. Może także chronić przed usterkami spowodowanymi utratą pakietów.
Prognozy po stronie klienta
Prognozowanie to pojęcie klienta przewidujące skutki działań lokalnego gracza bez oczekiwania na potwierdzenie przez serwer. Przewidywany stan jednostki jest testowany pod kątem poleceń serwera, gdy nadchodzą, dopóki nie zostanie wykryte dopasowanie lub błędne dopasowanie.
Kompensacja opóźnień
Kompensacja opóźnień to pojęcie serwera wykorzystującego opóźnienie odtwarzacza do przewijania czasu podczas przetwarzania [danych wejściowych użytkownika], aby zobaczyć, co zobaczył gracz, gdy polecenie zostało wysłane. W połączeniu z prognozowaniem kompensacja opóźnień może pomóc zwalczyć opóźnienie sieci do tego stopnia, że prawie eliminuje je z perspektywy atakującego.
Czy zasady mają zastosowanie do TCP, podobnie jak do UDP i czy będą jakieś różnice we wdrażaniu? Widzę, że interpolacja bytu nie musiałaby chronić przed utratą pakietów, ale o to chodzi.
Czy mogę nawet komunikować się między serwerem a przeglądarką internetową i odwrotnie za pomocą UDP i Node.js?
Skoro papier ma ponad dekadę, czy zasady te są nadal w użyciu, czy pojawiła się inna technologia?
Każda pomoc będzie mile widziana.
Odpowiedzi:
źródło
Powinieneś sprawdzić ten artykuł na temat gier wieloosobowych w czasie rzeczywistym w HTML5 opublikowanym na stronie buildnewgames.com przez Svena Bergstroma, mówi o tych samych rzeczach i używa Node.JS. Mam coś podobnego. Właśnie teraz badam więcej na temat prognoz i interpolacji po stronie klienta i tym podobnych, zanim spróbuję rozwiązać resztę.
Wierzę, że jest to zdecydowanie możliwe w przypadku Socket.IO i Node, jednak technologia jest wciąż nowa, więc będzie niewiele dokumentacji i niewiele do niczego w przewodnikach po implementacji. Poleciłbym robić to, co robię i szczegółowo studiować ten temat w abstrakcyjnych kategoriach na wysokim poziomie, a następnie spróbować sam go wdrożyć.
źródło
Wierzę, że technologia jest prawie taka sama. Ponadto pojęcia nie zależą od używanego języka ani od tego, czy korzystasz z UDP czy TCP. Bardzo szczegółowe wyjaśnienie tego wszystkiego napisałem tutaj http://www.gabrielgambetta.com/fpm1.html , w tym ładne diagramy :)
źródło