Unity treibt einige der größten Titel der Welt an und bringt sie aus einem einzigen Projekt heraus auf Smartphones, Konsolen, Browser und Desktops. Genau diese Reichweite macht Unity-Spieletests so knifflig, denn ein Build muss auf iPhone, Android, Konsole und Desktop bestehen, und jede dieser Zielplattformen versagt auf ihre eigene Art.
Code, der auf Ihrem Build-Rechner einwandfrei läuft, kann auf einem Mittelklasse-Smartphone ruckeln, und ein Feature, das jede Prüfung im Editor mühelos bestanden hat, kann in dem Moment auseinanderfallen, in dem ein echter Spieler es berührt. Spieler wenden sich schnell von einem ruckelnden oder abstürzenden Spiel ab, sodass aus übersehenen Schwachstellen die Bewertungen werden, die man später bereut.
Die eigentliche Frage für jeden, der mit Unity entwickelt, lautet also nicht, ob getestet werden soll, sondern wie man die spezifischen Schwachstellen der Engine aufspürt, ohne ein Vermögen dafür auszugeben. Genau hier verdienen sich erfahrene Game-Testing-Services ihren Platz. Diese Anleitung zeigt Ihnen das Wesentliche:
- Was das Test Framework leistet
- Zwei Arten von Prüfungen, die es durchführt
- Wie Automatisierung in einen echten Release-Zeitplan passt
- Eigenheiten, die Launches leise ruinieren
Lesen Sie weiter, um alles Wesentliche zu Unity-Spieletests zu erfahren!
Wie testet man ein Unity-Spiel?
Das Testen eines Unity-Spiels läuft auf drei Ebenen ab:
- Automatisierte Prüfungen, die innerhalb der Engine geschrieben werden, erkennen Codeprobleme frühzeitig, solange ein Build noch günstig zu beheben ist.
- Praktische Spielsitzungen auf echten Geräten erfassen die unordentlichen, menschlichen Probleme, die Automatisierung nie sieht, etwa ein Tutorial, das Spieler verwirrt, oder ein Menü, das sich falsch anfühlt.
- Compliance-Prüfung, bei der Sie bestätigen, dass das Spiel die Regeln einhält, die Plattformen wie der App Store und PlayStation vor dem Launch vorgeben.
Diese Ebenen ordnen sich in die umfassenderen Arten von Spieletests ein, mit denen jedes Studio jonglieren muss, von funktionalen und Kompatibilitätsprüfungen bis hin zu Leistung und Stabilität.
Die meisten Teams konzentrieren sich zu stark auf eine Ebene und vernachlässigen dadurch die anderen. Ein Studio voller Entwickler etwa neigt dazu, alles zu automatisieren und echtes Spielen zu überspringen, und wundert sich dann, warum sich Rezensenten über das Spielgefühl beschweren. Ein kleineres Indie-Team wiederum spielt das Spiel oft von Hand bis zum Umfallen durch, überspringt Automatisierung und bricht dann bei jedem neuen Feature alte Funktionen. Ein gesundes Projekt sollte alle drei nutzen, und gute Unity-Spieletests laufen letztlich darauf hinaus, zu wissen, wie viel von jeder Ebene ein Titel braucht.
Was ist das Unity Test Framework?
Das Unity Test Framework ist ein kostenloses, in den Editor integriertes Tool, mit dem Ihre Programmierer kleine automatisierte Prüfungen schreiben und gegen den Code des Spiels laufen lassen können, ohne das Programm zu verlassen. Unter der Haube verwendet es NUnit, eine weithin vertrauenswürdige Open-Source-Bibliothek für die Programmiersprache C#, sodass seine Prüfungen einem Standard folgen, den die meisten Entwickler bereits kennen. Die vollständige Übersicht finden Sie in Unitys offizieller Dokumentation.
Stellen Sie es sich als automatisierten Inspektor für die Regeln Ihres Spiels vor. Wenn zum Beispiel eine Lebensanzeige bei einem Treffer um zehn Punkte sinken soll, kann das Framework bestätigen, dass dies jedes einzelne Mal in Bruchteilen einer Sekunde geschieht. Was es nicht kann, ist Ihnen zu sagen, ob sich der Treffer befriedigend angefühlt hat oder ob die Animation richtig aussah. Es prüft die Mechanik, nicht die Magie, und genau diese Unterscheidung prägt alles andere an Unity-Spieletests.
Edit Mode vs. Play Mode, und warum die Lücke wichtig ist
Das Framework führt zwei Arten von Prüfungen durch, und der Unterschied zwischen ihnen ist die Stelle, an der viele Studios stolpern:
- Edit-Mode-Prüfungen laufen, während das Spiel ausgeschaltet ist, so als würden Sie einen Bauplan begutachten statt das Auto zu fahren. Sie sind schnell und günstig und eignen sich für alles, wofür das Spiel nicht tatsächlich laufen muss, etwa Punkteberechnungen, Inventarregeln oder Speicherdatei-Logik.
- Play-Mode-Prüfungen laufen, während das Spiel aktiv ist, sodass sie helfen können zu beurteilen, wie jemand es tatsächlich erlebt. Sie sind langsamer und schwieriger einzurichten, erfassen aber die Probleme, die nur in Bewegung auftreten, etwa Physik, die sich falsch verhält, Abweichungen im Timing oder Objekte, die nicht erscheinen, wenn sie sollten. Unity erläutert die Mechanik beider Modi in seinem Leitfaden zu automatisierten Tests.
Diese Modi falsch einzusetzen, ist ein leicht zu machender und teuer zu behebender Fehler. Ein Team, das viele Edit-Mode-Prüfungen schreibt, weil sie schnell gehen, sieht daher eine Wand aus beruhigenden grünen Häkchen und geht davon aus, dass das Spiel solide ist. Die Spieler stoßen dann jedoch auf Fehler, die nur im Play Mode auftreten und nie geprüft wurden. Diese „grünen Häkchen“ sind nur so vertrauenswürdig wie die Tests dahinter.
Einrichtungsarbeit, die still und heimlich einen Sprint auffrisst
Bevor Unity-Spieletests irgendetwas davon ausführen können, muss Ihr Projekt in beschriftete Abschnitte gegliedert sein. So wissen die Prüfungen, welche Teile des Codes sie betrachten sollen. Das sauber zu erledigen ist am Anfang eines Projekts unkompliziert und später wirklich schmerzhaft nachzurüsten. Teams, die Tests erst im Nachhinein hinzufügen, verlieren daher Tage damit, alles zu entwirren.
Es gibt noch eine zweite Falle, die man kennen sollte. Unity kann Ihnen zeigen, wie viel Ihres Codes von Prüfungen erreicht wurde. Eine hohe Abdeckungszahl sagt Ihnen jedoch nur, welche Zeilen ausgeführt wurden, nicht, ob jeder Pfad durch sie hindurch ordnungsgemäß durchlaufen wurde. Somit kann das Spiel eine beeindruckende Zahl ausweisen und trotzdem einen Fehler in einem Pfad verstecken, den niemand zu prüfen bedacht hat.
Wie automatisiert man Tests in Unity?
Automatisierung in Unity beginnt in der Engine, wo Ihre Programmierer Tests mit dem Unity Test Framework schreiben. Sie leiten diese Prüfungen durch den integrierten Test Runner und verbinden sie mit kontinuierlicher Integration. Das automatisierte System baut Ihr Spiel bei jeder Codeänderung neu und validiert es erneut, sodass ein defektes Feature innerhalb von Minuten markiert wird, statt Wochen später in einer Rezension aufzutauchen. Unsere Services für automatisiertes Testen sind genau um diesen Rhythmus herum aufgebaut.
Der Haken ist, dass Automatisierung nicht kostenlos ist, sobald sie einmal geschrieben wurde. Jeder Test braucht Pflege, während sich das Spiel verändert, und eine vernachlässigte Testsuite verkommt zu einem Haufen von Fehlalarmen, die alle irgendwann ignorieren lernen. Automatisierung zahlt sich nur aus, wenn jemand die Verantwortung dafür übernimmt.
Unity-Spieletests auf iPhone und Android
Die mit Abstand wichtigste Gewohnheit bei Unity-Spieletests ist es, Ihren Titel auf der Hardware laufen zu lassen, die Spieler tatsächlich verwenden werden, statt nur im Editor auf einem schnellen Computer. Der Editor ist auf eine Weise nachsichtig, wie es ein Smartphone in jemandes Tasche niemals ist.
Ein Unity-Spiel auf Android zu testen bedeutet, eine Vielzahl von Geräten mit völlig unterschiedlichen Chips, Bildschirmgrößen und Speicher abzudecken, sodass ein Build, der auf einem Flaggschiff-Handy reibungslos läuft, auf einem Budget-Modell, das Millionen Menschen besitzen, ins Stocken geraten kann. Ein Unity-Spiel auf dem iPhone zu testen ist hardwaremäßig enger gefasst, aber strenger bei den Regeln, weil Apples Überprüfungsprozess Builds aus Gründen ablehnt, die auf dem eigenen Rechner eines Entwicklers nie auftauchen. Ein Titel, der sich im Editor fertig anfühlt, kann auf beiden Plattformen aus völlig unterschiedlichen Gründen dennoch stolpern, weshalb ernsthafte Teams lange vor dem Launch auf echten iOS- und Android-Geräten bauen und testen. Unsere Checkliste für Mobile-Game-Tests legt fest, was auf jedem Gerät zu prüfen ist, bevor Sie einreichen.
Unity-Spieletest-Tools jenseits des Test Frameworks
Das Unity Test Framework ist auf Codeebene hervorragend, wurde aber nie dafür entwickelt, sich durch Ihre Menüs zu tippen, ein Level zu beenden oder sich wie eine Person mit einem Controller in der Hand zu verhalten. Für diese Art von End-to-End-Spiel und um Builds in großem Maßstab auf echten Smartphones zu steuern, brauchen Sie dedizierte Unity-Spieletest-Tools zusätzlich zu dem, was von Haus aus mitgeliefert wird. Wir vergleichen die Tools, zu denen Studios tatsächlich greifen, in unserem Leitfaden zu Automatisierungstools für Spieletests, damit sich dieser Beitrag auf die Engine selbst konzentrieren kann.
Die Unity-Spieletest-Eigenheiten, die QA-Teams überraschen
Jede Engine hat ihre eigene Persönlichkeit, und die von Unity zeigt sich an einer Handvoll Stellen, die Teams auf dem falschen Fuß erwischen:
- Physik kann sich je nachdem, wie schnell ein Gerät das Spiel ausführt, unterschiedlich verhalten, sodass ein Sprung, der auf einem schnellen PC perfekt landet, eine Figur auf einem langsameren Smartphone durch eine Wand schleudern kann. Wer nur auf High-End-Hardware testet, verdeckt diese Art von Fehler vollständig.
- Unity hält hin und wieder an, um ungenutzten Speicher aufzuräumen, und diese Unterbrechung kann sich als sichtbares Ruckeln im ungünstigsten Moment zeigen, etwa mitten in einem Bosskampf. Diese Aussetzer treten auf einer leistungsstarken Entwicklungsmaschine selten auf, weshalb sie bis zu den Spielern durchrutschen. Frame-Drops und Speicherspitzen zu erkennen, bevor es die Spieler tun, ist der Kern von Game-Performance-Tests, besonders auf leistungsschwächeren Geräten.
- Dieselbe Szene kann über die verschiedenen Rendering-Optionen von Unity hinweg deutlich unterschiedlich aussehen, sodass Grafik, die unter einer Konfiguration die Prüfung bestanden hat, unter einer anderen zu dunkel oder fehlerhaft herauskommen kann. Ein Team, das die Optik nur auf einer einzigen Konfiguration prüft, testet nur einen Bruchteil dessen, was Spieler sehen werden.
- Fehlermeldungen zu lesen ist im Editor einfach und wird umständlich, sobald das Spiel auf einem echten Gerät läuft. Tester ohne die richtige Einrichtung enden damit, Fehler als Screenshot ohne Erklärung dessen einzureichen, was schiefgelaufen ist, und ein Entwickler verbrennt dann Stunden damit, ein Problem zu reproduzieren, das nie ordentlich erfasst wurde.
Keines dieser Probleme ist ein exotischer Fehler, sondern jeweils eine gewöhnliche Folge davon, wie Unity funktioniert, und genau danach sucht ein Tester, der die Engine kennt, als Erstes.
Intern, automatisiert oder ausgelagert: Ihr Unity-Testmodell wählen
Es gibt keine einzelne richtige Antwort, nur die eine, die zu Ihrem Spiel und Ihrem Team passt. Eine interne QA-Abteilung aufzubauen verschafft Ihnen Leute, die das Projekt bis ins Detail kennen, was viel wert ist, auch wenn es langsam zu besetzen und teuer ist, es zwischen den Releases ausgelastet zu halten. Falls Sie diesen Weg gehen, zeigt Ihnen unser Leitfaden zum Aufbau eines Game-Testing-Teams, wen Sie wann einstellen sollten. Sich auf Automatisierung zu stützen bringt Geschwindigkeit und Konsistenz, solange jemand die Prüfungen pflegt und akzeptiert, dass Maschinen alles übersehen, was mit Gefühl und Spaß zu tun hat.
Ein externes Team hinzuzuziehen ist in einigen klaren Situationen besonders sinnvoll:
- Sie nähern sich einem Launch und brauchen schnell eine breite Geräteabdeckung.
- Ihre Entwickler sind stark, haben aber noch nie Unitys Play-Mode-Prüfungen oder eine Continuous-Integration-Pipeline eingerichtet, und Sie möchten dafür lieber keinen Sprint mit Lernen verlieren.
- Ihr eigenes Team steht dem Spiel einfach zu nahe, um die groben Kanten zu erkennen, die ein frisches Augenpaar an einem Nachmittag entdeckt.
Der pragmatische Ansatz für die meisten Studios ist eine Mischung: Automatisierung für die repetitiven Prüfungen, die am besten ohne Menschen laufen, und erfahrene manuelle Tester für die Ermessensentscheidungen, die ein Skript nicht treffen kann. Diese Mischung für ein bestimmtes Spiel richtig hinzubekommen, macht den Großteil der Arbeit aus, und genau dort verdient sich ein erfahrener Partner sein Honorar.
Unity verschafft Ihnen außergewöhnliche Reichweite, und dieser Umfang bringt eine Testrechnung mit sich, die allgemeine Ratschläge nicht abdecken. Die Studios, die sauber launchen, sind diejenigen, die die wahren Schwachstellen der Engine frühzeitig prüfen, auf echten Geräten, mit Leuten, die diese Fehler schon einmal gesehen haben.
Genau das tun wir, also erzählen Sie uns von Ihrem Titel, und wir zeigen Ihnen, wo sich die Risiken verstecken.
FAQ
Ist das Unity Test Framework kostenlos?
Ja, das Unity Test Framework ist ohne Zusatzkosten in den Editor integriert, sodass jedes Team ohne Kauf mit dem Schreiben automatisierter Prüfungen beginnen kann.
Kann man Benutzeroberflächentests in Unity automatisieren?
Ja, das geht, aber nicht mit dem Test Framework allein. Menüs und Schaltflächen so zu steuern, wie es ein Spieler tun würde, erfordert zusätzliche Werkzeuge zusätzlich zu Unitys integrierten Prüfungen.
Muss man ein Unity-Spiel auf echten iPhone- und Android-Geräten testen?
Ja, der Editor verbirgt plattformspezifische Fehler, sodass der einzige verlässliche Weg, zu sehen, was Spieler bekommen, darin besteht, das Spiel auf physischen iOS- und Android-Geräten laufen zu lassen.
Braucht man bei Automatisierung trotzdem noch manuelle Tests?
Ja, Automatisierung ist bei repetitiven Prüfungen unschlagbar, kann aber nicht sagen, ob ein Spiel Spaß macht, ob sich ein Level fair anfühlt oder ob eine Animation richtig aussieht, und genau diese Einschätzungen entscheiden über Bewertungen.
Wann sollte ein Unity-Studio externe Tester hinzuziehen?
Die üblichen Auslöser sind ein bevorstehender Launch, der eine breite Geräteabdeckung erfordert, ein Team ohne engine-spezifische Testerfahrung oder ein Spiel, mit dem seine eigenen Schöpfer zu vertraut geworden sind, um es objektiv zu beurteilen.
Erfahren Sie, wie wir Couple Up! geholfen haben, vor dem Release eine erstklassige Serverleistung zu erreichen