Estou codificando um jogo no meu tempo livre, mas ainda sou iniciante na programação. Sinto muito se esta questão está fora de tópico ou se acaba não sendo útil para mais ninguém, mas espero que seja.
Passei muito tempo lendo livros sobre o design do código, bem como diferentes metodologias e abordagens para a codificação. No curso desta pesquisa, continuo me deparando com o conceito de Desenvolvimento Orientado a Testes. As pessoas que adotam essa idéia geralmente parecem muito apaixonadas por ela. Eu acredito que isso pode ajudar a velocidade e eficiência de escrever software. O tempo é um recurso muito precioso, por isso prefiro aprender a fazer as coisas da melhor maneira do que ficar confuso sem tentar expandir meus conhecimentos sobre o ofício da programação.
De qualquer forma, possivelmente porque sou iniciante, não consigo imaginar como aplicar o desenvolvimento orientado a testes nos jogos. Encontrei alguns artigos sobre o assunto, mas eles não foram muito úteis. A maioria dos exemplos de testes de unidade que eu vi são exemplos muito simples, ou exemplos de software que não é de todo um jogo.
Na minha própria codificação, tento abordá-lo com uma mentalidade semelhante para testar o desenvolvimento orientado, embora eu tenha certeza de que ele não se qualifica como TDD. Escrevo a quantidade mínima de código para tentar implementar qualquer recurso que estou adicionando ao jogo e testo imediatamente o jogo para ver se funciona. Se as coisas não acontecerem como eu pretendia, faço alterações imediatamente para aproximar-me do que quero. Se não estiver funcionando ou quebrado, e se não conseguir encontrar os erros lendo o código, passo os métodos no depurador até encontrar o comportamento inesperado e removo-o. O que estou tentando dizer é que estou constantemente testando o jogo, praticamente após cada mudança incremental. Testar impulsiona meu desenvolvimento. O "teste de unidade" está na minha cabeça,
Para a minha pergunta real. Como escrever testes de unidade para um jogo complexo? Por complexo, quero dizer com muitos aspectos emergentes da jogabilidade, de modo que a carne da jogabilidade emerge da interação entre os muitos elementos diferentes dentro do jogo combinados com as escolhas do jogador. Por exemplo, um rpg roguelike com um mundo processual. Que tipo de testes de unidade alguém escreveria para um jogo como esse? Como se poderia aplicar o desenvolvimento orientado a testes para esse jogo?