>_ DevTrendspl

Język

Strona główna

Języki

Sekcje

Frontend Backend Mobilne DevOps AI / ML GameDev Blockchain Systemy wbudowane Bezpieczeństwo
C-sharp

Jak Unturned działa pod maską: Analiza kodu źródłowego popularnej gry survivalowej z zombie

Wielu twórców gier przez lata zastanawia się, jak duże projekty radzą sobie z równoważeniem rozległych otwartych światów ze stabilnym kodem sieciowym. Czasami odpowiedź jest tuż przed nami, na GitHubie. Smartly Dressed Games udostępniło U3-SDK jako otwarte źródło — to w zasadzie „szkielet" ich hittowej gry Unturned zbudowanej na silniku Unity.

Natrafiłem na to repozytorium podczas poszukiwania przykładów dużych implementacji SDK do modowania. To nie jest tylko zbiór skryptów do tworzenia nowych czapek czy broni. To podstawowy kod źródłowy gry, który pokazuje, jak projekt z milionami graczy przetrwał i ewoluował przez ponad dekadę.

Dlaczego programista powinien zgłębiać czyjeś SDK

Jeśli tworzysz własną grę w Unity, wiesz: samouczki na YouTube często pokazują „sterylne" przykłady. W rzeczywistości musisz zmagać się z optymalizacją ogromnych ekwipunków, synchronizacją pojazdów przez sieć i masą innych problemów.

U3-SDK jest interesujące, ponieważ to żywy projekt. Jest aktualizowane niemal codziennie. To świetna okazja, by zobaczyć, jak profesjonaliści organizują architekturę dużego projektu C#, jak pracują z zasobami i jak budują proces ładowania modów ze Steam Workshop.

Wewnątrz repozytorium

Projekt bazuje na Unity 2022.3.62f3. To dość niedawna wersja LTS, więc kod nie wygląda jak antyczne relikty z ery Unity 5. Zaraz po sklonowaniu i otwarciu sceny GameStartup.unity trafiasz do działającego środowiska gry.

Architektura i sieć

Jedną z najciekawszych rzeczy jest tu implementacja sieci. Unturned jest znane z serwerów z setkami graczy. W SDK widać, jak zadania są rozkładane między klienta i serwer. Na przykład, jak przetwarzane są trafienia pocisków czy ruch postaci, by zminimalizować opóźnienia.

System przedmiotów i rzemiosła

Jeśli kiedykolwiek próbowałeś napisać system ekwipunku, wiesz, jaki to ból głowy. W U3-SDK możesz zbadać, jak zaimplementowana jest baza danych przedmiotów. To nie tylko lista JSON, ale złożona struktura z obsługą różnych typów danych, stanów zużycia i personalizacji.

Narzędzia do tworzenia treści

Programista Nelson Sexton dodał do SDK pełnoprawne przykłady tworzenia złożonej logiki. Na oficjalnym kanale jest film pokazujący tworzenie samonaprowadzającej rakiety na podstawie tego kodu. To wyraźny przykład działania API gry: od namierzania celu po fizykę lotu pocisku.

Jak uruchomić to na swoim PC

Proces konfiguracji jest jak najbardziej przejrzysty, choć wymaga zainstalowanej gry na Steamie, ponieważ SDK pobiera ciężkie pliki binarne i zasoby z głównego folderu Unturned. To rozsądne rozwiązanie: repozytorium niewiele waży, a masz dostęp do całej zawartości gry.

  1. Sklonuj repozytorium.
  2. Zainstaluj wymaganą wersję Unity przez Hub.
  3. Uruchom Steam i upewnij się, że Unturned jest zainstalowane.
  4. Otwórz projekt i naciśnij Play na scenie startowej.

Przy okazji, jeśli planujesz zgłębiać kod, najlepiej od razu zainstaluj Visual Studio z obciążeniami Unity i .NET desktop development. Bez tego nawigacja przez klasy stanie się męczarnią.

Praktyczna wartość dla Twojego projektu

I see several scenarios for how you can use U3-SDK, even if you're not a fan of zombie apocalypse games:

  • Uczenie się wzorców. Zobacz, jak singletony, menedżery zasobów i systemy zdarzeń są zaimplementowane w projekcie o wysokim obciążeniu.
  • Optymalizacja. Unturned działa na bardzo słabym sprzęcie. Kod zawiera wiele interesujących rozwiązań oszczędzających pamięć i czas procesora.
  • Tworzenie modów. To oczywista ścieżka. Zamiast zgadywać, dlaczego twój plugin „crashuje" serwer, możesz go debugować bezpośrednio w kontekście kodu źródłowego gry.

Czy warto pobierać

Jeśli dopiero zaczynasz swoją przygodę z gamedev, projekt może wydać się przeciążony. Jest dużo kodu, a jeszcze więcej połączeń między klasami. Ale dla tych, którzy już otrzymali swoje pierwsze siniaki w Unity, to prawdziwy podręcznik.

Nie ma tu „srebrnych kul", ale są sprawdzone czasem rozwiązania. Repozytorium jest aktywnie rozwijane, z prawie dwustoma otwartymi zgłoszeniami i regularnymi commitami. To rzadki przypadek, gdy tak udana gra komercyjna jest tak otwarta na społeczność.

Jest odpowiednie dla tych, którzy chcą zrozumieć architekturę sandbox, kod sieciowy i budowanie rozszerzalnych systemów. Jeśli planujesz wydać własną grę na Steamie z obsługą modów, zdecydowanie powinieneś zgłębić U3-SDK — choćby po to, by zobaczyć, jak robią to najlepsi.

Powiązane projekty