Automatize seus testes de jogo: Criar jogadores virtuais para simulação de jogos

É fácil automatizar os testes de jogo criando um Jogador Virtual (um agente de jogo) e, em seguida, usando a Simulação de Jogo para executar testes de jogo automatizados em escala. Continue lendo para descobrir três estudos de caso que descrevem como a iLLOGIKA, a Furyion e a Ritz Deli criaram jogadores virtuais, transferindo quase 40.000 horas (cerca de 4,5 anos) de testes de jogo automatizados para a Game Simulation.
Os jogos são desafiadores para testar pelo mesmo motivo que são divertidos - os jogadores têm a liberdade de moldar sua própria experiência. Assim, os jogos têm uma enorme área de superfície para o aparecimento de bugs e falhas de design. Os desenvolvedores precisam testar com frequência e com ampla cobertura para resolver problemas e cumprir prazos de forma confiável.
No passado, os desenvolvedores escolhiam entre testes de baixa cobertura com alta frequência (testes de unidade em um pipeline de CI) e testes de alta cobertura com baixa frequência (testes de reprodução antes de uma versão principal).
Criamos o Unity Game Simulation para ajudar os desenvolvedores a testar com a cobertura de testes de jogo e a frequência de testes de unidade. O Unity Game Simulation permite que os desenvolvedores executem testes de jogo automatizados na nuvem. Para usar o Unity Game Simulation:
Crie um Virtual Player (um agente de jogo).
Use o pacote Game Simulation para instrumentar seu jogo para simulação.
Implemente parâmetros configuráveis remotamente para simular diferentes variações de seu jogo. Implemente métricas para registrar os dados necessários para responder às perguntas do projeto.
Use o pacote Game Simulation para criar e carregar uma versão de seu jogo em nossos servidores.
Execute seu jogo milhares de vezes a partir da interface de usuário (UI) do Game Simulation.
Esta postagem do blog se concentra na etapa 1 - criar um Virtual Player para testes automatizados. As etapas 2 a 4 são diretas e abordadas na documentação do Game Simulation. Agora você pode experimentar o Game Simulation gratuitamente.
Um jogador virtual emula a entrada de um jogador real para testar algum aspecto do seu jogo. Para testes simples, como a validação de que o jogo pode ser executado por 60 minutos sem acionar uma exceção, um Virtual Player pode ser tão simples quanto um script C# com algumas linhas de código que inicia uma cena e executa ações aleatórias.
Para testes mais complexos, como verificar se todas as armas têm aproximadamente a mesma força ou se cada nível pode ser concluído, um jogador virtual pode ser criado com os mesmos métodos comumente usados para criar personagens que não são jogadores (NPCs). Isso inclui:
- Scripts heurísticos: Um script com uma regra ou um algoritmo muito simples
- Árvores de comportamento: - Uma representação visual de um plano que consiste em condições e tarefas
- Máquinas de estado finito: Um script com alguns estados entre os quais o Virtual Player alterna, por exemplo, busca e ataque
- Planejador de IA da Unity: Uma estrutura de planejamento visual com uma Unity UI intuitiva
- Aprendizagem por reforço e aprendizagem por imitação usando o kit de ferramentas ML-Agents da Unity: Veja como criamos um player virtual para o Snoopy Pop da Jam City usando ML-Agents.
Abaixo, destacamos como três estúdios criaram o Virtual Players, transferindo coletivamente quase 40.000 horas de testes de jogo para o Unity Game Simulation. O que é particularmente digno de nota é que os três estúdios conseguiram obter um imenso valor com a Simulação de Jogo, ao mesmo tempo em que se basearam em abordagens relativamente simples para criar seu Jogador Virtual.
O estúdio independente Ritz Deli desenvolveu o Eraser Blast, um jogo de quebra-cabeça no estilo linker com mais de 50 personagens, cada um com características de jogo exclusivas. A Ritz Deli usou o Unity Game Simulation para executar centenas de simulações para garantir que cada personagem gere pontuações e contagens de moedas crescentes à medida que seu nível de XP aumenta.
O CTO e líder de tecnologia da Ritz Deli, Eric Jordan, precisava criar um Virtual Player capaz de resolver quebra-cabeças no estilo linker. Ele implementou um Virtual Player com um script C# baseado em um algoritmo heurístico simples. Para o Eraser Blast, o algoritmo corresponde à cadeia mais longa possível de bolhas do mesmo tipo:
Crie o conjunto de todas as seleções possíveis de bolha única.
Tipo de bloco desconhecido "__block", especifique um serializador para ele na propriedade `serializers.types`. Tipo de bloco desconhecido "__block", especifique um serializador para ele na propriedade `serializers.types`.
Selecione a bolha do conjunto de bolhas válidas que tenha o maior número de correspondências disponíveis.
Repita as etapas 1 e 2 até que nenhuma bolha disponível seja uma correspondência válida.
Atualize as métricas da pontuação total e das moedas concedidas.
A iLLOGIKA é o estúdio por trás do Rogue Racers, um jogo de corrida jogador contra jogador (PvP). Os jogadores criam baralhos de cartas que contêm poderes que o jogador usa durante a corrida. A iLLOGIKA usou o Game Simulation para testar todas as combinações de cartas para garantir que nenhuma carta ou baralho seja poderoso demais.
Os desenvolvedores da iLLOGIKA criaram um Virtual Player usando um script C#:
Permita que o Jogador Virtual navegue com sucesso até o final da corrida realizando raycasts para encontrar os obstáculos que se aproximam e, em seguida, evitá-los mudando de pista, esquivando-se ou pulando.
Adicione uma série de regras que descrevam quando usar as cartas com base no estado do jogo, incluindo a saúde atual do jogador, as posições relativas dos outros jogadores, as habilidades das cartas, etc.
Tipo de bloco desconhecido "__block", especifique um serializador para ele na propriedade `serializers.types`.
Para cada ação descrita nas etapas 1 e 2, escolha uma ação incorreta, mas possível, para levar em conta a imprevisibilidade de um jogador real.
A Furyion é a desenvolvedora do Death Carnival, um jogo de tiro de cima para baixo com um sistema exclusivo de encaixe de armas que permite ao jogador escolher entre mais de cem mil combinações possíveis de arma, munição e módulo de arma, cada combinação definindo uma experiência de jogo exclusiva.
Herbert Yung, fundador e diretor da Furyion, usou uma ferramenta de criação de árvore de comportamento chamada Behavior Designer para criar um Virtual Player e estimar o tempo médio de conclusão do nível para cada combinação de arma, munição e módulo de arma. Em seguida, Herbert executou milhares de simulações com o Unity Game Simulation para testar cada combinação de soquete de arma, economizando mais de 600 horas de jogo.
Herbert aproveitou a interface de usuário intuitiva do Behavior Designer e muitas tarefas prontas do Behavior Designer para criar um Virtual Player:
Se um inimigo estiver ao alcance, ataque esse inimigo.
Se nenhum inimigo estiver ao alcance, vá em direção à saída até que apareça um inimigo ao alcance.
Repita as etapas 1 e 2 até que não haja mais inimigos.
Navegue até o portão no final do nível e, quando o nível terminar oficialmente, chame Application.quit().
Para obter mais informações sobre como criar um bot com o Behavior Designer, consulte a documentação na página Asset Store do Behavior Designer.
A equipe do Unity Game Simulation está empenhada em ajudá-lo a criar jogadores virtuais para testes automatizados, começando com jogadores virtuais para testes de controle de qualidade. Entre em contato conosco se quiser ser um dos primeiros a experimentar nossas novas ferramentas e recursos para criar jogadores virtuais para testes de controle de qualidade.
Saiba mais sobre como começar a usar o Unity Game Simulation - você pode até mesmo experimentá-lo gratuitamente. E entre em contato com a equipe do Game Simulation se tiver alguma dúvida.
