Como relatar bugs encontrados em níveis gerados proceduralmente?

8

Existem muitos tópicos sobre como a geração procedural funciona, mas não consegui encontrar nenhuma informação sobre como testar e - o que é mais importante - como relatar erros que podem ocorrer em níveis gerados processualmente. Qual é a melhor maneira de descrever um bug, por exemplo, relacionado ao design de níveis, em um mapa que parecerá diferente cada vez que você jogar um novo jogo? Quais informações devem ser incluídas no relatório de erros para que a reprodução seja mais fácil para o designer de níveis, o artista de níveis etc. e também durante o processo de regressão?

EDIT: Vale ressaltar que o jogo, estou me preparando para testar, está em fase muito inicial de desenvolvimento e está em constante mudança, juntamente com os sistemas responsáveis ​​pela geração de níveis. O objetivo desta pesquisa é aprender a descrever bugs (quais informações incluir no relatório) para que a regressão em um ambiente em mudança seja menos demorada e eficaz quanto possível.

BoYLER
fonte
2
Quem é seu público-alvo? Quero dizer, quem vai preencher esses relatórios de erros?
Vaillancourt
11
Uma das soluções possíveis é adicionar a funcionalidade "salvar", ou pelo menos algum mecanismo de hash. Dessa forma, o testador pode incluir todo o nível em seu relatório ou, pelo menos, incluir hash textual que pode ser revertido posteriormente para vários níveis semelhantes. A primeira opção é simples, mas consome tráfego / espaço. A segunda opção precisa de um brainstorming sério para implementar. Ps Eu posso estar errado, mas, tanto quanto me lembro, Diablo 2 usava hash. Portanto, o nível (e outros níveis que se parecem mais ou menos com ele) foi descrito por hash.
Sergey.quixoticaxis.Ivanov
Que tipo de jogo? As técnicas do IE usadas em um jogo baseado em turnos podem ser inadequadas para um jogo em tempo real e vice-versa.
Pikalek
@ Alexandre Vaillancourt: Os testadores relatam bugs usando uma ferramenta automatizada que reúne algumas informações simples, como a quantidade de objetos físicos, o número de IAs etc. Estou pensando no que mais poderia ser incluído não apenas nesses relatórios automatizados, mas também nos convencionais relatórios escritos por testadores. @Pikalek: É um jogo de ação FPP com um mundo aberto e jogabilidade em tempo real.
boyler

Respostas:

18

Também pode ser muito útil quando seu algoritmo de geração de mapas é determinístico e repetível com base em um valor inicial de sementes. Portanto, quando você insere o mesmo valor inicial, obtém o mesmo mapa. Isso pode ser mais fácil de implementar do que você pensa. A maioria das APIs de geração de número aleatório pode ser inicializada com um valor de semente e, em seguida, sempre gerar a mesma sequência de números aleatórios para a mesma semente. Se você estiver usando uma das poucas plataformas em que esse não é o caso (como JavaScript baseado em navegador), poderá implementar seu próprio gerador de números aleatórios. Existem muitos algoritmos em torno dos quais não são muito difíceis de implementar e geralmente sempre exigem um valor inicial.

Seus testadores podem mencionar a semente do mapa em seus relatórios de erros. Um relatório de erro como "Árvores crescem no meio de um lago" pode ter uma instrução de reprodução "Gere um mapa com a semente a4f6dd32 e vá para a posição 4321500: 1269100". Depois de verificar isso, você pode definir um ponto de interrupção condicional do depurador no algoritmo de geração de mapa que é acionado no pedaço de mapa afetado e verificar exatamente o que está acontecendo.

Um algoritmo determinístico de geração de mapas também permite implementar testes automatizados. Você pode ter várias sementes de teste com saídas conhecidas e, em seguida, fazer com que seus testes automatizados verifiquem se essa saída ainda é a mesma depois que você fez algumas melhorias de desempenho em seu algoritmo de geração.

Philipp
fonte
Obrigado a todos pelas idéias. Não posso tentar usá-los ainda, pois o jogo não está em um estado reproduzível / testável. Na verdade, será necessário muito mais tempo para estar pronto para o teste. Por enquanto, estou apenas pesquisando sobre esse assunto.
BoYLER
Esta é uma ótima resposta. Atualmente, estou criando um jogo que usa o Dungeon Architect para gerar níveis aleatoriamente com base em uma semente. Eu dei um passo adiante e criei uma classe singleton aleatória que distribui os valores aleatórios para TODOS os subsistemas, tanto os DA quanto os meus. O benefício é que, se eu souber o valor da semente e o valor do nível em si (digamos, dungeon 1-1 ou forest 3-6), posso recriar exatamente o mesmo nível, com as mesmas mobs, nos mesmos lugares e com o mesmo mesas de pilhagem e tudo. Como esse valor é registrado, seria fácil analisar um relatório de erro e recriar o cenário.
Jesse Williams