Verwendet die Spielebranche automatisierte Tests für visuelle Teile von Spielen / Rendering? Wie?

10

Einige Teile eines Spiels lassen sich leicht automatisiert testen (Logik, Mathematik, Eingabeverarbeitung). Aber es gibt auch eine Menge, die rein visuell und nicht leicht zu testen ist.

Ich wäre überrascht, wenn die Spielebranche all dies manuellen Tests überlassen würde. Es steckt genug Geld darin, dass ich vermuten würde, dass Anstrengungen unternommen wurden, um zumindest einige visuelle Aspekte von Spielen auf Regressionstests zu testen.

Ist das wahr? Wenn ja, wie kann das Rendern von Spielen getestet werden? Ausgabe erfassen und Bilder vergleichen (kann dies zuverlässig sein?)? Daten von der Grafikkarte auf niedrigem Niveau abfangen? Erfassen von Scheitelpunktinformationen (usw.) auf dem Weg zur Grafikkarte? Es scheint, dass es viele Möglichkeiten gibt; aber ich kann keine Informationen dazu finden :(

Hinweis: Diese Frage wurde als Betrug dieser Frage markiert , aber ich frage nicht nach bestimmten Technologien / Frameworks / Tools, wie dies zu tun ist, sondern allgemeiner nach den Ideen rund um diese Praxis und was die eigentliche Spielebranche tut (wenn sie tun es überhaupt).

Danny Tuppeny
quelle
Ich würde sagen, dass sie wahrscheinlich nur eine gut getestete Grafikbibliothek verwenden (entweder von Drittanbietern oder im eigenen Haus entwickelt). Wenn sie ein Spiellevel entwerfen, überprüfen sie nicht, ob jedes Objekt genau an den Koordinaten X, Y, Z liegt oder ob die Perspektive stimmt, sondern einfachere Dinge wie sicherzustellen, dass Objekte vorhanden sind und nicht durch Wände blockiert werden usw. Und wenn die Grafikbibliothek im eigenen Haus entwickelt wurde, sind die Tests automatisiert und grundlegender.
SJuan76
@ SJuan76 Ich denke, wenn Sie auf einem Motor bauen, gilt die Frage für die Prüfung des Motors
Danny Tuppeny
Ist diese Frage nicht etwas weiter gefasst als die, von der sie als Duplikat markiert wurde? Das OP erwähnte weder C ++ noch OpenGL. Die Spielebranche ist größer als das.
Toniedzwiedz
Es ist wahrscheinlich einfacher, formal zu beweisen, dass der Code korrekt ist, da die Grafik-APIs fehlerfrei sind, als zu testen, ob die Hardware ihre Aufgabe erfüllt. Da die Treiber von AMD und NVidia proprietär sind, stelle ich mir vor, dass jedes Protokoll für die Kommunikation mit der Grafikkarte 1) proprietär, 2) Änderungen vorbehalten und 3) von Karte zu Karte unterschiedlich ist. Außerdem, auch wenn die an die Grafikkarte gesendeten Daten korrekt sind, woher wissen Sie, dass die Grafikkarte keinen Hardwarefehler aufweist?
Doval
2
Ich habe versucht, dies erneut zu öffnen, da es beim Dupe-Ziel insbesondere um Strategien beim automatisierten Testen von OpenGL-Grafiken ging. Dies ist nicht meine Spezialität, aber ich vertraue auf das Feedback von anderen, die die Spielebranche sehr gut kennen, und möchte ihr eine weitere Chance geben. Verweise auf die ähnliche Frage finden Sie hier: programmers.stackexchange.com/questions/150688/…
maple_shaft

Antworten:

1

Jedes Unternehmen wird auf unterschiedliche Weise vorgehen, selbst verschiedene Spiele werden unterschiedlich getestet.

  • Vielleicht liegt der Mangel an Informationen über Grafiken daran, dass das Rendern tatsächlich ziemlich "repetitiv" ist (ich kann mir kein besseres Wort vorstellen, sorry) und in einer typischen komplexen Szene gibt es genug primitive Kombinationen, so dass die meisten Personen normalerweise die meisten Störungen leicht erkennen können ( mit Ausnahme von weniger verwendeten Shadern, aber es kann ein Stress-Shader-Speziallevel / Demo verwendet werden). Denken Sie daran, dass Menschen seit Tausenden von Jahren Jäger waren :) Also sind wir wahrscheinlich darauf ausgelegt, Störungen zu erkennen.
  • Auch die Bewegungsfreiheit, die in den meisten Spielen vorhanden ist, und die Randomisierung anderer Elemente in einem typischen Spiel, die es als "realistischer" empfinden, sind normalerweise ein Albtraum für die Anwendung rein automatisierter Tests: Tatsächlich wird ein menschlicher Tester schneller und schneller finden Fehler als jeder automatisierte Test. Sie können eine Logik für die Aufzeichnung von Timings, Statistiken und Positionen / Winkeln / anderen Variablen codieren, wenn ein Tester spielt. Selbst bei nicht automatisierten Tests erhalten Sie Feedback wie bei automatisierten Tests. Es ist normalerweise nützlich, in der Lage zu sein, eine von einem Beta-Tester aufgezeichnete Sitzung abzuspielen (und ist normalerweise auch eine gute Funktion für das endgültige Spiel).
  • Informationen zum Rendern von Statistiken erhalten Sie beispielsweise: Die Anzahl der Draw-Call-Zählungen für jeden der Shader (da Sie die Anrufe tätigen, reicht es aus, einige Zähler beizubehalten), die Anzahl der Uploads (die gleichen, die Sie steuern, wann GPU-Puffer werden aktualisiert), die Timings (nicht nur fps, auch die Pausen zwischen den einzelnen Aufrufen) usw. Falls erforderlich (aber ich glaube, das wird nur empfohlen, wenn Sie nach einem bestimmten Fehler suchen), können Sie Statistiken von der Grafikkarte selbst abrufen (Zum Beispiel können Sie Füllraten und andere mithilfe von Okklusionsabfragen abrufen.)
  • Ein weiterer Grund für die Verwendung von Betatestern ist, dass unterschiedliche Grafikkarten wahrscheinlich unterschiedliche Verhaltensweisen aufweisen. Möglicherweise benötigen Sie eine Farm von Testmaschinen o_O. Die geliebten menschlichen Betatester werden all dieses Durcheinander lindern.

Hoffe dass es hilft!

Haftungsausschluss: Ich bin kein Betatester, ich bin ein Entwickler XDDD.

user1039663
quelle
Ich stimme voll und ganz zu, dass Menschen darauf ausgelegt sind, Muster, Störungen, ... zu sehen. Wir sind in der Tat visuelle Wesen.
Trilarion