Vier wichtige DevOps-Praktiken, damit Ihre Spiele herausragen

Übergang von Hot-Fix-Crunches zu schnellen Iterationen und Releases.
Einleitung
60-Stunden-Wochen, Monate vor einer Veröffentlichung? Die ganze Nacht Code schreiben, um mehrmals pro Woche wundersame Fehler zu beheben? In letzter Minute, buchstäblich kurz vor der Markteinführung, neue Funktionen hinzufügen?
Die Branche ist berüchtigt für ihre "Crunch-Crunch-Crunch"-Kadenz. Und vielleicht sind Sie jemand, der von dieser Verrücktheit profitiert. Aber wenn sich das Geld am Ende des Haushaltsjahres nicht auszahlt, muss man sich fragen, warum?
Vielleicht war einer Ihrer Hauptentwickler mit der Markteinführung überfordert und hat gekündigt, so dass sich die Veröffentlichung verzögerte. Vielleicht hat ein nächtlicher Fix eine Kettenreaktion von weiteren nächtlichen Fixes ausgelöst. Vielleicht drohte eine in letzter Minute eingebrachte, unzureichend getestete Funktion das gesamte Projekt zum Einsturz zu bringen. Wie auch immer das konkrete Szenario aussieht, eines ist klar: Sie waren schon zu oft hier.
Wenn sich diese Taktiken nicht lohnen, liegt das daran, dass Sie trotz Ihrer Heldentaten den Kunden nicht das geben, was sie wollen. Die Fähigkeit, Shader zu skripten, Wasser zu animieren, sich Level vorzustellen oder ein CDN zu konfigurieren, ist nur ein Teil dessen, was nötig ist, um erfolgreich einen Mehrwert für die Gaming-Community zu schaffen. Um die Kluft zur profitablen Produktion zu überwinden, müssen Sie Systeme und Prozesse anwenden, die Ihre Energie in eine Richtung lenken: großartige Spiele für Ihre Fans zu liefern.
Es bedarf intelligenter DevOps-Praktiken, um ein Studio vom Chaos der Krise in ein Land der produktiven, effektiven Arbeitsabläufe zu verwandeln. Ziel ist es, Ihrem Team seine wertvollste Ressource - Zeit - zurückzugeben, damit es sich um die wirklich wichtigen Dinge kümmern kann.
Aber wie viel Zeit kann man tatsächlich zurückgewinnen, wenn man die Knackpunkte beseitigt? Jahre, so Josh Nixdorf, technischer Direktor bei Electronic Arts: "Aus der Sicht meines Teams ist eine der wichtigsten Kennzahlen, die wir verfolgen, die eingesparten Arbeitsjahre. Auch das hat sich exponentiell erhöht, als wir auf unserer DevOps-Reise vorankamen, angefangen mit etwa 20 Jahren Aufwand bei unserem ersten Versuch mit DevOps bis hin zu mehr als 1.000 Jahren heute."
Durch die Umstellung auf einen strafferen und gezielteren Entwicklungsprozess befähigen Sie Ihr Team, Ihren Spielern bessere Erlebnisse zu bieten - und Sie werden in die Lage versetzt, häufiger zu liefern. Dieses E-Book stellt einige grundlegende DevOps-Prinzipien und -Prozesse vor, die für Spieleentwicklungsumgebungen spezifisch sind, und hebt einige wesentliche DevOps-Tools für einen reibungslos funktionierenden Technologiestapel eines Studios hervor.
Warum DevOps?
Die Entwicklung von Spielen wird mit jeder neuen Konsolengeneration komplizierter. Die Spieler erwarten zunehmend bessere Grafiken, häufige Aktualisierungen nach der Markteinführung und einen hervorragenden Support. Wenn Ihr Spiel bei der Markteinführung voller Bugs ist, ist es extrem schwierig - wenn nicht sogar unmöglich - diese zu beheben. Chris Hewish, Präsident von Xsolla, sagte in diesem Interview mit GamesIndustry.biz: "Man kann immer auf einem Erfolg aufbauen, aber man kann nicht wirklich aus der Asche eines gescheiterten Starts wachsen."
Um den Wert eines Spielers zu maximieren, müssen Sie unbedingt Ihre Prozesse und Werkzeuge untersuchen und anschließend Optimierungsmöglichkeiten ermitteln. Sind Ihre derzeitigen Arbeitsabläufe in der Lage, Ihr Spiel auf Dauer zu unterstützen? Wie sieht es mit zukünftigen Projekten aus?
Studioteams neigen dazu, ihre Aufmerksamkeit darauf zu richten, wie Entwickler und Künstler immer schwierigere Aufgaben bewältigen können. Doch dieser Fokus führt nur allzu leicht dazu, dass das Verständnis für Prozesse völlig fehlt. Wenn ein Programmierer zum Beispiel seine Arbeit häufiger unterbricht und überprüft (ein DevOps-Prozess), verbringt er weniger Zeit mit der Behebung von Fehlern.
Ohne dieses Prozessverständnis werden die Studios nicht bestehen können:
- Überlastete Entwickler, die ständig im Crunch-Modus arbeiten
- Von Fehlern und negativem Feedback geplagte Releases
- Allgegenwärtige Frustration durch verworrene Entwicklungspläne
- Vergeudeter Aufwand in allen Bereichen
Die Lösung liegt in der Einführung von DevOps-Praktiken und -Tools, die die Entwicklungszyklen optimieren und verkürzen, um eine gleichbleibend hohe Leistung der Spiele zu erzielen. Die Vorteile sind zu zahlreich, um sie alle aufzuzählen, aber hier sind einige davon:
- Automatisierung von Prozessen, die Entwickler von sich wiederholenden Aufgaben befreien
- Proaktive statt reaktive Entscheidungsfindung
- Kontinuierliche Integration und Bereitstellungen, die Ihren Spielern qualitativ hochwertigere Inhalte bieten
- Weit weniger Überarbeitung, Stress und Burnout
Und die Auszahlung am Ende des Haushaltsjahres? Mehr, als Sie sich vorstellen können: zufriedenere Mitarbeiter, zufriedenere Kunden und zufriedenere Buchhalter.
Die vier wesentlichen Praktiken
Sie brauchen keinen DevOps-Ingenieur, um die Vorteile eines DevOps-ähnlichen Ansatzes in Ihrer Entwicklungsumgebung zu nutzen. Selbst ein einzelner Entwickler kann seine Produktivität steigern, wenn er diese vier wesentlichen DevOps-Praktiken versteht.
Robuste Version Control: Für fast jeden Programmierer ist das Sichern von Codeänderungen so selbstverständlich wie das Blinzeln. Eine einfache Übergabe stellt sicher, dass die Arbeit sicher ist und nicht überschrieben wird und verloren geht. Bei der Entwicklung von Spielen geht es jedoch um die Verwaltung und Nachverfolgung einer weitaus größeren Vielfalt an manchmal riesigen Assets, die von verteilten Künstlern und anderen erstellt werden. Dies erfordert ein vollwertiges Version Control System mit einem leistungsstarken Funktionsumfang.
Build Automation (CI/CD): Kontinuierliche Integration (CI) bedeutet, dass Arbeit aus einer oder mehreren Quellen automatisch in ein zentrales Repository zusammengeführt wird. Continuous Delivery (CD) bedeutet, dass während der Entwicklung automatisch neue Builds erstellt werden. Die Implementierung einer automatisierten CI/CD-Pipeline ist eine etablierte Best Practice in der agilen Methodik, die eine konsistente und automatisierte Methode zum Erstellen, Verpacken und Testen Ihres Spiels bietet.
Verwaltung von Artefakten: Neben Code und Assets, die von einem Version Control System verwaltet werden, gehören zu den Artefakten eine Vielzahl von Abhängigkeiten wie Basis-Images, Softwarepakete, Helm-Diagramme, Metadaten und andere tangentiale, aber wichtige Ressourcen. Ein Artefaktmanager ergänzt die Versionskontrolle, indem er ein zentrales Repository für alles verwaltet, was für die Entwicklung oder Bereitstellung von Anwendungen oder Spielen benötigt wird.
Häufige und automatisierte Tests: Ein DevOps-Ansatz bricht die traditionellen Entwickler/QA-Silos auf. Beispielsweise schreiben die Entwickler den Code in kleineren Teilen und führen ihre eigenen Tests durch, bevor sie ihn in die Hauptcodebasis für Builds einspeisen. Im Idealfall sind diese Tests kontinuierlich und automatisiert. Die Release-Kandidaten werden weiter verfeinert, und die QA-Teams befassen sich viel intensiver mit der Spielleistung.

1: Robuste Version Control
Minimierung von Konflikten bei der Zusammenführung und von Arbeitsausfällen
Wenn Künstler und Programmierer ständig aneinandergeraten oder wenn Zusammenführungskonflikte zu redundanter oder verlorener Arbeit führen, ist die Versionskontrolle in der Regel der Schuldige. Um bewährte Verfahren zur Versionskontrolle in der Spieleentwicklung anzuwenden, benötigen Sie ein System mit einzigartigen Funktionen.
Praktisch gesehen sind Codedateien klein, unabhängig davon, wie lang sie sind. Die Grafiken von Next-Gen-Konsolen- und PC-Spielen können jedoch vergleichsweise groß sein, so dass die Netzwerkbandbreite ein kritischer Faktor ist. Das Ziehen und Verschieben dieser Assets aus einem zentralen Repository muss genauso schnell und einfach sein wie bei jedem anderen Entwicklungs-Asset.
Das größte Problem der meisten Version Control Lösungen? Benutzerfreundlichkeit - für alle.
Programmierer sind in der Regel versiert im Umgang mit Befehlszeilenschnittstellen und komplexen Verzweigungstechniken der Versionskontrolle, während es für Künstler eine Herausforderung sein kann, einfach nur oft genug auf Speichern zu drücken. Aber ihre Zeichnungen und Animationen sind für das endgültige Paket genauso wichtig wie die Codebasis.

Ein Versionskontrollsystem für die Spieleentwicklung muss komplexe, detaillierte Optionen für Entwickler bieten, aber auch für technisch weniger versierte Benutzer leicht zugänglich sein. Andernfalls werden die Ingenieure ihre Zeit damit verbringen, immer und immer wieder zu erklären, wie das System funktioniert.
Eine intuitive, grafische Benutzeroberfläche kann die Koordination komplexer Verzweigungen und Zusammenführungen mit den Programmierern, Künstlern und Designern, die gleichzeitig an verschiedenen Ebenen und Versionen für unterschiedliche Plattformen arbeiten, erheblich erleichtern.
Rückverfolgbarkeit bedeutet, dass man genau sehen kann, wann und wo ein Asset geändert wurde und in welchen Zweigen es verwendet wird, und das ist auch für QA-Teams eine wichtige Fähigkeit. Außerdem ist eine angemessene Sicherheit für alle Repositories, Zweige, Labels und Pfade eine Mindestanforderung.

2: Build Automation (CI/CD)
Verbringen Sie mehr Zeit mit der Erstellung und weniger Zeit mit der Verwaltung komplexer Pipelines und Tools
Ein durchgängiges Thema aller DevOps-Praktiken ist die Aufteilung der Arbeit in kleinere Abschnitte. Kleinere Einheiten sind leichter zu handhaben, einfacher zu testen und schneller zu optimieren. Sie minimieren auch den Aufwand, wenn Sie auf eine Mauer stoßen oder die Richtung ändern wollen.
In der Spieleentwicklung bedeutet das, dass Sie Ihre laufenden Änderungen häufig mit denen anderer Entwickler zusammenführen und neue Builds erstellen. Die manuelle Erstellung von Builds ist nicht besonders kompliziert, aber sie unterbricht andere Arbeiten, und der Zeitaufwand kann sich schnell summieren. Wie bei vielen anderen DevOps-Praktiken ist auch hier die Automatisierung der Schlüssel.
Eine automatisierte Build-Pipeline ist mit Ihrem Versionskontrollsystem verbunden, überwacht Änderungen und erstellt neue Builds bei jeder Übertragung oder wenn die Anzahl der Änderungen einen bestimmten Schwellenwert überschreitet. Das bedeutet, dass die Entwickler Mängel frühzeitig erkennen und beheben können, bevor die Dinge aus dem Ruder laufen. So bleiben Code und Assets in einem zuverlässigeren, releasefähigen Zustand. Wenn Sie aus irgendeinem Grund Änderungen rückgängig machen müssen, ist der letzte erfolgreiche Build einsatzbereit. Außerdem können andere Teams problemlos auf die Builds zugreifen, um Aktualisierungen vorzunehmen und zeitnahes Feedback zu geben.
Mit einem DevOps-Ansatz für die Build-Automatisierung werden die Prioritäten Ihres Teams dahingehend verschoben, dass es sich vergewissert, dass seine Arbeit richtig gemacht wird, bevor es sich an neue Funktionen macht. Sie schreiten schrittweise voran und bauen auf kleinen Erfolgen auf, anstatt lange Sprints zu absolvieren und erschöpft zusammenzubrechen. Das schafft Vertrauen und verringert die Wahrscheinlichkeit, dass die Arbeit eines anderen entgleist, weil der eigene Code noch nicht ganz fertig war.

3: Verwaltung von Artefakten
Bringen Sie Ihr Spiel dorthin, wo es hingehört
Nachdem das CI/CD-System einen neuen Build erstellt hat, wird dieser in der Regel in ein Artefakt-Repository verschoben, wo der Artefakt-Manager ihn mit all seinen Abhängigkeiten und anderen erforderlichen Komponenten registriert. Die Orchestrierung dieser "anderen notwendigen Komponenten" ist der Grund, warum die Artefaktverwaltung eine so wichtige Praxis bei der DevOps-Entwicklung von Spielen ist.
Artefakte können aus allen möglichen Quellen stammen, z. B. von Ihren internen Entwicklern, Auftragskünstlern und einer beliebigen Anzahl von öffentlichen Repositories für Open-Source-Code. Der Artefaktmanager sorgt dafür, dass all diese wichtigen Inhalte hochgeladen und archiviert werden, während er gleichzeitig Versionen und Genehmigungen prüft, nach Sicherheitsproblemen sucht und so weiter. Es gibt viele mögliche Fehlerquellen.
Natürlich hat jedes nützliche Artefaktmanagementsystem Mindestanforderungen. Es muss in der Lage sein, Metadaten zu verwalten, um die Versionierung und Filterung auf der Grundlage der Lizenzierung zu unterstützen. Die Entwickler müssen festlegen können, welche Inhalte wie lange gespeichert werden sollen. Und, was besonders wichtig ist, es muss als hochverfügbares System aufgebaut sein, um Ausfallzeiten zu vermeiden.
Im Vergleich zur einfachen Bestimmung eines S3-Buckets als Projektrepository bietet die Implementierung eines echten Artefaktmanagers erhebliche Vorteile. Das bedeutet, dass die Pflege einer gemeinsamen Bibliothek für alle Projektressourcen die Zusammenarbeit, insbesondere zwischen Künstlern und Ingenieuren, verbessert. Alle Ressourcen sind registriert und rückverfolgbar, was vorhersehbare und wiederholbare Builds ermöglicht. Und es entlastet alle Teammitglieder von der Verwaltung der Bereitstellungen, sodass sie programmieren, animieren, entwerfen oder das tun können, was sie am besten können.

4: Häufige und automatisierte Tests
Reagieren Sie auf Feedback und arbeiten Sie agil
Zwei Prinzipien prägen effektive DevOps-Praktiken für QA:
Häufige Tests zu Beginn der Entwicklung
Automatisierte QA-Workflows
Ein Schreiner misst zweimal, um einmal zu schneiden. Mit anderen Worten: Sie lösen die Längenvariable und testen ihre Arbeit, bevor sie zum nächsten Produktionsschritt übergehen. Entwickler können genau das Gleiche tun, indem sie kürzere Codeblöcke schreiben und sie doppelt überprüfen, bevor sie mehr schreiben. Die Grenze zwischen Entwickler und QA verschwimmt.
Häufige Code-Prüfungen durch Entwickler zahlen sich aus, wenn Builds automatisierten Tests unterzogen werden. Jedes Mal, wenn der Compiler einen neuen Build in das Repository einstellt, wird dieser getestet. Mit kontinuierlichen automatisierten Tests ist es viel unwahrscheinlicher, dass Fehler über die Entwicklung hinaus bestehen bleiben und Probleme im Produktionscode verursachen. Und die, die überleben, werden nicht mehr so ansteckend sein.
Allerdings wissen wir alle, dass Bugs passieren. Zu den automatisierten QA-Tests gehört auch eine automatisierte Berichterstattung, sowohl über die Testprotokolle als auch, nach der Markteinführung eines Spiels, über die Geräte, auf denen es läuft. Sobald die Qualitätssicherung oder eine Benutzerinstallation auf Anomalien stößt, meldet das System spezifische Absturz- und Ausnahmedaten, um schnellere Korrekturen zu ermöglichen. Oft sind die Probleme für den Endbenutzer noch nicht sichtbar und können behoben werden, bevor sie sich als Störungen bemerkbar machen.
Von allen DevOps-Praktiken für Spieleentwicklungsumgebungen sind häufige, automatisierte Tests vielleicht die wichtigste. Die Spieler wollen regelmäßig neue Inhalte, und die Studios stehen unter enormem Druck, um die Veröffentlichungstermine mit neuen, bahnbrechenden Funktionen einzuhalten. Aber wenn ein wichtiger Einflussnehmer zusätzlich zu einem schlechten Tag auch noch eine schlechte Erfahrung macht, kann das verheerende Folgen haben. Die richtige QS ist unerlässlich.
Spielstudios machen es möglich
DevOps und agile Praktiken sind größtenteils einfach vernünftige Arbeitsgewohnheiten. Wenn sie jedoch auf Spiele mit komplexem Code, Tausenden von Assets und unerbittlichen Leistungsbeschränkungen angewendet werden, benötigen Studios spezielle DevOps-Tools, um eine sorgfältige Quellcodekontrolle, eine kontinuierliche Integration und Bereitstellung, eine sichere Artefaktverwaltung und häufige, automatisierte Tests zu gewährleisten.
Die Verwendung von DevOps-Tools, die sich eng in Ihre Entwicklungsplattform integrieren lassen, erhöht deren Effektivität. Im Folgenden sind nur einige der Tausenden von Unity-Entwicklern aufgeführt, die unsere wachsende Bibliothek von DevOps-Tools nutzen, um ihre Arbeitsabläufe zu verbessern und atemberaubende Spiele zu produzieren.
Studio: Alta
In einem Creator Spotlight auf dem Twitch-Kanal von Unity erzählte Alta, wie sie Unity Version Control (ehemals Plastic SCM) nutzen, um die Veröffentlichungszyklen zu beschleunigen und ihre große und wachsende Fangemeinde regelmäßig mit neuen Inhalten zu versorgen. "Wir verwenden Plastic SCM für unsere Versionskontrolle. So haben wir die Möglichkeit, verschiedene Versionen des Projekts zu verzweigen", sagt Boramy Unn, Game Director bei Alta. "Wir erstellen einen neuen Zweig für jede Funktion, und dann erstellen wir für jede Art von riskantem Unterfangen innerhalb jeder Funktion Unterzweige."

Studio: KO_OP
KO_OP ist ein kooperativ geführtes Spielestudio mit Sitz in Montreal. Sie waren auf der Suche nach einer Lösung für die Versionskontrolle, die bei der Arbeit an ihrem neuesten Projekt, Goodbye Volcano High, keine Hindernisse mehr zwischen Künstlern und Technikern aufwerfen würde. "Gluon[der Künstler-Workflow von Unity Version Control] war eine angenehme Überraschung", sagte Jacob Blommestein, ein Entwickler bei KO_OP, in einer Unity-Fallstudie. "Die Künstler mussten nichts über Verzweigungen oder Zusammenführungen wissen. Sie fügten einfach ihre PSD-Dateien hinzu, und die Versionskontrolle war transparent."

Studio: Sycoforge
In einem Interview im Unity-Blog erzählte CEO Michela Rimensberger, wie Unity Version Control Sycoforge und der Community dabei hilft, ihr ambitioniertes Spiel Return to Nangrim zum Leben zu erwecken. "Aus technischer Sicht ist Unity Version Control ein wahrer Lebensretter für die Zusammenarbeit", sagt sie. "Wir haben viele verschiedene Versionierungstools ausprobiert und schnell gemerkt, dass keines davon wirklich den Anforderungen eines Gamedev-Unternehmens entspricht. Während einige für Programmierer brauchbar waren, kam es bei Künstlern zu Schweißausbrüchen. Mit Version Control haben wir einen echten Wegbereiter gefunden. Es ist sowohl für Nicht-Programmierer als auch für Programmierer einfach zu bedienen."

Studio: Kryptische Studios
Die Perfect World-Tochtergesellschaft Cryptic Studios verwendet Backtrace, um die Bug- und Fehlerverfolgung zu automatisieren. "Backtrace hat die Art und Weise, wie wir Absturzdaten erforschen und nutzen, verändert", so Brent Lamb, Senior Producer bei Cryptic Studios, in einem in diesem Jahr veröffentlichten Unity-E-Book. "Jeder fühlt sich wohl, wenn er Abfragen durchführt und weiß, wie es um die Gesundheit eines unserer Spiele bestellt ist."

Noch heute anfangen
Beschleunigen Sie Ihre Arbeitsabläufe und bauen Sie Ihre DevOps-Toolchain mit den Unity DevOps-Lösungen aus. Erstellen Sie effizienter, um rechtzeitig und in der von Ihnen erwarteten Qualität auf den Markt zu kommen. Entdecken Sie hier Lösungen.