Category Archives: book review

Análise de livro: Ouya Unity Game Development (Packt Publishing)

BookOuyaUnityGameDevelopmentNo momento em que escrevo essa análise (dezembro de 2013), o livro “Ouya Unity Game Development” é o único livro sobre o assunto e está dividido em sete capítulos. O público-alvo são programadores iniciantes que têm certa familiaridade com a Unity, embora o autor explique conceitos básicos (assim, os que não estão acostumados com a ferramenta conseguem acompanhar sem problemas).

O primeiro capítulo comenta brevemente sobre a história dos jogos, a fim do leitor entender o contexto do Ouya. Em seguida, no capítulo 2, o autor explica como configurar a máquina de desenvolvimento: como obter e instalar o Android SDK e NDK, o Ouya SDK, como conectar o Ouya no computador e a configuração necessária para trabalhar com o plug-in da Unity (disponibilizado pela empresa Ouya).

O projeto desenvolvido no livro é um clone simples de Sokoban em 3D e seu desenvolvimento é explicado nos capítulos 3 a 5. Nesses capítulos, o autor também comenta sobre suporte ao controle do Ouya (que é simples de usar). O framework de monetização do Ouya é discutido no capítulo 6, que explica sobre como configurar e gerenciar compras assim como o que é necessário mudar no jogo (por exemplo, destravar níveis após pagamento) e configurar no site do Ouya. Por fim, o autor discute alguns tópicos sobre suporte multi-plataforma.

É um livro curto com aproximadamente 100 páginas. Metade dele é relacionado ao Ouya e a outra metade discute desenvolvimento em Unity com C#. Apesar desse livro ser o único disponível no mercado, é possível encontrar muita informação na documentação oficial do Ouya (recomendo checar a conta do github do Ouya).

Sobre Unity, o leitor deve aprofundar mais se quiser criar bons jogos com a ferramenta. A editora possui outros títulos sobre a ferramenta que explicam tópicos mais avançados e recomendo verificá-los.

Na minha opinião, o livro poderia explorar mais detalhes sobre performance, compressão de texturas no Ouya, como incluir suporte a múltiplos controles e o que fazer quando um deles é desconectado, e assuntos do tipo, ao invés de usar metade do livro para explicar um projeto Unity (que independe de plataforma-alvo, com exceção do suporte ao controle do Ouya). Talvez o autor pudesse focar também no desenvolvimento para Ouya usando outras tecnologias como Cocos2d-x, Libgdx, GameMaker, etc. além da Unity. Uma comparação dessas tecnologias seria bem útil, listando os prós e contras para diferentes gêneros de jogos.

No geral, o livro cobre o essencial para começar e a abordagem adotada (metade Ouya/metade Unity) é compreensível; o leitor terá um pacote completo para começar a desenvolver pro Ouya (e possivelmente outros dispositivos Android) e não precisará de outro livro para seguir o conteúdo. No entanto, novamente, para tópicos intermediários/avançados, é muito recomendado verificar outros livros e referências.

Link para a página do livro no site da editora.

Be Sociable, Share!

Análise de livro: Instant HTML5 2D Platformer (Packt Publishing)

BookInstantHTML5PlatformerEsse é 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.

Link para a página do livro no site da editora.

Be Sociable, Share!

Análise de livro: Getting Started with C++ Audio Programming for Game Development (Packt Publishing)

BookCppAudioProgramming

Esse é um livro introdutório para desenvolvedores C++ (intermediário) que querem iniciar em programação de áudio, mais especificamente usando FMOD. O autor começa apresentando no primeiro capítulo alguns conceitos universais de áudio, como volume, pitch, frequência, bit depth e formatos de arquivos de áudio. Em seguida, introduz o FMOD e explica como adiciona-lo a um projeto (Visual Studio C++), como iniciar o FMOD, carregar e reproduzir áudio e verificar erros. Após essa introdução do FMOD, há um projeto para criar um simples gerenciador de áudio através de uma classe C++. No capítulo 3, o autor expande o gerenciador para incluir controle de áudio, isto é, playback, controle de volume, pitch, panning, agrupamento de canais.

Com o básico de áudio explicado, o autor parte para áudio 3D e como trabalhar com áudio posicional, reverb e efeitos no FMOD. Ao trabalhar com áudio posicional, o desenvolvedor precisa lidar com oclusão e obstáculos que afetam a maneira como o áudio é percebido pelo jogador. Este é um tópico que poderia ser explorado com mais detalhes pelo autor, pois ele comenta sobre o assunto em apenas duas páginas. O mesmo vale para efeitos via DSP (processamento de sinais digitais), que é comentado nas 3 últimas páginas do mesmo capítulo de áudio 3D.

A ferramenta FMOD Designer também é apresentada. É uma ótima ferramenta da Firelight Technologies (desenvolvedora do FMOD) para aqueles que são mais focados em design. O autor explica como criar eventos simples de som (como efeitos de passos e vidro quebrando), evento multi-trilha (passos interativos, motor de carro) e música interativa, além de como chamar os eventos via código. Para projetos maiores ou que precisam de algo além do controle básico de áudio, essa ferramenta é obrigatória (ou ao menos valerá muito a pena usa-la).

O último capítulo envolve programação de áudio em baixo nível, isto é, como trabalhar com os bytes de um arquivo de som digital – carregar, tocar, alterar propriedades, etc. Embora FMOD ainda seja usado para o controle de áudio, o leitor tem uma visão “por trás dos panos” sobre APIs de áudio de alto nível.

Com ~100 páginas, esse é um bom livro introdutório para desenvolvedores que não estão familiarizados com programação de áudio, principalmente porque não há muitos livros sobre o assunto (há alguns que focam em programação DirectSound/XACT, mas essas tecnologias parecem estar mortas -ou estão morrendo- e são apenas para plataforma Microsoft). É um livro de C++, mas desenvolvedores de outras linguagens (como C#) também podem se beneficiar do conteúdo, uma vez que o FMOD suporta outras linguagens. A decisão do autor em usar o FMOD é boa também: é uma tecnologia multiplataforma, suporta vários formatos de áudio e é adotado em vários jogos de sucesso, por empresas e game engines (como Unity e UE3). Eu já trabalhei em um jogo multiplataforma usando FMOD para áudio e os resultados foram muito bons.

Para iniciar com programação de áudio, acho que o conteúdo e tamanho do livro estão OK, embora o autor poderia se aprofundar mais em áudio 3D e efeitos via DSP (e incluir código de áudio 3D na classe gerenciadora de áudio; o código-fonte só está disponível para os capítulos 2, 3 e 6).

Vale a pena mencionar que o FMOD Studio não é discutido no livro e, para qualquer tarefa não relacionada a áudio (gerenciamento de janela, render e input), o autor usa o SFML (Simple and Fast Multimedia Library).

Gostaria de ver outro livro do autor/editora com assuntos mais avançados de programação de áudio, como mais detalhes sobre como trabalhar com áudio 3D (e suas implicações), efeitos DSP em tempo real, áudio dinâmico e performance. Seria bom também ver um projeto que inclui FMOD Designer (ou FMOD Studio) e código, não apenas exemplos no livro.

Be Sociable, Share!

Análise de livro: Windows Phone 8 Game Development (Packt Publishing)

No meu antigo blog, vez e outra fazia breves análises sobre livros de desenvolvimento de jogos e artbooks. Nesse novo blog, não cheguei a fazer nenhuma análise – até agora. Eu até poderia escrever sobre algum livro que tenho ou que comprei recentemente, mas… Bom, há alguns dias atrás, surgiu a oportunidade de eu escrever um review, pois a editora Packt Publishing me enviou a versão digital do Windows Phone 8 Game Development (Marcin Jamro) para avaliar. Espero que com essa análise, eu volte a escrever mais sobre livros.

BookWindowsPhone8GameDevelopment

Conforme a descrição do livro, este é um guia prático para desenvolvimento de jogos para Windows Phone 8. Diferente de alguns livros que apresenta um “Hello, World!” para cada tópico apresentado, o autor escolheu desenvolver o projeto de um jogo completo (apresentado no primeiro capítulo), que é incrementado a cada capítulo.

O autor mostra uma visão geral da plataforma Windows Phone 8, do ciclo de vida dos aplicativos, assim como das diferentes maneiras de desenvolver (managed, nativa e híbrida). A abordagem híbrida, usada no livro, me chamou a atenção, pois como desenvolvedor cross-platform acostumado com C++ (ou mesmo C#/XNA), acho interessante ter uma maneira mais fácil/rápida de criar a UI ao mesmo tempo em que é possível desenvolver nativo para performance e processamento mais pesado.

Nesse sentido, o livro usa um misto de C#, C++, C++/CX, XAML e Direct3D, algo que achei meio incomum. C# e XAML para UI, C++/CX e Direct3D para o core do jogo, com uma classe Direct3DInterop fazendo a comunicação entre código nativo e gerenciado.

A abordagem passo-a-passo é boa para iniciantes e há algumas dicas que podem economizar tempo de desenvolvedores com mais experiência (mesmo avançados que vêm de outras plataformas). Há um capítulo sobre o padrão de projeto MVVM (model-view-view model), aplicado ao jogo, e o último capítulo lida com a parte de publicação.

Sobre tópicos atuais, o livro trabalha com localização, mapas, geolocalização, web services e redes sociais (usando API’s do Facebook e Twitter). O jogo desenvolvido no livro também implementa leitor de RSS. Duas features que gostaria de ver rodando em aparelhos reais são realidade aumentada e reconhecimento de voz, pois pareceram ser fáceis de implementar.

Há duas coisas que poderiam ter no livro:
- Algumas features são implementadas só com código gerenciado: o autor poderia explicar brevemente como implementar nativamente ou dar direções (apesar que há alguns links no apêndice), ou mesmo implementar a versão nativa e disponibilizar no código-fonte do livro;
- Apesar de ser um livro de Windows Phone 8, poderia ter alguma discussão (ou comparação) sobre como cada feature do aparelho/SO está relacionado com os concorrentes (iOS e Android), pois atualmente é muito comum o lançamento de apps e jogos em diferentes SO’s e stores.

No geral, o livro cumpre o que promete e recomendaria para qualquer um que tem interesse em aprender a desenvolver jogos para Windows Phone 8.

Be Sociable, Share!