¿La industria de los juegos utiliza pruebas automatizadas para partes visuales de juegos / renderizado? ¿Cómo?

10

Algunas partes de un juego son fáciles de probar de forma automatizada (lógica, matemáticas, manejo de entradas); pero también hay mucho que es puramente visual y no fácilmente comprobable.

Me sorprendería si la industria de los juegos dejara todo esto a las pruebas manuales; hay suficiente dinero en eso que supongo que se ha hecho un esfuerzo para poder probar al menos algunos aspectos visuales de los juegos.

¿Es esto cierto? Si es así, ¿cuáles son las posibles formas en que se puede probar la representación de los juegos? Capturando resultados y comparando imágenes (¿puede ser esto confiable?) ¿Interceptando datos de la tarjeta gráfica a un nivel bajo? ¿Captura información de vértices (etc.) en su camino hacia la tarjeta gráfica? Parece que hay muchas posibilidades; pero no puedo encontrar ninguna información sobre esto :(

Nota: Esta pregunta fue marcada como una trampa de esta , pero no estoy preguntando sobre tecnología / marcos / herramientas específicos sobre cómo hacer esto, sino más ampliamente sobre las ideas en torno a esta práctica y lo que hace la industria de los juegos reales (si lo hacen en absoluto).

Danny Tuppeny
fuente
Diría que probablemente solo usen una biblioteca gráfica bien probada (ya sea de terceros o desarrollada internamente). Cuando llegan a diseñar un nivel de juego, no verifican que cada objeto esté exactamente en las coordenadas X, Y, Z, o si la perspectiva es correcta, sino cosas más simples como garantizar que los objetos estén allí y no bloqueados por paredes, etc. Y si la biblioteca de gráficos está desarrollada internamente, las pruebas son automáticas y más básicas.
SJuan76
@ SJuan76 Supongo que si está construyendo encima de un motor, la pregunta se aplica a las pruebas del motor
Danny Tuppeny,
¿No es esta pregunta algo más amplia que la marcada como duplicado? El OP no mencionó C ++ u OpenGL. La industria del juego es más grande que eso.
toniedzwiedz
Probablemente sea más fácil demostrar formalmente que el código es correcto dado que las API de gráficos no tienen errores que probar que el hardware está haciendo su trabajo. Dado que los controladores de AMD y NVidia son propietarios, imagino que cualquier protocolo involucrado en la comunicación con la tarjeta gráfica es 1) propietario, 2) está sujeto a cambios y 3) varía de una tarjeta a otra. Además, incluso si los datos enviados a la tarjeta gráfica son correctos, ¿cómo sabe que la tarjeta gráfica no tiene una falla de hardware?
Doval
2
Intenté reabrir esto ya que el objetivo de engaño era más específicamente sobre estrategias en pruebas automatizadas de gráficos OpenGL. Esta no es mi especialidad, pero confío en los comentarios de otros que conocen muy bien la industria del juego, así que quiero darle otra oportunidad. Para referencia a una pregunta similar, consulte aquí: programmers.stackexchange.com/questions/150688/…
maple_shaft

Respuestas:

1

Cualquier empresa lo hará de diferentes maneras, incluso los diferentes juegos se probarán de manera diferente.

  • Tal vez la falta de información sobre los gráficos se deba a que el renderizado es bastante "repetitivo" (no puedo pensar en una palabra mejor, lo siento) y en una escena compleja típica habrá suficientes combinaciones primitivas para que la mayoría de las personas puedan ver fácilmente la mayoría de los problemas técnicos ( con la excepción de sombreadores menos utilizados, pero se puede usar un nivel / demo especial de sombreador de estrés). Recuerda que los humanos fueron cazadores durante miles de años :) así que probablemente estamos diseñados para ver problemas técnicos.
  • Además, la libertad de movimiento presente en la mayoría de los juegos y la aleatorización de otros elementos en un juego típico que lo hace sentir más "realista" suelen ser una pesadilla para aplicar pruebas automatizadas puras: de hecho, un probador humano encontrará más rápidamente y más errores que cualquier prueba automatizada. Puede codificar una lógica para registrar tiempos, estadísticas y posiciones / ángulos / otras variables cada vez que un probador esté jugando ... así que incluso en las pruebas no automatizadas tendrá comentarios como pruebas automatizadas. Por lo general, es útil poder reproducir cualquier sesión grabada del beta tester (y generalmente también es una buena característica para el juego final).
  • Acerca de las estadísticas de representación, por ejemplo, puede obtener: las estadísticas de recuento de llamadas empatadas para cada uno de los sombreadores (ya que hará las llamadas, es suficiente para mantener algunos contadores), los recuentos de carga (lo mismo, usted controlará cuándo los buffers de gpu se actualizan), los tiempos (no solo fps, también los lapsos entre cada llamada), etc. Si es necesario (pero creo que no se recomienda, excepto cuando se busca un error específico), puede obtener estadísticas de la tarjeta gráfica. (por ejemplo, puede obtener tasas de relleno y otras mediante consultas de oclusión).
  • Finalmente, otra razón para usar probadores beta es que diferentes tarjetas gráficas probablemente tendrán comportamientos diferentes ... es posible que necesite tener una granja de máquinas de prueba o_O. Los amados probadores beta humanos suavizarán todo ese desorden.

Espero que ayude!

Descargo de responsabilidad: no soy un betatester, soy un desarrollador XDDD.

usuario1039663
fuente
Estoy totalmente de acuerdo con que los humanos están diseñados para ver patrones, fallas, ... De hecho, somos seres visuales.
Trilarion