>_ DevTrendsde

Sprache

Start

Sprachen

Bereiche

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Embedded Sicherheit
C-sharp

Wie Unturned unter der Haube funktioniert: Analyse des Quellcodes eines beliebten Zombie-Survival-Spiels

Viele Spieleentwickler fragen sich jahrelang, wie große Projekte es schaffen, riesige offene Welten mit stabiler Netzwerktechnik in Einklang zu bringen. Manchmal liegt die Antwort direkt vor uns, und zwar auf GitHub. Smartly Dressed Games hat U3-SDK als Open Source veröffentlicht – im Grunde das „Skelett" ihres Hit-Spiels Unturned, das auf der Unity-Engine basiert.

Ich bin bei der Suche nach Beispielen für große SDK-Implementierungen zum Modden auf dieses Repository gestoßen. Es ist nicht nur eine Sammlung von Skripten zum Erstellen neuer Hüte oder Waffen. Was wir hier haben, ist der Kern-Quellcode des Spiels, der zeigt, wie ein Projekt mit Millionen von Spielern über ein Jahrzehnt lang existiert und sich weiterentwickelt hat.

Warum ein Entwickler sich in das SDK eines anderen vertiefen sollte

Wenn du dein eigenes Spiel in Unity entwickelst, weißt du es: YouTube-Tutorials zeigen oft „sterile" Beispiele. In der Realität musst du dich mit der Optimierung massiver Inventare, der Synchronisierung von Fahrzeugen über das Netzwerk und einer Reihe anderer Probleme herumschlagen.

U3-SDK ist interessant, weil es ein lebendiges Projekt ist. Es wird fast täglich aktualisiert. Das ist eine großartige Gelegenheit zu sehen, wie Profis die Architektur eines großen C#-Projekts organisieren, wie sie mit Assets arbeiten und wie sie den Mod-Ladevorgang aus dem Steam Workshop aufbauen.

Im Inneren des Repositorys

Das Projekt basiert auf Unity 2022.3.62f3. Das ist eine ziemlich aktuelle LTS-Version, daher sieht der Code nicht wie antike Relikte aus der Unity-5-Ära aus. Direkt nach dem Klonen und Öffnen der Szene GameStartup.unity landest du in der Arbeitsumgebung des Spiels.

Architektur und Netzwerktechnik

Eines der coolsten Dinge hier ist die Netzwerkimplementierung. Unturned ist bekannt für seine Server mit Hunderten von Spielern. Im SDK kannst du sehen, wie Aufgaben zwischen Client und Server verteilt werden. Zum Beispiel, wie Treffer oder Charakterbewegungen verarbeitet werden, um die Latenz zu minimieren.

Gegenstands- und Handwerkssystem

Wenn du jemals versucht hast, ein Inventarsystem zu schreiben, weißt du, was für ein Albtraum das ist. In U3-SDK kannst du studieren, wie die Gegenstandsdatenbank implementiert ist. Es ist nicht nur eine JSON-Liste, sondern eine komplexe Struktur mit Unterstützung für verschiedene Datentypen, Abnutzungszustände und Anpassungsmöglichkeiten.

Werkzeuge zur Inhaltserstellung

Entwickler Nelson Sexton hat vollwertige Beispiele für komplexe Logikerstellung zum SDK hinzugefügt. Auf dem offiziellen Kanal gibt es ein Video, das die Erstellung einer selbstlenkenden Rakete basierend auf diesem Code zeigt. Das ist ein klares Beispiel dafür, wie die API des Spiels funktioniert: von der Zielerfassung bis zur Flugphysik des Projektils.

So führst du es auf deinem PC aus

Der Einrichtungsprozess ist so transparent wie möglich, erfordert jedoch das über Steam installierte Spiel, da das SDK schwere Binärdateien und Assets aus dem Haupt-Unturned-Ordner bezieht. Das ist eine sinnvolle Lösung: Das Repository wiegt nicht viel, und du hast Zugriff auf den gesamten Inhalt des Spiels.

  1. Klone das Repository.
  2. Installiere die erforderliche Unity-Version über Hub.
  3. Starte Steam und stelle sicher, dass Unturned installiert ist.
  4. Öffne das Projekt und drücke Play in der Startszene.

Übrigens, wenn du vorhast, dich in den Code zu vertiefen, solltest du am besten sofort Visual Studio mit Unity- und .NET-Desktop-Entwicklungsworkloads installieren. Ohne das wird das Navigieren durch Klassen zur Folter.

Praktischer Nutzen für dein Projekt

Ich sehe mehrere Szenarien, wie du U3-SDK nutzen kannst, auch wenn du kein Fan von Zombie-Apokalypse-Spielen bist:

  • Patterns erlernen. Sieh dir an, wie Singletons, Resource-Manager und Event-Systeme in einem Hochlastprojekt implementiert sind.
  • Optimierung. Unturned läuft auf sehr schwacher Hardware. Der Code enthält viele interessante Lösungen zum Sparen von Speicher und CPU-Zeit.
  • Mods erstellen. Das ist der offensichtliche Weg. Anstatt zu raten, warum dein Plugin den Server „zum Absturz bringt", kannst du es direkt im Kontext des Quellcodes des Spiels debuggen.

Lohnt es sich herunterzuladen

Wenn du gerade erst deine Reise in die Spieleentwicklung beginnst, könnte das Projekt überladen wirken. Es gibt viel Code, und es gibt noch mehr Verbindungen zwischen den Klassen. Aber für diejenigen, die bereits ihre ersten Blessuren in Unity abbekommen haben, ist das ein echtes Lehrbuch.

Es gibt hier keine „Silberkugeln", aber es gibt zeitlich erprobte Lösungen. Das Repository ist aktiv am Leben, mit fast zweihundert offenen Issues und regelmäßigen Commits. Das ist ein seltener Fall, bei dem ein erfolgreiches kommerzielles Spiel so offen für die Community ist.

Es eignet sich für diejenigen, die Sandbox-Architektur, Netzwerkcode und den Aufbau erweiterbarer Systeme verstehen wollen. Wenn du planst, dein eigenes Spiel mit Mod-Unterstützung auf Steam zu veröffentlichen, solltest du dir U3-SDK definitiv ansehen – wenn auch nur, um zu sehen, wie es von den Besten gemacht wird.

Ähnliche Projekte