¿Cómo informar errores encontrados en niveles generados por procedimientos?

8

Hay muchos temas sobre cómo funciona la generación de procedimientos, pero no pude encontrar ninguna información sobre cómo probar y, lo que es más importante, cómo informar errores que pueden ocurrir en niveles generados por procedimientos. ¿Cuál es la mejor manera de describir un error, por ejemplo, relacionado con el diseño de niveles, en un mapa que se verá diferente cada vez que juegues un juego nuevo? ¿Qué información debe incluirse en el informe de errores para que sea más fácil reproducirlo para el diseñador de niveles, el artista de niveles, etc. y luego también durante el proceso de regresión?

EDITAR: Vale la pena mencionar que el juego, que estoy preparando para probar, está en una fase muy temprana de desarrollo y está cambiando constantemente junto con los sistemas responsables de generar niveles. El propósito de esta investigación es aprender cómo describir errores (qué información incluir en el informe) para que la regresión en un entorno cambiante sea lo más lenta y efectiva posible.

Boyle
fuente
2
¿Quién es tu público objetivo? Quiero decir, ¿quién va a completar estos informes de errores?
Vaillancourt
1
Una de las posibles soluciones es agregar la funcionalidad de "guardar", o al menos algún mecanismo de hash. De esa manera, el evaluador puede incluir todo el nivel en su informe o al menos incluir hash textual que luego se puede revertir a un montón de niveles parecidos. La primera opción es sencilla pero consume tráfico / espacio. La segunda opción necesita una lluvia de ideas seria para implementar. PD: Puedo estar equivocado, pero por lo que recuerdo, Diablo 2 usó hashing. Entonces el nivel (y otros niveles que se parecen más o menos a él) fue descrito por hash.
Sergey.quixoticaxis.Ivanov
Que tipo de juego Las técnicas de IE utilizadas en un juego por turnos pueden no ser adecuadas para un juego en tiempo real y viceversa.
Pikalek
@ Alexandre Vaillancourt: los evaluadores informarán de errores utilizando una herramienta automatizada que recopilará información simple como la cantidad de objetos físicos, la cantidad de IA, etc. Me pregunto qué más podría incluirse no solo en esos informes automáticos sino también en los convencionales. informes escritos por probadores. @Pikalek: es un juego de acción FPP con un mundo abierto y un juego en tiempo real.
BoYLER

Respuestas:

18

También puede ser muy útil cuando su algoritmo de generación de mapas es determinista y repetible en función de un valor inicial. Entonces, cuando ingresa el mismo valor semilla, obtiene el mismo mapa. Esto podría ser más fácil de implementar de lo que piensas. La mayoría de las API de generación de números aleatorios se pueden inicializar con un valor semilla y luego generar siempre la misma secuencia de números aleatorios para la misma semilla. Si está utilizando una de las pocas plataformas donde este no es el caso (como JavaScript basado en navegador), podría implementar su propio generador de números aleatorios. Existen muchos algoritmos que no son muy difíciles de implementar y generalmente siempre requieren un valor semilla.

Sus evaluadores pueden mencionar la semilla del mapa en sus informes de errores. Un informe de error como "Los árboles crecen en medio de un lago" puede tener una instrucción de reproducción "Genere un mapa con la semilla a4f6dd32 y vaya a la posición 4321500: 1269100". Después de verificar esto, puede establecer un punto de interrupción del depurador condicional en su algoritmo de generación de mapas que se active en el fragmento de mapa afectado y verifique exactamente qué está sucediendo.

Un algoritmo determinista de generación de mapas también le permite implementar pruebas automatizadas. Puede tener varias semillas de prueba con salidas conocidas y luego hacer que sus pruebas automáticas verifiquen si esa salida sigue siendo la misma después de que haya realizado algunas mejoras de rendimiento en su algoritmo de generación.

Philipp
fuente
Gracias a todos por las ideas. Todavía no puedo intentar ponerlos en uso, ya que el juego no está en un estado jugable / comprobable. En realidad, necesitará mucho más tiempo para estar listo para las pruebas. Por ahora solo estoy investigando en este asunto.
BoYLER
Esta es una respuesta genial. Actualmente estoy creando un juego que usa Dungeon Architect para generar aleatoriamente niveles basados ​​en una semilla. He ido un paso más allá y he creado una clase singleton aleatoria que distribuye los valores aleatorios a TODOS los subsistemas, tanto los de DA como los míos. El beneficio es que si conozco el valor de la semilla y el valor del nivel en sí mismo (por ejemplo, mazmorra 1-1 o bosque 3-6), puedo recrear exactamente el mismo nivel, con las mismas turbas, en los mismos lugares con el mismo botín de mesas y todo. Dado que este valor está registrado, sería fácil para mí analizar un informe de error y recrear el escenario.
Jesse Williams