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.
źródło
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:
Raknet:
źródło
Jeśli masz czas i energię, możesz pobrać źródło Quake 3 i przestudiować je. Jest to dość łatwe do zrozumienia, jeśli czujesz się komfortowo z C i równie łatwe do majstrowania.
Jakie inne gry wieloosobowe mają dostępne źródło i używają UDP?
źródło
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.
źródło