Wie Fika Productions mit ihrem Peer-to-Peer Multiplayer-Hit Ship of Fools in See stach

Als Fika Productions sich aufmachte, die Marktlücke für ein Koop-Roguelite-Spiel zu füllen, hatten sie den Couch-Koop im Visier. Und dann kam das Jahr 2020. Wir haben uns mit dem leitenden Gameplay-Programmierer Daniel Carmichael und dem Entwickler Yannick Vanderloo zusammengesetzt, um über ihr Spiel zu sprechen und einige der Entwicklungsherausforderungen zu erkunden, die sie lösen mussten, um Ship of Fools in einer für die Branche schwierigen Zeit auf den Markt zu bringen.
Was war die Inspiration für Ship of Fools? Haben Sie Kollegen, die einen nautischen Hintergrund haben?
Daniel: Unsere Inspiration war in erster Linie, die Marktlücke für ein kooperatives Roguelight zu füllen. Wir sind alle Fans des Roguelite-Genres, und obwohl es eine Menge großartiger Roguelite-Spiele gibt, hatten wir das Gefühl, dass keines von ihnen den Koop-Teil wirklich gut umgesetzt hat.
Thematisch gefiel uns die Idee eines Bootes, denn wenn das Boot untergeht, gehen alle unter. Das ist der Kerngedanke: zusammenarbeiten, um das Boot über Wasser zu halten. Keiner von uns hatte nautische Erfahrung, und wir sind auch keine Meeresbewohner oder so etwas.
Keine Tintenfische oder salzigen Seehunde im Personal. Ich hab's. Wie sieht die Marktforschung für Sie aus?
Daniel: Unsere Marktforschung war eigentlich nur eine kleine Reddit-Forschungsaktivität, aber sie hat uns viel gebracht. In 25-30 Subreddits zum Thema Couch-Koop und Roguelites haben wir die Frage gestellt: "Was ist eurer Meinung nach notwendig, um ein erfolgreiches Koop-Roguelite-Spiel zu entwickeln?" Wir erhielten viele Vorschläge, fassten sie in einem Dokument zusammen und suchten nach Überschneidungen und Themen. Dieser Prozess bestätigte einige unserer Ideen und brachte uns auch einige neue Ideen.
Was war Ihr Lieblingsmoment bei der Arbeit an Ship of Fools?
Daniel: Wir hatten einen kleinen Running Gag in unserem Büro. Jedes Mal, wenn wir eine kleine Funktion auslieferten, sagte jemand: "Wir haben ein Spiel!" Und eines Tages fügten wir einen großen Teil des Spiels zusammen, der wirklich wichtig war, und ich testete es, und ich werde mich immer daran erinnern, wie ich zum Team sagte: "Wir haben ein verkaufbares Spiel!", und das fühlte sich wirklich anders an. Das war ein sehr stolzer Moment für uns.
Gab es bei der Entwicklung des Multiplayers eine besondere Herausforderung, und wie haben Sie diese gemeistert?
Yannick: Die Vernetzung in Spielen ist in der Regel einfach, wenn entweder der Host oder der Client die volle Kontrolle übernimmt. Schwierig wird es jedoch, wenn die Kontrolle aufgeteilt werden muss, etwa wenn einige Elemente vom lokalen Spieler und andere vom Spielleiter verwaltet werden.
Geschosse waren in dieser Konstellation eine besondere Herausforderung. Wir wollten, dass sie sich beim Abfeuern gut anfühlen, und dazu mussten wir zahlreiche Szenarien in Betracht ziehen. Wenn ein Feind zurückschießt und ein Spieler den Schuss abwehrt, mussten wir die Interaktionen sorgfältig planen und sicherstellen, dass sie sich für alle Spieler richtig anfühlen, selbst in Situationen mit hoher Latenz. Es gab eine ganze Reihe von Sonderfällen, über die man nachdenken musste. Vor allem, wie man es schnell und reaktionsschnell für beide Spieler macht.
Daniel: Ein weiterer großer Stolperstein war die Vernetzung. Wir haben gut anderthalb Jahre damit verbracht, das Spiel für den lokalen Koop-Modus zu entwickeln, und haben nicht einmal an das Online-Spiel gedacht. Dann bumm! Die Pandemie schlug zu. Plötzlich machte unser lokales Spiel keinen Sinn mehr, da alle zu Hause saßen und nicht mehr zusammen abhingen.
Ursprünglich ging es uns vor allem um die persönliche, unmittelbare Atmosphäre. Das war das Herzstück unseres Spiels. Aber als die Pandemie ausbrach, sagte unser Verleger: "Hey, wir müssen online gehen", und wir sagten: "Na gut, dann machen wir das." Und Mann, es fühlte sich an, als müssten wir ein ganzes Jahr lang alles überarbeiten und jeden Teil des Spiels für das Online-Spiel optimieren.
Daher ein kleiner Tipp für andere Entwickler: Denken Sie immer von Anfang an an das Online-Spiel, auch wenn Sie noch nicht zu 100 % damit vertraut sind. Es ist viel einfacher, sie später zu entfernen, als sie nachträglich einzubauen.
Erzählen Sie mir mehr über die Verwaltung von Projektilen, und wie kam Netcode for GameObjects hier ins Spiel?
Yannick: Die Vernetzung unseres Spiels hat eine einzigartige Wendung genommen. Wir haben kein traditionelles Netcode for GameObjects Setup. Stattdessen gibt es Objekte, die sowohl auf der Client- als auch auf der Host-Seite existieren, wobei jeder die Aktionen des anderen kennt und weiß, wer zu jedem Zeitpunkt die Kontrolle hat. Es ist, als wären sie ständig im Gespräch und würden sich gegenseitig auf dem Laufenden halten.
Wenn zum Beispiel eine Kugel abgefeuert wird und das Ziel auf der Seite des Hosts trifft, wartet das Spiel auf die Bestätigung des Treffers durch den Client. Der Kunde könnte zustimmen oder sagen: "Nein, dem bin ich ausgewichen", oder sogar: "Ich habe die Kugel reflektiert!" Je nach Reaktion des Kunden passt das Spiel das Ergebnis an, damit beide Seiten im Einklang sind.
Dieser Aufbau ermöglicht eine große Flexibilität. Spieler auf der Client-Seite können unmittelbare Reaktionen auf ihre Aktionen sehen, wie z. B. das Ablenken einer Kugel, wodurch sich das Spiel reaktionsschnell anfühlt. Das Endergebnis muss jedoch möglicherweise auf der Grundlage des Inputs des Gastgebers angepasst werden, der im Falle einer Diskrepanz die ursprünglichen Reaktionen außer Kraft setzen kann.
Es ist eine Art Tanz, bei dem die Autorität möglicherweise hin und her wechselt. Wir fanden, dass die einfachste Lösung darin bestand, jede Seite ihr Ding machen zu lassen und dann die Differenzen auf der Grundlage des Feedbacks der anderen Seite auszugleichen, wenn sie auftauchten. Es ist ein gemeinschaftlicher Prozess, der sicherstellt, dass sowohl der Gastgeber als auch der Kunde zum Spielfluss beitragen.
Hier ist eine kleine visuelle Erklärung für Ihre Leser.

Im ersten Bild haben wir unser Multiplayer-Setup, bei dem ich als Todd, der Host auf der linken Seite, und mein Freund Hink, der Client auf der rechten Seite, spiele.

Dann taucht ein Krabbenfeind auf und wirft ein Projektil ab. Hier geht es um Koordination: Sowohl der Host als auch der Client werden über einen Remote Procedure Call informiert. Beide Spieler sehen das Projektil, aber ob es das Boot trifft oder abgelenkt wird, hängt von den Reaktionen der Spieler ab, und der Gastgeber muss auf die Eingabe des Kunden warten, um das endgültige Ergebnis zu bestätigen.

Schließlich sehen wir hier, was passiert, wenn der Kunde, der Hink spielt, das Projektil ablenkt. Bei hohem Ping gibt es eine kleine Verzögerung, so dass der Host zwar zunächst sieht, dass das Projektil das Boot trifft, dies aber korrigiert wird, sobald die Reaktion des Clients bestätigt ist. Auf diese Weise spürt der Client keine Verzögerung - es ist, als würde er in Echtzeit spielen, und seine Aktionen werden vom Host gespiegelt, um das Spiel synchron zu halten.
Die Idee dahinter ist, dass das Spiel sofort reagiert, wenn Sie in der Hitze des Gefechts einen Schuss abgeben oder einen Angriff abwehren, so dass sich das Multiplayer-Erlebnis nahtlos anfühlt.
Gibt es noch weitere Einzelheiten, die Sie uns mitteilen können? Gibt es etwas, das unsere Leser als wichtige Lektion mitnehmen können?
Daniel: Wir sind auf eine Reihe von Herausforderungen gestoßen, aber eine große Herausforderung war die Speicherverwaltung. Es war eine steile Lernkurve, sich mit dem Zusammenbau und den Addressables vertraut zu machen, vor allem, weil dies das erste Multiplayer-Spiel für das gesamte Team war.
Das Komische ist, dass unser Spiel nicht einmal so viele Assets enthält, aber die Ladezeiten betrugen an einer Stelle zwei Minuten, was für ein kleines Spiel verrückt ist. Das hat bei den Spielern sicherlich für einigen Wirbel gesorgt.
Wir haben also auf die harte Tour gelernt, wie man die Dinge in Bezug auf den Speicher und die Ressourcen schlank hält. Wir hätten uns von Anfang an auf die Grundlagen konzentrieren sollen.
Was ist mit Addressables? Was haben Sie dort konkret gelernt?
Yannick: Die Sache mit Addressables ist ziemlich einfach. Sie müssen Ihre Assets in Gruppen organisieren, die sinnvollerweise gleichzeitig geladen werden können. Auf diese Weise wird Ihr Spiel nicht mit Dingen überfrachtet, die Sie in einer bestimmten Szene gar nicht benötigen.
Unser Spiel hat zum Beispiel verschiedene Sektoren, jeder mit einer eigenen Reihe von Feinden, Szenen und Landschaften. Ursprünglich hatten wir alles in einer einzigen großen Gruppe zusammengefasst, was ein Alptraum für die Ladezeiten war. Um die Dinge zu rationalisieren, haben wir begonnen, die Vermögenswerte nach Sektoren zu gruppieren. Das hat einen großen Unterschied gemacht, denn jetzt können wir je nach Bedarf nur die Feinde oder nur die Szenerie eines Sektors laden, was alles viel effizienter und reibungsloser macht.
Warum haben Sie Netcode for GameObjects (NGO) für die Vernetzung gewählt?
Yannick: Wir haben uns für NGO als Netzwerklösung entschieden, weil es von Unity unterstützt wird. Das bedeutet, dass sie sich wahrscheinlich zusammen mit der Plattform weiterentwickelt und langfristig unterstützt wird, was für uns sehr wichtig ist. Außerdem hatte die NGO alle Funktionen, die wir brauchten.
Wir wollten vor allem eine Peer-to-Peer-Verbindung, um Serverkosten zu vermeiden, die bei einem Spiel, dessen zukünftige Verkäufe und Spielerbasis ungewiss sind, eine große Rolle spielen können. Bei NGO waren wir uns sicher, dass wir sowohl für unsere derzeitigen Bedürfnisse als auch für die künftige Entwicklung eine sichere Wahl getroffen hatten. Es schien uns eine kluge Entscheidung zu sein, im Unity-Ökosystem zu bleiben und langfristigen Support für unser Spiel zu gewährleisten.
Wie geht es mit Ship of Fools weiter?
Bislang haben wir zwei große Updates mit neuen Inhalten veröffentlicht und zwei DLCs auf den Markt gebracht, die neue Charaktere einführen und für Abwechslung sorgen. Diese DLCs sind völlig optional und geben den Spielern mehr Auswahlmöglichkeiten, ohne dass sie sich ausgeschlossen fühlen, wenn sie sich nicht dafür entscheiden, sie zu kaufen. Das Tolle daran? Diese großen Inhaltsaktualisierungen waren geplant, und nach dem, was wir gesehen haben, haben sie den Leuten wirklich gefallen.
Was die nächsten Schritte angeht, so haben wir Pläne, die wir aber vorerst noch unter Verschluss halten müssen. Aber wenn wir bereit sind, über künftige Aktualisierungen zu sprechen, werden Sie auf jeden Fall informiert sein.
Sind Sie an der Entwicklung von Multiplayern interessiert? Im Multiplayer-Abschnitt des 2024 Unity Gaming Report erhalten Sie Einblicke von erfolgreichen Studios, neue Daten darüber, warum immer mehr Studios Multiplayer-Spiele entwickeln, und eine Fülle von Tipps, die Ihnen und Ihrem Team helfen, der Zeit voraus zu sein.