Use o código e tenha 10% de desconto!

TDD para Games Desenvolvimento guiado a testes para jogos digitais

Julia Naomi Boeira

*Você terá acesso às futuras atualizações do livro.

Para quem é este livro

Por muito tempo, a indústria de games foi resistente a metodologias ágeis. Entretanto, essa resistência decorria de tentativas frustradas de introduzir os frameworks ágeis em seu cotidiano, seja porque as pessoas não tentaram adaptá-los aos seus mundos, seja porque tentaram introduzir um framework específico como solução, "O Verdadeiro Ágil". Muitas interpretaram e consideraram um livro ou um processo como mais importante que o próprio manifesto ágil. (http://agilemanifesto.org/iso/ptbr/manifesto.html).

Vamos lembrar dos conceitos do manifesto:

* Indivíduos e interações mais que processos e ferramentas.

* Software em funcionamento mais que documentação abrangente.

* Colaboração com o cliente mais que negociação de contratos.

* Responder às mudanças mais que seguir um plano.

O que me parece um dos erros mais comuns é o peso da inversão causada pela primeira frase do manifesto, já que o nosso desenvolvimento de games, nos últimos anos, tem sido "processos e ferramentas acima de indivíduos e interações". Mais que isso, a indústria de games toma processos, ferramentas e frameworks de forma bastante rígida e inflexível — uma grande tristeza por esta ser uma indústria tão dinâmica.

Além disso, vejo o Test-Driven Development (TDD) ou, em português, desenvolvimento guiado a testes, como uma manifestação da segunda frase do manifesto. Isso, porque creio que um código bem testado pode ser visto como uma forma de documentar e garantir a qualidade do software. Outro ponto é que acredito que a colaboração com o cliente é fundamental na indústria de jogos, especialmente pelo fato de jogos serem softwares de entretenimento. Por último, é um mercado que exige muita mudança, principalmente devido ao fato de suas tendências mudarem todos os dias, tornando o Lean uma ótima solução. Gostaria de recomendar uma breve leitura no blog de engenharia da Riot, que tenta aplicar muitos destes padrões. (https://engineering.riotgames.com/). Mais referências na bibliografia.

Tendo dito isso, acredito que este livro é para todos os públicos: para a profissional, que gostaria de melhorar suas habilidades de codar com qualidade e segurança, e também para a iniciante, que tem como objetivo fazer seu primeiro jogo. Certamente, este livro não exige que você seja uma profissional no desenvolvimento de games, mas ter uma noção mínima de C#, Java, Python, C++, Ruby ou qualquer outra linguagem fará com que você flua mais facilmente pelo livro. Um outro ponto é que é um grande prazer para mim poder falar de desenvolvimento de games com Programação Funcional, mas como os projetos que conheço ainda não são estáveis, vou deixá-los como referências somente para apresentar e atiçar a sua curiosidade: https://github.com/oakes/play-clj/ e https://arcadia-unity.github.io/.

Este livro é focado na parte de desenvolvimento de **software** do jogo, por isso a obra não trata de arte, nem foca muito em conceitos básicos da área de jogos, como "O que é um jogo?" e "Como um jogo funciona?". Não acredito que o objetivo deste livro seja ensinar programação à leitora, mas sim, ensinar TDD. Mesmo assim, exemplifiquei tudo o que fiz para ficar o mais claro possível.

Eu decidi fazer este livro com MonoGame porque ele é de fácil utilização, versatilidade e bastante aceito. Além disso, gostaria de mencionar que, na minha opinião, a Unity é a única engine com um framework de testes decente, mas infelizmente ela muda drasticamente de uma versão para a outra. Considerando estes fatores de Unity e MonoGame, optei por utilizar C#, uma linguagem utilizada por uma grande comunidade gamer, com tutoriais extensos e muitos livros sobre games.

Por último, mas não menos importante, está o fato de que times que desenvolvem games com o pensamento das metodologias ágeis necessitam que toda a equipe entenda tal pensamento. Assim, acredito que este livro pode ser muito útil para nivelar a equipe. Mais informações sobre as ideias apresentadas aqui podem ser encontradas no livro Lean Game Development: Desenvolvimento enxuto de jogos (https://www.casadocodigo.com.br/products/livro-lean-game-development).

Como o livro está organizado

Este livro está organizado em três seções. A primeira é sobre TDD e como ele funciona, conceitos de entrega e de integração contínuas, sobre como construir e fazer o design de software do seu jogo e, por último, quais ferramentas são melhores para sua estratégia de teste. O que me faz lembrar que, além de ser arte, jogos também são softwares, um tipo específico de software que exige uma grande habilidade de codificação. É por isso mesmo que temos as engines, pois elas nos poupam tempo e linhas de código.

A segunda seção do livro traz o desenvolvimento de um jogo da velha com o framework MonoGame em um Mac OS, mas as práticas podem ser aplicadas para qualquer sistema operacional. Algumas práticas de TDD serão aplicadas ao processo de desenvolvimento, fora do loop Update/Draw, com o repositório completo disponível no GitHub, livre para forks e pull requests. Essa seção será desenvolvida com C#, e algum conhecimento de Orientação a Objetos será útil.

A terceira parte tem como ideia aplicar os conceitos que aprendemos na segunda seção em um cenário mais real utilizando Unity, C#, NUnit e NSubstitute. Além disso, criamos um jogo que pode ser jogado por qualquer pessoa.

Espero que todas vocês tenham uma ótima leitura deste livro e que possam começar a aplicar técnicas de TDD em seus projetos.

Sobre a autora

Julia Naomi Boeira é desenvolvedora de software na ThoughtWorks Brasil e possui grande experiência no desenvolvimento de games. Ela já trabalhou com diversas engines, como Unreal, Cry, Unity, GameMaker Studio e com frameworks como MonoGame e PyGame.

Ao utilizar PyGame e Panda3D, Julia percebeu a necessidade e a possibilidade de usar TDD para games. Deste momento em diante, ela assumiu a responsabilidade de promover essa ideia entre outras pessoas desenvolvedoras de games.

Para este projeto, Julia contou com a ajuda de uma colega, Victoria Fuenmayor.

Sumário

  • Parte 1 - Como e por quê?
  • 1 O que deu errado?
  • 2 Introdução
    • 2.1 Por que temos tantos códigos mal testados?
  • 3 O mundo do Build e do Design
  • 4 Por que devemos nos preocupar com CI?
    • 4.1 E quanto a CI para games?
  • 5 TDD, como começar?
    • 5.1 Casos de teste de um jogo simples
  • Parte 2 - TDD com MonoGame
  • 6 Introdução ao MonoGame
    • 6.1 Possibilidades de projetos
    • 6.2 Iniciando um projeto
  • 7 Configurações
    • 7.1 Iniciando um projeto no GitHub
    • 7.2 Criando uma solução
    • 7.3 Adicionando um projeto de testes
    • 7.4 TDD com MonoGame
  • 8 Primeiros passos no TDD com jogos
    • 8.1 Os primeiros casos de teste
  • 9 Criando o Board e gerenciando seu estado
    • 9.1 Regiões do Board e seus estados
    • 9.2 Permitindo a atuação de diferentes jogadores
  • 10 Dando vida ao jogo
    • 10.1 Imprimindo os símbolos corretos
    • 10.2 Atualizando o estado no Game Loop
    • 10.3 Vamos ganhar este jogo!
  • 11 Vitória visual
    • 11.1 Análise e refatoração do código
    • 11.2 Vitória visual
    • 11.3 Bloqueio do jogo após o fim
  • Parte 3 - Testando com Unity
  • 12 Introdução a testes com engines
    • 12.1 Configurando os testes
  • 13 Testando entradas de keyboard
    • 13.1 Injeção de dependências
    • 13.2 Melhorando os testes de situações limites
  • 14 Um cenário no qual inimigos aparecem ao nosso redor
    • 14.1 Fazendo inimigos aparecerem
    • 14.2 Inimigos se aproximam com o tempo
  • 15 Criando um sistema de vida
    • 15.1 Testando danos na UI
  • 16 Incluindo uma câmera e toques finais
    • 16.1 A câmera
    • 16.2 Time Attack
  • 17 Adicionando um CI
    • 17.1 CI para Unity
  • 18 Referências

Dados do produto

Número de páginas:
230
ISBN:
978-65-86110-65-4
Data publicação:
04/2021

Compartilhe!

Compartilhe no Facebook Compartilhe no Twitter

*Você terá acesso às futuras atualizações do livro.