Gra Sieciowa Wdrażanie pocisków / Wydanie koncepcyjne [zamknięte]

Próbuję rozwiązać jakiś problem związany z synchronizacją strzelania z pocisków i ogólnie tworzenia gier, ale nie jestem pewien, jakie byłoby najlepsze dopasowanie.

Jest to przewijak boczny 2D z kilkoma pociskami (brak broni błyskawicznych trafień) i ma już wiele ram (C # XNA Framework i biblioteka Lidgren).

W tej chwili myślę, że architektura będzie modelowana podobnie jak silnik źródła półtrwania. Klienci będą interpolować zdalne jednostki ~ 100ms lub około 3 klatki w przeszłości (naprawiono krok 30fps) i wykorzystując przewidywanie po stronie klienta. Serwer ma uprawnienia do symulacji. Myślenie o kodowaniu implementacji za pomocą ruchu wydaje się w porządku, ale jeśli chodzi o pociski, nie jestem pewien, jak najlepiej byłoby zapewnić najlepszą rozgrywkę dla wszystkich graczy.


PRZYKŁADOWY PROBLEM:

Klient A
Klient B
serwer

Klient A i B stoją naprzeciw siebie.Klient B zaczyna strzelać w kierunku A i wysyła dane do serwera, jak zwykle. Serwer wykrywa wejście ognia i zaczyna strzelać bronią podczas symulacji, przekazując zdarzenie klientowi A.Klient A otrzymuje wiadomość, ale nadal interpoluje klienta B w przeszłości (w międzyczasie pocisk zbliża się teraz do A na maszynie i kliencie Bs).Renderowanie klienta A w końcu dociera do punktu, w którym B wystrzelił pocisk i zaczyna go renderować.Klient A widzi to i skacze, z łatwością usuwając go z ekranu. Pocisk trafia go jednak na serwer i na punkt widzenia klienta Bs.

To także 2D sidescroller, więc wszystko jest widoczne.

Wydaje się, że jest to fundamentalny wpływ zastosowania interpolacji (co, jak sądzę, jest koniecznością, ale jestem otwarty na sugestie), ponieważ nawet bez opóźnienia sieci istnieje nieodłączne opóźnienie interpolacji.


PYTANIE:

Wiem, że to nie może być idealne, ale czy jest więcej lub lepszych sposobów, które mogę zaimplementować, aby zaciemnić lub poprawić to, aby towygląda dobry / bezproblemowy, czy brakuje mi czegoś oczywistego? Wystrzelenie bronirobi mieć krótką animację, zanim pocisk zostanie rzeczywiście wystrzelony, co zdaję sobie sprawę, że możemy wykorzystać ten czas, aby ukryć część opóźnienia, ale broń nie jest natychmiastowym ogniem, a jakkolwiek na nią patrzę, zawsze będzie ta duża luka z klientem próbującym uniknąć pocisków i innych klientów widzących, jak trafiają na nich pociski.

Możemy użyć kompensacji opóźnienia na serwerze dla przypadków, w których gracze się poruszają, ale nie sądzę, aby mogło to pomóc w tej sytuacji?

Gdyby trafienie pocisku spowodowało zmianę pozycji klienta A, musiałbym przewinąć klienta A i odtworzyć jego dane wejściowe z nowymi danymi, a jeśli tak się nie stanie, muszę usunąć pocisk z powietrza (a może umrą), brzydki tak czy inaczej :(.

questionAnswers(1)

yourAnswerToTheQuestion