So wählen Sie den richtigen Netcode für Ihr Spiel

Bei fast allen Multiplayer-Spielen müssen inhärente netzwerkbezogene Herausforderungen berücksichtigt und gelöst werden, die sich auf das Spielerlebnis auswirken, wie etwa Latenz, Paketverlust und Szenenmanagement. Spiele lösen diese Herausforderungen auf unterschiedliche Weise.
Die richtige Lösung zu finden, hängt vom Genre Ihres Spiels, der Anzahl der Spieler und vernetzten Objekte, der Wettbewerbsfähigkeit und anderen Aspekten ab, beispielsweise davon, wie viel Kontrolle über die Netzwerkebene benötigt wird. Verschiedene Szenarien erfordern unterschiedliche Netcode-Lösungen.
In diesem Blog behandeln wir gängige Netzwerkbibliotheken, die in der Unity Engine verwendet werden, sowie die Ergebnisse einer Studie zu den Erfahrungen von Entwicklern mit diesen Lösungen, um Ihnen bei der Entscheidung zu helfen, was für Ihr Projekt geeignet sein könnte.
Netcode ist ein hochrangiger Begriff, den viele Ingenieure für Frameworks verwenden, die speziell dafür entwickelt wurden, die Erstellung bestimmter Aspekte des vernetzten Gameplays zu vereinfachen – wie etwa die Datensynchronisierung oder die Kompensation von Verzögerungen.
Ein vollständig vernetztes Framework enthält zwei wesentliche Komponenten:
1. Eine Transportschicht (Basisschicht), die den gesamten Datenverkehr und alle Pakete verwaltet, die an/von einem Client, Host oder Server gesendet werden
2. Eine Abstraktionsebene auf höherer Ebene, die allgemeine Netzwerkanforderungen beim Spielen vereinfacht und sich in Tools integriert
Mit „Netcode-Lösung“ ist häufig die zweite Abstraktionsebene gemeint, da Sie hier Ihr vernetztes Gameplay und Ihre Optimierungen implementieren.
Verschiedene Netcode-Lösungen weisen unterschiedliche Einschränkungen und Fähigkeiten auf, die den Aufbau Ihres Multiplayer-Erlebnisses einfacher oder schwieriger machen können. Es ist wichtig, dass Sie genau wissen, was Sie erstellen möchten, und Ihre Optionen prüfen, bevor Sie beginnen. So können Sie möglicherweise kostspielige Refactorings vermeiden.
Unity bietet zwei verschiedene First-Party-Netcode-Lösungen: Netcode für GameObjects und Netcode für Entities.
Das Netcode-Paket für GameObjects wurde entwickelt, um Ihnen die einfachere Synchronisierung von Szenen und GameObjects-Daten über mehrere Clients und Plattformen hinweg mit client- oder serverautoritativen Modellen zu erleichtern. Die Unity-Engine unterstützt Sie bei der Optimierung Ihrer Multiplayer-Spiele mit Tools zur Profilierung des Netzwerks sowohl im Spielmodus als auch zur Laufzeit.
Sie können auch Relay von Unity Gaming Services verwenden, einen kostengünstigen Peer-to-Peer-Begleitdienst, um Spieletests zu skalieren und ein Multiplayer-Spiel zu erstellen, ohne in dediziertes Hosting investieren zu müssen.
Erweitern Sie die Möglichkeiten im kommenden Unity 2022 LTS. Fügen Sie mit dem auf Leistung und Skalierbarkeit ausgelegten Netcode for Entities-Paket auf Basis von ECS die Möglichkeit hinzu, kompetitive Action-Multiplayer-Spiele anzusprechen. Sie können auf anspruchsvolles, serverbasiertes Gameplay mit Vorhersage, Interpolation und Lag-Kompensation abzielen.
Begrenzen Sie die Kosten mit einem dezidierten Server-Build-Target, das Assets automatisch entfernen kann. Nutzen Sie das Spieleserver-Hosting von Unity Gaming Services für die Bereitstellung, ein optimierter Ansatz, der für die Stabilität und Skalierbarkeit Ihrer Gaming-Infrastruktur sorgt, so dass Sie sich darauf konzentrieren können, Ihren Spielern das bestmögliche Spielerlebnis zu bieten.
Unity hat Feedback zu einigen der am häufigsten verwendeten Netcode-Lösungen von Drittanbietern gesammelt und einen Entscheidungsbaum erstellt, der Sie durch den Entscheidungsprozess führt, welches Framework für Sie am besten geeignet sein könnte.
Um diese Tools zu erstellen, haben wir Daten aus drei Quellen gesammelt und analysiert:
- Eine Umfrage unter über 200 Unity-Benutzern, die nach Informationen zu ihren Erfahrungen mit bestimmten Netcode-Frameworks fragten
- Über 20 ausführliche Interviews mit Benutzern, die aktiv Multiplayer-Spiele mit Unity ausliefern
- Erkenntnisse aus Prototypen, die wir mit MLAPI (jetzt bekannt als Netcode für GameObjects), DarkRift 2, Mirror und Photon Quantum erstellt haben.
Kunden haben die besten Netcode-Lösungen anhand ihrer Erfahrungen anhand verschiedener Kriterien bewertet und eingestuft.
Die Vernetzung ist komplex, daher ist das Maß an Stabilität und Unterstützung, das Sie durch Ihre Netcode-Lösung erhalten, von entscheidender Bedeutung. Stabilität und Support jeder Netcode-Lösung wurden anhand von drei Aspekten bewertet: Wahrscheinlichkeit von Fehlern oder Abstürzen, Reaktionszeit zum Beheben von Problemen oder zum Unterstützen der Fehlerbehebung und Wahrscheinlichkeit von Änderungen an den APIs, die zu Fehlern führen.
Wir haben die Bewertungen der Benutzer dazu zusammengestellt, wie einfach der Einstieg und die Durchführung gängiger Aufgaben sind. Dazu gehört auch die Bereitstellung guter Beispiele, Dokumentationen, Tutorials und das Angebot der Lösung an einfachen APIs für das Prototyping.
Wer möchte eine Lösung mit schlechter Leistung? Um dies für jede ausgewertete Netcode-Lösung zu erreichen, haben wir auf begrenzte GC/Zuweisungen, minimalen Latenz-Overhead, leistungsstarke Rechenleistung und idealerweise die Fähigkeit zum Multithreading geachtet.
Je nach Genre des Spiels, das Sie erstellen möchten, ist die Skalierbarkeit der Netcode-Lösung ein wichtiger Aspekt. Ähnlich wie bei der Leistung haben wir die Fähigkeit der Lösung bewertet, eine größere Anzahl verbundener Clients ohne große Leistungseinbußen zu unterstützen.
Eine voll funktionsfähige Netcode-Lösung ist wichtig, um jedes Genre oder die einzigartigen spielspezifischen Anforderungen Ihres Projekts zu unterstützen. Zur Bewertung der Lösungen haben wir uns auf Funktionen mittlerer Ebene wie Objekt- und Variablenreplikation, RPCs, Szenenverwaltung usw. konzentriert. Wir haben auch nach höherstufigen Funktionen wie Vorhersage und Verzögerungskompensation gesucht.
Damit Sie Ihr Budget für die Netcode-Lösung richtig planen können, haben wir auch die Kostenauswertungen der einzelnen Lösungen aufgenommen. Bei dieser Überlegung werden sowohl die Kosten der Bibliotheken/Lösung als auch mögliche versteckte Kosten berücksichtigt, wie z. B. Betriebsgemeinkosten, die separat verwaltet werden müssen.
Bevor Sie sich für eine Netcode-Lösung entscheiden, sollten Sie einige Dinge berücksichtigen.
Zunächst empfehlen wir Ihnen dringend, dennoch eine eigene Evaluierung durchzuführen. Unsere Zusammenfassung der gängigsten Optionen kann hilfreich sein, Sie sollten jedoch auch eine Bewertung basierend auf den Besonderheiten Ihres Spiels vornehmen.
Zweitens basiert diese Liste auf einem Evaluierungslauf im Jahr 2020 und stellt nicht alle derzeit verfügbaren Alternativen für Netcode- oder Transportschichtlösungen dar.
Bedenken Sie abschließend, wie viel zusätzliche netzwerkbezogene Arbeit und Wartungsaufwand Sie bereit sind zu übernehmen. Benötigt Ihr Spiel so viel Netzwerk-Overhead?
Wenn Sie ein zwangloses oder kooperatives Spiel erstellen, das keine perfekte Synchronisierung aller Spielerzustände auf allen Geräten erfordert, sollten Sie eine Netcode-Lösung mit geringerem Overhead und geringeren Entwicklungskosten in Betracht ziehen, beispielsweise Netcode für GameObjects.
Wenn Sie ein Spiel entwickeln, das schneller und actionreicher ist, bei dem die körperlichen Fähigkeiten der Spieler miteinander in Wettbewerb treten, sollten Sie eine Lösung wie Netcode for Entities in Betracht ziehen. Dies kann Dinge wie Client-Vorhersagen unterstützen und verfügt über eine Methode zum Ausgleich von Verzögerungen.
Die folgenden Informationen sind ein Anfang. Wir empfehlen Ihnen jedoch, auch den vollständigen Netcode-Bericht herunterzuladen, in dem wir ausführlicher auf diese Netcode-Lösungen von Drittanbietern eingehen:
- MLAPI (jetzt von Unity übernommen und zu Netcode für GameObjectsweiterentwickelt)
- DarkRift 2
- Photon PUN
- Photonenquanten 2.0
- Spiegel
Notiz: Das PDF deckt die von Kunden am häufigsten zitierten Lösungen ab, es gibt jedoch noch weitere. Einige Kunden diskutierten andere Lösungen, für die wir noch nicht genügend Kundennachweise zur Bewertung gesammelt haben, wie etwa Forge, Normcore, Bolt, LL (Enet, LiteNet usw.). Wir empfehlen Ihnen, diese in Ihre Überlegungen einzubeziehen, um zu sehen, ob sie eine Option für Ihr Setup darstellen.

Egal, ob Sie den nächsten Battle-Royale-Hit oder eine gemütliche Online-Koop entwickeln: Das Verständnis der Grundlagen der Multiplayer-Netzwerke und der Ihnen zur Verfügung stehenden Netcode-Lösungen ist unerlässlich.
Ein Beispiel in Produktionsqualität für ein mit Netcode für GameObjects erstelltes Projekt finden Sie im Boss Room -Koop-Beispiel von Unity. Wenn Sie nach einem Beispiel für ein schnelles, wettbewerbsorientiertes Multiplayer-Spiel suchen, das auch netzwerkfähig ist, sehen Sie sich das ECS Network Racing-Beispiel von Unity an, das mit dem Entities Component System erstellt wurde. Ein Spielbeispiel, das alle Vorteile von Game Server Hosting voll ausnutzt, finden Sie im mit Photon Fusion erstellten Battle-Royale-Beispiel .
Viel Spaß beim Erstellen.
Anmerkung der Redaktion: Dieser Blog wurde im März 2023 mit den neuesten Informationen zu den Netcode-Lösungen von Unity aktualisiert, um Entwicklern bei der Auswahl der richtigen Netcode-Lösung für ihr Spiel weitere hilfreiche Informationen zu bieten. Die Berichtsdaten stammen noch aus dem Jahr 2020.