Wie man eine Spieleveröffentlichung überlebt - ein Gastbeitrag von Stefan Marx
Special
Habt ihr euch schon mal gefragt, vor welchen Problemen Entwickler stehen, wenn zum Release mehrere Millionen Spieler die Server stürmen? Was genau die Teams tun, um den Launch zu "überleben", verrät Stefan Marx in einem Gastbeitrag.
Die Veröffentlichung eines neuen Spiels ist immer eine spannende und oft auch sehr stressige Angelegenheit - sowohl für Fans als auch für Entwickler. Spielefans warten jahrelang auf einen neuen Titel ihrer Lieblingsreihe und können es kaum erwarten, jedes neue Feature, jedes Level, jeden Winkel des Spiels zu erforschen und zu diskutieren. Der Druck, der vor einem solchen Event auf den Entwicklungsteams lastet, ist dementsprechend groß. Die Entstehung großer AAA-Titel wie der bekannten Battlefield-Reihe von EA DICE ist mit der aufwändiger Hollywoodfilme zu vergleichen. Jahrelang haben hunderte von Menschen all ihre Kreativität, ihr Herzblut und ein Budget von oft hunderten Millionen Dollar in die Entwicklung eines Spieles gesteckt. Da wollen Entwickler und Publisher natürlich sicherstellen, dass in den entscheidenden ersten Stunden nach dem Launch, in denen Unmengen von Spieler auf die Server strömen, alles ohne Probleme funktioniert.
Die richtige Basis
Damit ein Spiel reibungslos funktionieren kann, braucht es einige wichtige Backend Services. Zum einen müssen Spieler sich authentifizieren, ihr Passwort zurücksetzten und ihre Abonnements sowie ihr Inventar verwalten können. Wenn ein Spieler einer Partie beitreten will, muss das Matchmaking funktionieren: Tausende User müssen zeitgleich einem Spiel auf einem freien Server zugewiesen werden, und sollte es kein passendes geben, muss ein neues Spiel erstellt werden. In jedem Fall muss darauf geachtet werden, dass Menschen zusammengeführt werden, die auf einem ähnlichen Level sind und ähnliche Fähigkeiten haben, damit die Partie auch bis zum Ende spannend bleibt und allen Spaß macht.
Während des Spiels werden permanent Statistiken erstellt und aktualisiert. Bei Battlefield 5 laufen pro User etwa 10.000 Zähler im Hintergrund und überwachen nahezu alles: Wie lange sitzt ein Spieler in einem Fahrzeug? Wie oft und wie schnell wird geschossen? Wie und wo wird getroffen? Aus den gesammelten Daten werden zahlreiche Ranglisten erstellt, sowohl globale als auch lokale, und für die verschiedensten Errungenschaften und Fähigkeiten, denn so unterschiedlich wie die Battlefield-Spieler sind auch deren Talente.
Soziale Aspekte spielen für die Battlefield-Entwickler ebenso eine Rolle. Sie bieten vernetzten Usern die Möglichkeit, die Spieleaktivitäten ihrer Freunde im Auge zu behalten, um sich ihnen auf dem gleichen Server anschließen zu können. Auch diverse interne Dienste, die nicht direkt an die Spieler gerichtet sind, müssen reibungslos funktionieren. Beispielsweise sind Leveldesign-Teams dafür zuständig, dass ein Spielfeld nicht komplett symmetrisch ist, denn das würde unnatürlich aussehen. Trotzdem müssen beiden Teams die gleichen Chancen geboten werden. Dafür werden Heatmaps erstellt, die zeigen, wo sich Spieler während der Runden versammeln, wo es gute Plätze für einen Hinterhalt gibt, und ob Spieler Wege finden, die so von Entwicklung und Design nicht geplant waren.
Viele dieser Prozesse laufen automatisiert ab, was für Entwickler eine enorme Unterstützung bedeutet. Dennoch müssen alle Prozesse, sowohl während der Entwicklung als auch nach der Veröffentlichung des Spiels, permanent überwacht werden. Dabei ist es wichtig, dass es nicht nur Personen im Team gibt, die sich mit den zur Überwachung notwendigen Tools auskennen, sondern dass Entwickler sich gezielt darum kümmern, dass alles für alle verständlich und nachvollziehbar gestaltet wird. Viele dieser Prozesse sind außerdem für die Funktion des Spieles oder das Spielerlebnis essentiell, ein Ausfall muss unbedingt frühzeitig erkannt oder verhindert werden.
Try and Error
Damit im entscheidenden Moment alles nach Plan läuft, muss im Vorfeld der Markteinführung sorgfältig getestet werden. Bevor ein Spiel endgültig veröffentlicht wird, gibt es Pre-Launch Events: eine geschlossene Alpha- und eine offene Beta-Testphase. Während dieser Phasen wird natürlich noch nicht das komplette Spiel präsentiert, sondern nur einige ausgewählte Funktionen und Spielmodi. Die Entwickler lassen User ihr neues Game spielen, um einen Blick darauf werfen zu können, wie Features funktionieren, was an den Backends passiert und ob die Spielenden sich so verhalten, wie man es erwartet hat. Um an der geschlossenen Alpha-Phase teilzunehmen, müssen Spieler explizit eingeladen werden. Mit ein paar hunderttausend Teilnehmenden ist die Alpha-Phase etwas kleiner und dient in erster Linie dazu sicherzustellen, dass alle Spielfunktionen das tun, was sie sollen. Die Beta, auf der anderen Seite, ist speziell für Belastungstests gedacht und viel, viel größer. Es strömen nicht ganz so viele Spieler wie bei der Markteinführung auf die Server, aber noch immer genug um zu überprüfen, ob die Backends dem kommenden Ansturm standhalten können.
Die Beta-Phase ist oft stressiger als die tatsächliche Markteinführung, da in dieser Zeit sämtliche Aspekte des Spiels genauestens unter die Lupe genommen werden. Die Entwickler suchen gezielt nach Problemen, die die Leistung des Spiels und das Erlebnis der Spieler beeinflussen. Dazu gehören technische Aspekte wie Serverstabilität, Latenzwerte und das bereits erwähnte Matchmaking, sowie das Gameplay an sich: Waffenbalancing, Spielfortschritt und andere Aspekte, die optimiert werden müssen, um das Spiel so spaßig wie möglich zu gestalten. Während der Testphasen werden auch bewusst Systeme offline genommen und absichtlich Probleme geschaffen, um die operativen Kapazitäten des Spiels zu testen. Diesen Ansatz bezeichnet man auch als Chaos Engineering. So versuchen die Entwickler sicherzustellen, dass sie so früh wie möglich Metriken haben: Funktionen, die die Eigenschaften von Software in einem Zahlenwert abbilden, um so Vergleichs- und Bewertungsmöglichkeiten zu schaffen, die essentiell für die Beseitigung von Fehlern sein können.
Wachsamkeit rund um die Uhr
Um mögliche Herausforderungen rechtzeitig diagnostizieren und bewältigen zu können, braucht es eine Log-Management-Plattform, die es Entwickler ermöglicht, das automatisch geführte Protokoll aller Aktionen von Prozessen auf dem Computersystem einzusehen und mit anderen zu vergleichen. Früher waren die Werkzeuge zum Sammeln und Durchsuchen von Protokollen sehr rudimentär. Es wurde auf ein Problem reagiert und versucht, einen Server zu finden, der mehr Informationen enthält. Diese Methode war umständlich und zeitaufwändig und führte dazu, dass die meisten den Kontakt mit Protokollen außerhalb von Problembehandlungen mieden. Demzufolge wussten nur wenige Mitarbeiter des Unternehmens, wie man auf Protokolldaten zugreift und diese nutzt.
Es bringt einen großen Vorteil, Metriken und Protokolle in einer Überwachungsplattform zu vereinen, denn so können noch tiefere Einblicke in die Leistung eines Spiels gewonnen und Probleme diagnostiziert werden, die mehr Details zur Fehlerbehebung benötigen. Dank ihrer modernen Tools war es den Entwickler von DICE möglich, Milliarden von Logs während des laufenden Betriebs zu durchsuchen und die für sie relevanten Informationen schnell zu finden. So konnten sie bei der Fehlersuche proaktiver werden, statt nur zu reagieren, und fanden Fehler, lange bevor diese den Spielenden Probleme bereiteten. Außerdem begannen Entwickler, die nun viel leichter erreichbaren Protokolldateien zu bereinigen und mit kontextbezogenen Daten und Feldern anzureichern, die bei der Fehlerbehebung einen großen Unterschied machen würden. All das führte dazu, dass Protokolle nun oft die erste Quelle sind, um die Leistung von Spielen zu bewerten, besonders wenn Millionen von Spielern an einem Spiel beteiligt sind. Der Arbeitsablauf bei der Fehlersuche ist effizienter geworden und Probleme, die früher wochenlang gesucht wurden, können jetzt innerhalb weniger Stunden identifiziert und behoben werden. Wenn all das bereits in der Beta-Phase passiert, steht einer aus technischer Sicht ereignislosen Markteinführung nichts mehr im Wege.
Belastungstests für Entwickler
Die Produktion nähert sich dem Ende, ein finales Release-Datum wird festgelegt und das Marketing-Team tut sein Bestes, um dieses Datum überall zu verbreiten und die Aufregung der Fans zu schüren, die an diesem Tag ihren Höhepunkt erreichen wird. Bei AAA-Spielen wie Battlefield 5 steigt der Traffic beim Release von Null auf den höchsten Wert, den das Spiel je erleben wird - und das können bis zu 30 Millionen User sein. Aufgabe der Software-Teams ist es also, sicherzustellen, dass jeder dieser 30 Millionen User möglichst schnell Zugriff auf einen Spieleserver erhält und das Spiel für alle flüssig läuft.
Vor allem in den Wochen nach dem Launch wird exzessiv gezockt, dann sinkt die Zahl der Spieler langsam wieder. Die Auslastung der Server nimmt ab, was natürlich erst einmal gut für das Stresslevel der Entwicklungsteams ist. Diese werden dann allerdings mit einem neuen Problem konfrontiert: Um mit der hohen Auslastung in den ersten Wochen fertig zu werden, wurden die Serverkapazitäten so weit ausgebaut, dass mehr vorhanden ist als schlussendlich gebraucht wird - nur um auf Nummer Sicher zu gehen. Die Zahl der ungenutzten Server, die dennoch Kosten verursachen, steigt weiter an. Es gäbe natürlich auch die Möglichkeit eine Fehlermeldung anzuzeigen, sobald die Server voll sind, oder die Spieler in eine Warteschlange zu stecken. Eine Notlösung, die weder Spieler noch Entwickler wirklich zufrieden stellt.
Wenn es darum geht, eine immense Anzahl von Spieleservern über mehrere Wochen hinweg möglichst kostengünstig zu betreiben, ist die Cloud eine fantastische Möglichkeit. Amazon, Google und Co. können zwar nicht direkt die komplette Anzahl benötigter Server zur Verfügung stellen, aber immer noch genug, um den Kostenaufwand deutlich zu reduzieren. EA Dice hat schon früh eine spezielle Software für den Betrieb ihrer Spieleserver entwickelt, die Spieleserver auf der ganzen Welt hoch und runter fährt, je nachdem, welche Kapazitäten gerade benötigt werden.
Wenn zur Veröffentlichung eines Games also mehrere Millionen Spieler spielen wollen, müssen Unmengen von Servern betrieben und überwacht werden. Anhand von Belastungstests wurde während der Testphasen ermittelt, wie viele Server über den gleichen Host laufen können. Besonders die Frameraten und Server-Antwortzeiten werden genauestens überwacht. Sollten diese sinken, könnte das Spiel anfangen zu stocken und Aktionen der Spieler können ohne Effekt bleiben, zum Beispiel wenn auf einen bereits verwundeten Gegner geschossen wird, aber nichts passiert. Das liegt häufig daran, dass die Pakete, die die nötigen Informationen über den Treffer enthalten, nicht auf dem Server angekommen sind, weil dieser überlastet war und diverse Pakete "wegwerfen" musste. Das kann für User unglaublich frustrierend sein.
Der Schlüssel zum Erfolg
Wie überlebt man also eine Spieleveröffentlichung? Natürlich in erster Linie durch gute Vorbereitung, denn in den entscheidenden 48 Stunden bleibt nicht viel Zeit, um auf Probleme zu reagieren. Entscheidend für einen reibungslosen Ablauf sind in erster Linie die Durchführung von Pre-Launch-Events und Belastungstests, die Gestaltung möglichst widerstandsfähiger Systeme und das Vorhandensein von mehr Serverkapazität als schlussendlich gebraucht wird. Es muss außerdem schon im Vorfeld sichergestellt werden, dass alle Metriken vorhanden sind, die benötigt werden, um alles genauestens zu überwachen - es ist immer besser zu viele Daten zu sammeln als zu wenige.
