Games Focus: Erstellen und Betreiben von vernetzten Spielen mit Multiplayer-Netzwerken

Dies ist der achte Blog in unserer Reihe Games Focus , in der wir die wichtigsten Produktentwicklungsinitiativen für das kommende Jahr und darüber hinaus vorstellen. In dieser Ausgabe berichten wir über den Status, die kommenden Veröffentlichungspläne und die Zukunftsvision für Unity Multiplayer Networking.
Hallo, mein Name ist Kiki Saintonge und ich bin Produktmanagerin im Multiplayer-Team - dem Team, das sich mit der Bereitstellung von Unitys Netcode für GameObjects Lösung.
Ich bin seit etwa einem Jahr bei Unity, aber ich bin seit 2013 Hobby- und Indie-Unity-Entwickler. Meine Leidenschaft gilt den Spielen, insbesondere den inspirierenden Dingen, die ihr macht. Ich freue mich sehr, heute in diesem Beitrag über unsere Multiplayer-Lösungen zu sprechen, vor allem, weil so viele von euch den Bedarf und den Wunsch nach einer umfassenderen und zugänglicheren Lösung für die Multiplayer-Entwicklung geäußert haben. Wir sind näher dran, als Sie denken.

Seien wir ehrlich: Die Entwicklung von Multiplayer-Spielen kann sehr schwierig sein, vom Entwurf der Mechanik bis zur Implementierung und zum Testen. Es gibt so viel zu berücksichtigen - Latenz, Paketverluste, Verwaltung von Szenen, was über das Netz gesendet werden soll und was nicht - vieles davon ist schwer zu verfolgen oder zu simulieren. Sogar unsere Netzwerklösungen von Drittanbietern benötigen Tools von Drittanbietern, nur um zu sehen, was da eigentlich los ist.
Der Aufbau eines kompletten Netzwerksystems für Ihr Spiel sollte so sein wie das Spiel selbst: einzigartig und so ausgefeilt, dass es zu Ihrem Spielerlebnis passt.
Aus diesem Grund wollten wir eine Netcode-Lösung entwickeln, die flexibel genug ist, um alle Kernaspekte Ihres Multiplayer-Spiels zu berücksichtigen, und es Ihnen gleichzeitig erleichtert, bei Bedarf Tools oder Dienste von Drittanbietern zu nutzen. Dies ist das grundlegende Ziel unserer Netcode-Lösungen.

Es ist auch wichtig zu bedenken, dass mit der Entwicklung von Multiplayer-Spielen auch Dienstleistungen und Umfang einhergehen, zwei Dinge, an die man im Zusammenhang mit Einzelspieler- oder Koop-Spielen vielleicht nicht gedacht hat. Unity Gaming Services ist unsere kürzlich eingeführte Plattform, die Game Server Hosting (Multiplay), Matchmaker, Relay und Lobby Services umfasst. Es wurde entwickelt, um Ihnen alle Tools an die Hand zu geben, die Sie benötigen, um eine solide Grundlage zu schaffen, fesselnde Spielerlebnisse zu kreieren und das Spielwachstum voranzutreiben - und das alles innerhalb desselben integrierten Ökosystems.

Wir haben dieses Jahr einige erstaunliche Netcode-Lösungen angekündigt. Unsere erste große Version von Netcode für GameObjects ist jetzt in 2020 und 2021 LTS verfügbar.
Diese GameObject-basierte Netcode-Lösung hilft Ihnen bei der Entwicklung kleinerer Koop-Multiplayer-Spiele. Wenn Sie Ihre Erfahrung jedoch mit DOTS (Entities) aufgebaut haben, freuen wir uns auch, unsere Netcode for Entities-Lösung für den Tech Stream 2022 ankündigen zu können, die Ihnen dabei hilft, eine größere Multiplayer-Erfahrung auf die Beine zu stellen. In unserem nächsten Beitrag dieser Serie erfahren Sie mehr über diese Veröffentlichung.
Diese Stacks decken eine breite Basis für die Entwicklung von Multiplayer-Spielen ab. Zusammen sind sie ein Schritt von vielen, um Ihnen den Einstieg in Multiplayer-Spiele zu erleichtern. Diese Versionen sind auch speziell auf kritische Netzwerkszenarien ausgerichtet, wie z.B. die Abstraktion der Kommunikation mit Servern und Clients, das Senden von Objektdaten über das Netzwerk und die Eingabeverarbeitung.
Diese Version unterstützt auch einige wichtige Tools, mit denen Sie den Paketverlust, die Größe und die Latenz von vernetzten Objekten verfolgen können. Network Profiler ist eine Erweiterung des Profiler, der in den Editor integriert ist, und Runtime Network Stats Monitor (RNSM) ist eine anpassbare, leichtere "Profiler"-Ansicht der Netzwerkzustände, die auf eigenständigen Builds für Playtests ausgeführt werden kann.
Sie können diese Tools über unser com.unity.multiplayer.tools-Paket im Editor installieren.
Alle unsere Netcode-Stacks - ja, das schließt Entities ein - bauen auf unserer Transportschicht auf. Diese Schicht ist netzcodeunabhängig und kann mit jeder Lösung verwendet werden.
Das Unity Transport Protocol (oder UTP) erweitert das User Datagram Protocol mit zusätzlicher Unterstützung für Unity Relay und zusätzlicher Sicherheit durch DTLS. Diese Ebene funktioniert unter Windows, Mac, Linux, iOS, Android und allen wichtigen Konsolen.
Über die Eigenschaften des Debug-Simulators unseres Transportpakets bieten wir auch einige leichte Netzwerksimulationsmöglichkeiten. So können Sie beim Testen im Editor Latenz- oder Bandbreitenprobleme drosseln oder simulieren.
Wenn Sie direkten Zugriff auf diese untergeordnete Netzwerkbibliothek haben möchten, können Sie sie direkt über das com.unity.transportpackageinstallieren.
Obwohl Netcode für GameObjects relativ neu ist, werden bereits Spiele damit entwickelt.

Das wunderbare Team von Fika Productions und Team17 arbeiten an einem wunderschönen handgezeichneten Spiel, Schiff der Narren. Es ist ein rasantes Multiplayer-Koop-Spiel mit nautischem Bezug, das komplett in Netcode für GameObjects entwickelt wurde.
Wir sind ständig bestrebt, Lücken zu schließen und das Geschehen im Netzwerk durch Multiplayer-Tools zu entmystifizieren.

Der Multiplayer-Spielmodus wäre ein erster großer Schritt, um die Multiplayer-Entwicklung zu einer erstklassigen Editor-Erfahrung zu machen.
Das Ziel dieses Multiplayer-Tools ist es, dass es "einfach funktioniert", sobald Sie den Spielmodus betreten. Es bietet die gleiche Erfahrung wie der Einzelspieler-Workflow, aber jetzt können Sie bis zu vier Clients in der gleichen Editor-Sitzung laufen lassen, wobei jeder seine eigenen Konsoleninformationen erhält und mit einem netzwerkbasierten Tagging-System unterschieden werden kann.

Der Netzwerksimulator ist eine weitere Funktion, die wir von der Transportebene zu einem voll funktionsfähigen Tool mit einer Benutzeroberfläche ausbauen möchten, mit der Sie Verzögerungsspitzen einführen, Ping-Raten festlegen, Verbindungen/Trennungen nach Belieben auslösen und sogar bestimmte Netzwerkszenarien für die Durchführung von Spieltests anpassen können.
Wir sind dabei, unser Transportpaket besser in Burst zu integrieren und WebSockets zu unterstützen.
Ein dedizierter Server ist das Herzstück vieler Multiplayer-Spiele, und er bringt die Notwendigkeit mit sich, eine feinere Kontrolle darüber zu haben, welche Art von Headless-Server Sie aufbauen.
Wir haben begonnen, den Arbeitsablauf auf einem dedizierten Server zu untersuchen. Dies beginnt damit, dass Sie mehr Kontrolle und Klarheit darüber erhalten, welche Assets Sie auf einem Server haben wollen und welche nicht. Im Wesentlichen wählen Sie die Inhalte aus, die Sie in Ihren Server-Builds haben möchten, was Ihnen auf lange Sicht Zeit und möglicherweise Bandbreite spart.
Wenn Sie den Status dieser und weiterer Funktionen von Netcode for GameObjects sehen möchten, werfen Sie einen Blick auf unsere Roadmap für Multiplayer-Netzwerke, um zu sehen, was in Version 1.0 enthalten ist und was für zukünftige Versionen in Arbeit ist. Einen Überblick über das gesamte Unity-Ökosystem erhalten Sie auch in unserer jüngsten Unite 2022 Roadmap-Sitzung.
Die Entwicklung von Multiplayer-Spielen ist nicht einfach und man fühlt sich oft überfordert, wenn man sich mit der Entwicklung eines Multiplayer-Spiels beschäftigt - selbst wenn man die SDK-Dokumente zur Hand hat.
Unser Ziel ist es, Sie mit den Tools auszustatten und zu unterstützen, mit denen Sie Ihren Spielern ein großartiges Multiplayer-Spielerlebnis bieten können. Ein Teil dieses Versprechens besteht darin, nicht nur die grundlegende Netzwerktechnologie bereitzustellen, sondern auch die Dokumentation und die Schulungsvorlagen, wie z. B. Boss Room, die Sie benötigen, um ihre Anwendung zu verstehen.
Es gibt heute viele Ressourcen, die Sie nutzen können, um mehr über Unity-Multiplayer-Lösungen zu erfahren.

Boss Roomist ein kleines Beispielprojekt für ein kooperatives Spiel, das mit Netcode for GameObjects erstellt wurde. Es ist so konzipiert, dass es in seiner Gesamtheit verwendet werden kann, um Ihnen zu helfen, die Konzepte und Muster hinter einem Multiplayer-Spielablauf zu erforschen.

Wir entwickeln auch weiterhin interne Projekte, um neue Funktionen und die allgemeinen Möglichkeiten von Netcode for GameObjects zu zeigen.
Unser neuestes Spiel ist Galaktische Kätzchenein spielbarer 2D-Multiplayer-Koop-Shooter mit offenem Quellcode.
In diesen Blogbeiträgen erfahren Sie mehr über die Multiplayer-Suite von Unity:
- Ermöglichen Sie großartige Multiplayer-Erlebnisse mit Relay und Lobby
- Enter the Boss Room: unser neues Multiplayer-Probespiel
- Zustand von störendem Verhalten in Multiplayer-Spielen
- Auswahl des richtigen Netcodes für Ihr Spiel
Außerdem gibt es tolle Ressourcen, die von unserer unglaublichen Community erstellt wurden:
Wir hoffen, dass Sie sich weiterhin an unserer Games Focus-Serie beteiligen und uns Ihr Feedback geben. Stellen Sie Ihre Fragen und Kommentare zu diesem Blog im Multiplayer-Forum oder in diesem speziellen Thread.
Besuchen Sie unser Productboard, um weitere Einzelheiten über die Roadmap zu erfahren. Sie müssen sich mit Ihrer Unity ID anmelden und die Verwendung funktionaler Cookies akzeptieren. Jede Karte auf dieser interaktiven Tafel kann angeklickt werden, so dass Sie mehr Details zu jedem Thema erfahren und gleichzeitig die Möglichkeit haben, Ihr Feedback zu geben. Klicken Sie auf eine Karte, wählen Sie aus, wie wichtig das Thema für Sie ist, fügen Sie Ihren Standpunkt hinzu und senden Sie es ab. Dieses Feedback wird dann direkt an die entsprechenden Produktteams weitergeleitet.
Netcode for GameObjects ist eine fähige Netcode-Lösung, aber wenn Sie etwas viel Größeres bauen wollen - denken Sie an Galaxien oder Multi-Server-MMOs mit Tausenden von gleichzeitig aktiven Spielern - dann sollten Sie auf die Veröffentlichung unseres nächsten Blogs in derSpiel-Fokus-Reihewarten, in dem es darum geht, wie man größere Welten und reichhaltigere Umgebungen erstellen kann.
