Czy branża gier stosuje zautomatyzowane testowanie wizualnych części gier / renderowania? W jaki sposób?

10

Niektóre części gry można łatwo przetestować w sposób zautomatyzowany (logika, matematyka, obsługa danych wejściowych); ale jest też wiele elementów czysto wizualnych i trudnych do przetestowania.

Byłbym zaskoczony, gdyby przemysł gier pozostawił to wszystko testom ręcznym; jest w tym wystarczająco dużo pieniędzy, że zgaduję, że włożono wysiłek w testowanie regresji przynajmniej niektórych aspektów wizualnych gier.

Czy to prawda? Jeśli tak, jakie są możliwe sposoby testowania renderowania gier? Przechwytywanie danych wyjściowych i porównywanie zdjęć (czy to może być wiarygodne?)? Przechwytujesz dane z karty graficznej na niskim poziomie? Przechwytujesz informacje o wierzchołkach (itp.) W drodze na kartę graficzną? Wygląda na to, że istnieje wiele możliwości; ale nie mogę znaleźć żadnych informacji na ten temat :(

Uwaga: to pytanie zostało oznaczone jako duplikat tego pytania , ale nie pytam o konkretne technologie / frameworki / narzędzia, jak to zrobić, ale szerzej o koncepcje dotyczące tej praktyki i tego, co robi rzeczywisty przemysł gier (jeśli robią w ogóle).

Danny Tuppeny
źródło
Powiedziałbym, że prawdopodobnie używają tylko dobrze przetestowanej biblioteki graficznej (innej firmy lub opracowanej we własnym zakresie). Kiedy przystępują do projektowania poziomu gry, nie sprawdzają, czy każdy obiekt ma dokładnie współrzędne X, Y, Z lub czy perspektywa jest właściwa, ale prostsze rzeczy, takie jak zapewnienie, że obiekty są tam i nie są blokowane przez ściany itp. A jeśli biblioteka graficzna jest opracowywana samodzielnie, testy są zautomatyzowane i bardziej podstawowe.
SJuan76,
@ SJuan76 Myślę, że jeśli budujesz na silniku, pytanie dotyczy testowania silnika
Danny Tuppeny
Czy to pytanie nie jest nieco szersze niż to, które oznaczono jako duplikat? OP nie wspomniał o C ++ ani OpenGL. Przemysł gier jest większy.
toniedzwiedz
Prawdopodobnie łatwiej jest formalnie udowodnić, że kod jest poprawny, biorąc pod uwagę, że interfejsy API grafiki są wolne od błędów, niż testowanie, czy sprzęt wykonuje swoją pracę. Ponieważ sterowniki AMD i NVidia są zastrzeżone, wyobrażam sobie, że każdy protokół związany z komunikacją z kartą graficzną jest 1) zastrzeżony, 2) może ulec zmianie i 3) różni się w zależności od karty. Poza tym, nawet jeśli dane wysłane na kartę graficzną są prawidłowe, skąd wiesz, że karta graficzna nie ma wady sprzętowej?
Doval
2
Próbowałem to ponownie otworzyć, ponieważ cel dupe dotyczył konkretnie strategii automatycznego testowania grafiki OpenGL. To nie jest moja specjalność, ale ufam opiniom innych, którzy bardzo dobrze znają branżę gier, więc chcę dać jej jeszcze jedną szansę. Aby zapoznać się z podobnym pytaniem, zobacz tutaj: programmers.stackexchange.com/questions/150688/…
wałek klonowy

Odpowiedzi:

1

Każda firma zrobi to na różne sposoby, nawet różne gry będą testowane inaczej.

  • Być może brak informacji o grafice wynika z faktu, że renderowanie jest w rzeczywistości dość „powtarzalne” (przepraszam, nie myślę o lepszym słowie), aw typowej złożonej scenie będzie wystarczająca liczba prymitywnych kombinacji, aby większość osób mogła łatwo zobaczyć większość błędów ( z wyjątkiem rzadziej używanych shaderów, ale można użyć specjalnego poziomu / demonstracji shadera stresu). Pamiętaj, że ludzie byli myśliwymi przez tysiące lat :) więc prawdopodobnie jesteśmy inżynierami, aby zobaczyć usterki.
  • Również swoboda poruszania się występująca w większości gier i losowość innych elementów w typowej grze, która sprawia, że ​​wydaje się ona bardziej „realistyczna”, jest zwykle koszmarem stosowania czysto zautomatyzowanych testów: w rzeczywistości człowiek testujący znajdzie szybciej i więcej błędy niż jakikolwiek automatyczny test. Możesz kodować logikę dla rekordów czasów, statystyk i pozycji / kątów / innych zmiennych za każdym razem, gdy tester gra ... więc nawet w testach niezautomatyzowanych będziesz mieć opinie podobne do testów automatycznych. Zazwyczaj jest przydatna możliwość odtworzenia dowolnej sesji nagranej w wersji beta testera (i zwykle jest to dobra funkcja w końcowej wersji gry).
  • Jeśli chodzi o renderowanie statystyk, na przykład możesz uzyskać: statystyki liczenia połączeń losujących dla każdego z shaderów (gdy wykonujesz połączenia, wystarczy zachować kilka liczników), liczy się przesyłanie (to samo, będziesz kontrolować, kiedy bufory GPU są aktualizowane), czasy (nie tylko fps, również przerwy między każdym połączeniem) itp. W razie potrzeby (ale uważam, że nie jest to zalecane, z wyjątkiem polowania na konkretny błąd), możesz uzyskać statystyki z samej karty graficznej (na przykład można uzyskać współczynniki wypełnienia i inne za pomocą kwerend okluzji).
  • Wreszcie, innym powodem korzystania z beta-testerów jest to, że różne karty graficzne będą prawdopodobnie miały różne zachowania ... może być konieczne posiadanie farmy maszyn testujących. Ukochani beta testerzy zmiękczą cały ten bałagan.

Mam nadzieję, że to pomaga!

Oświadczenie: Nie jestem betatesterem, jestem programistą XDDD.

użytkownik1039663
źródło
W pełni zgadzam się z ludźmi, których celem jest widzenie wzorów, usterki ... Rzeczywiście jesteśmy istotami wizualnymi.
Trilarion