Casa do Código - Livros e Tecnologia

  • Programação
  • Lógica
  • Java
  • .NET
  • PHP
  • Games
  • OO
  • Funcional
  • Python
  • Outros
  • Todos
  • Mobile
  • iOS
  • Android
  • Multiplataforma
  • Outros
  • Todos
  • Front-end
  • HTML e CSS
  • JavaScript
  • Outros
  • Todos
  • Infraestrutura
  • Web
  • Dados
  • Outros
  • Todos
  • Business
  • Startups
  • Marketing Digital
  • Gestão
  • Agile
  • Outros
  • Todos
  • Design & UX
  • Você tem 0 itens na sacola 0 Abrir navegação por categorias e busca Ir para ao topo da página

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

    TDD para Games Desenvolvimento guiado a testes para jogos digitais

    Julia Naomi Boeira
    Livro de TDD para Games

    *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
    Fórum de discussões

    Compartilhe!

    Compartilhe no Facebook Compartilhe no Twitter

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

    altLogoFooter

    Uma empresa do Grupo Alun

    Logo da Alun

    Links da
    Casa do Código

    • Meus ebooks
    • Sobre a Casa do Código
    • Todos os livros
    • Nossas coleções
    • Quero escrever um livro ou fazer parceria
    • Perguntas Frequentes
    • Política de Privacidade
    • Fale conosco

    Nas redes sociais

    • /CasaDoCodigo
    • @casadocodigo
    • @casadocodigo

    Receba novidades e lançamentos

    Este site aceita Pix, Cartão de Crédito, Débito

    • pagarme
    • paypal

    Grupo Alun

    • Educação em Tecnologia

      • FIAP
      • Casa do Código
      • PM3 - Cursos de Produto
    • Mais Alura

      • Alura Start
      • Alura Língua
      • Alura Para Empresas
      • Alura LATAM
    • Comunidade

      • Tech Guide
      • 7 days of code
      • Hipsters ponto Jobs
    • Podcasts

      • Hipsters ponto Tech
      • Dev sem Fronteiras
      • Layers ponto Tech
      • Like a Boss
      • Scuba Dev