Co obejmuje prosta gra UDP?


17

Kiedyś próbowałem napisać prostą grę z UDP w ciągu tygodnia jako test jednorazowy. Poszło okropnie.

Wyrzuciłem to wcześnie. Głównym problemem, jaki miałem, było przywrócenie stanu gry wszystkich graczy / wrogów / obiektów do starego stanu i szybkie przewinięcie gry do momentu, w którym gracz gra (tj. Pół sekundy przed skokiem. Trochę wcześnie lub późno może spraw, aby gracz przegapił skok)

Może ta metoda nie jest najłatwiejsza? Podejrzewam, że tak, ale od początku zaprojektowałem go źle i zrealizowałem pod koniec drugiego dnia. (więc nie nauczyłem się zbyt wiele lub zmarnowałem tyle czasu)

Dla mnie i innych. Co obejmuje prosta gra UDP i jak ją napisać? Lub jak rozwiązać problem z przywracaniem stanu do prawidłowego stanu.

Oznaczę to jako CW bc, wiem, że będzie wiele pomocnych odpowiedzi.

Odpowiedzi:


9

Glenn Fiedler napisał na ten temat doskonały zestaw artykułów , który obejmuje prawie wszystkie podstawowe pojęcia.


Artykuł o zmiennoprzecinkowym zdeterminowanym zawalił mi głowę. Jego zły stan synchronizacji nie jest wykonywany, ponieważ to ten, który chciałem przeczytać. Chociaż determinizm zmiennoprzecinkowy odpowiada na wiele pytań.

Żaden z tych artykułów nie
porusza

3

Opracowanie własnego może mieć charakter edukacyjny, ale często możesz zrobić więcej, jeśli możesz wykorzystać istniejącą implementację (lub przynajmniej zacząć od tego miejsca).

Użyłem zarówno ENet, jak i Raknet . Użyłem Eneta tylko w prostej grze, ale zrobił to, czego potrzebowałem. Enet używa API niższego poziomu niż Raknet. Raknet został wykorzystany w większym projekcie. Raknet jest niezwykle potężny, ale chce, abyś zbudował swoją grę w oparciu o ramy Raknet.

Enet:

  • Zarządzanie połączeniami
  • Sekwencjonowanie
  • Kanały
  • Niezawodność
  • Fragmentacja i ponowny montaż
  • Zbiór
  • Zdolność adaptacji
  • Ruchliwość
  • Wolność

Raknet:

  • Replikacja obiektów
  • Autopatcher
  • Bezpieczne połączenia
  • Solidna warstwa komunikacyjna (w zasadzie wszystkie funkcje Enets zebrane w jednym elemencie)
  • Zdalne wywołania procedur
  • Komunikacja głosowa
  • Przebijanie NAT

+1 dla ENet, używam go od dłuższego czasu dla klientów i im się podoba.
Len Holgate

Pyta

-1, z tego samego powodu, co BlueRaja
Jonathan Dickinson


0

Jeśli pójdziesz do domu (tak jak ja), nauczysz się ton - także o rzeczach, których nie chciałeś wiedzieć. Podobnie jak w przypadku translacji NAT. Według Caspina Enet tego nie zauważa, ale zawsze można znaleźć kod STUN typu open source, który działa w większości sytuacji.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.