Comment signaler les bogues trouvés sur les niveaux générés de manière procédurale?

8

Il existe de nombreux sujets sur le fonctionnement de la génération procédurale, mais je n'ai trouvé aucune information sur la façon de tester et - ce qui est plus important - sur la façon de signaler les bogues pouvant survenir aux niveaux générés par la procédure. Quelle est la meilleure façon de décrire un bug, par exemple lié à la conception de niveaux, sur une carte qui sera différente à chaque fois que vous jouerez à un nouveau jeu? Quelles informations devraient être incluses dans le rapport de bogue afin de les reproduire serait plus facile pour le concepteur de niveau, l'artiste de niveau, etc., puis également pendant le processus de régression?

EDIT: Il convient de mentionner que le jeu, que je me prépare à tester, est dans une phase de développement très précoce et évolue constamment avec les systèmes responsables de la génération des niveaux. Le but de cette recherche est d'apprendre à décrire les bogues (quelles informations inclure dans le rapport) afin que la régression dans un environnement en évolution soit aussi rapide et efficace que possible.

BoYLER
la source
2
Quel est votre public cible? Je veux dire, qui va remplir ces rapports de bogues?
Vaillancourt
1
L'une des solutions possibles consiste à ajouter une fonctionnalité "d'enregistrement", ou au moins un mécanisme de hachage. De cette façon, le testeur peut inclure le niveau entier dans son rapport ou au moins inclure un hachage textuel qui peut ensuite être inversé en un tas de niveaux similaires. La première option est simple mais consomme du trafic / de l'espace. La deuxième option nécessite un remue-méninges sérieux à mettre en œuvre. Ps Je me trompe peut-être, mais pour autant que je m'en souvienne, Diablo 2 a utilisé le hachage. Ainsi, le niveau (et d'autres niveaux qui lui ressemblent plus ou moins) a été décrit par le hachage.
Sergey.quixoticaxis.Ivanov
Quel type de jeu? Les techniques IE utilisées dans un jeu au tour par tour peuvent être mal adaptées à un jeu en temps réel et vice versa.
Pikalek
@ Alexandre Vaillancourt: Les testeurs rapporteront des bogues en utilisant un outil automatisé qui rassemblera des informations simples comme la quantité d'objets physiques, le nombre d'IA, etc. Je me demande ce qui pourrait être inclus non seulement dans ces rapports automatisés mais aussi dans le conventionnel rapports rédigés par des testeurs. @Pikalek: C'est un jeu d'action FPP avec un monde ouvert et un gameplay en temps réel.
BoYLER

Réponses:

18

Il peut également être très utile lorsque votre algorithme de génération de carte est déterministe et répétable en fonction d'une valeur initiale de départ. Ainsi, lorsque vous entrez la même valeur de départ, vous obtenez la même carte. Cela pourrait être plus facile à mettre en œuvre que vous ne le pensez. La plupart des API de génération de nombres aléatoires peuvent être initialisées avec une valeur de départ, puis générer toujours la même séquence de nombres aléatoires pour la même valeur de départ. Si vous utilisez l'une des rares plates-formes où ce n'est pas le cas (comme JavaScript basé sur un navigateur), vous pouvez implémenter votre propre générateur de nombres aléatoires. Il existe de nombreux algorithmes qui ne sont pas très difficiles à implémenter et nécessitent généralement une valeur de départ.

Vos testeurs peuvent ensuite mentionner la graine de la carte dans leurs rapports de bogues. Un rapport de bogue comme "Les arbres poussent au milieu d'un lac" peut avoir une instruction de reproduction "Générer une carte avec la graine a4f6dd32 et aller à la position 4321500: 1269100". Après avoir vérifié cela, vous pouvez définir un point d'arrêt conditionnel du débogueur dans votre algorithme de génération de carte qui se déclenche sur le bloc de carte affecté et vérifier exactement ce qui se passe.

Un algorithme de génération de carte déterministe vous permet également de mettre en œuvre un test automatisé. Vous pouvez avoir différentes graines de test avec des sorties connues, puis demander à vos tests automatisés de vérifier si cette sortie est toujours la même après avoir apporté des améliorations de performances dans votre algorithme de génération.

Philipp
la source
Merci à tous pour les idées. Je ne peux pas essayer de les utiliser pour le moment, car le jeu n'est pas dans un état jouable / testable, il faudra en fait beaucoup plus de temps pour être prêt pour les tests. Pour l'instant, je fais juste des recherches dans ce domaine.
BoYLER
C'est une excellente réponse. Je suis en train de créer un jeu qui utilise Dungeon Architect pour générer aléatoirement des niveaux basés sur une graine. Je suis allé plus loin et j'ai créé une classe singleton aléatoire qui distribue les valeurs aléatoires à TOUS les sous-systèmes, à la fois les DA et les miens. L'avantage est que si je connais la valeur de départ et la valeur du niveau lui-même (disons donjon 1-1 ou forêt 3-6), je peux recréer exactement le même niveau, avec les mêmes mobs, aux mêmes endroits avec le même piller les tables et tout. Étant donné que cette valeur est enregistrée, il serait facile pour moi d'analyser un rapport de bogue et de recréer le scénario.
Jesse Williams