Esse é o primeiro livro da série “[Instant]” da Packt que leio (existem vários livros da mesma série) e de cara você percebe que o livro consiste de uma série de “receitas” sequenciais (não sei se outros títulos da série possuem a mesma estrutura).
O livro foca em desenvolver de maneira progressiva um framework HTML5/JavaScript para jogos 2D, usando um jogo de plataforma como exemplo. Discute o básico como elemento canvas, sprite e animação, input, parallax, física (colisão e pulo), inimigos e objetos, áudio e GUI. Cada receita é composta de duas seções: “How to do it” e “How it works”. A primeira seção possui uma abordagem passo-a-passo para implementar um determinado tópico, com código, enquanto a segunda seção explica um pouco mais sobre o código previamente apresentado.
Conforme mencionado no livro, o autor assume que o leitor já possua conhecimento em HTML e JavaScript (básico para intermediário) e foca apenas no código apresentado no livro. Apesar de não explicar as tecnologias, acredito que o texto e código sejam fáceis para entender e acompanhar, assim como portar o código para outra tecnologia, se você quiser.
Minha opinião sobre o livro é dividida; isto é, ele cobre vários aspectos para começar a desenvolver um jogo 2D, mas não vai além do básico: a seção “How it works” explica o código e inclui pouca teoria; não há nenhuma explicação detalhada sobre o tópico e nem são mencionados eventuais problemas que o leitor pode encontrar. Exemplos: como tocar uma música de fundo em loop? Todos os navegadores suportam áudio? Em um jogo de plataforma (gênero do livro), como lidar com plataformas flutuantes ao invés de definir o jogador numa posição fixa no eixo Y? O jogo em HTML5 roda igual no desktop e em smartphones?
Poderiam existir duas seções adicionais, “There’s more” (mais detalhes teóricos e de implementação) e “See also” (referências para aprofundar os estudos ou mesmo libs JS que poderiam ajudar o desenvolvimento), que já vi em outros livros da mesma editora.
Gostei que o código-fonte aplica orientação a objetos e possui gerenciadores (ObjectManager e AnimationManager). Realmente oferece um ponto de partida para um framework de jogos, apesar de existirem alguns bugs, como uso de frameWidth e frameHeight ao invés de texture.width/.height no AnimationManager.BoundingBox (depois que enviei uma errata pelo site, o autor corrigiu essa parte).
Esse é um bom livro se você é novo em desenvolvimento de jogos e quer começar a desenvolver em HTML5/JS, mas tenha em mente que, por causa da abordagem “short, fast, focused guide” (conforme mencionado no site do livro), você terá que procurar por informações detalhadas em outro lugar.