quinta-feira, 25 de janeiro de 2018

Leituras essencias para o Desenvolvedor de Jogos que quer ir fundo no aspecto tecnológico matemático

Repost de https://bladecast.pro/programacao/livros-essenciais-desenvolvimento-jogos

Desenvolver jogos em 2018 é uma tarefa muito mais fácil do que há poucos anos atrás antes do advento de engines como Unity e Construct. Porém para poder ir além do que as engines entregam de maneira mais automática e direta o estudo dos fundamentos é fundamental, em sites é possível se estudar qualquer coisa mas em geral o material é disperso.
A vantagem de se utilizar livros para estudar um assunto é que os livros costumam ser abrangentes, testam o seu conhecimento com exercícios e você passa mais tempo estudando do que procurando material na internet.
Esta é a lista dos livros que considero essenciais para se tornar um desenvolvedor de grande competência e sem medo de experimentar suas próprias ideias.
Além de recomendar os livros que você deve ler também vou dizer minha opinião de quais livros você pode pular sem culpa.
Língua dos livros. Infelizmente os livros que estou recomendando são escritos por autores de outros países, se alguma tradução se tornar disponível atualizarei esta lista o mais rápido possível.

Matemática

Como muita gente já deve lhe ter dito, jogos envolvem muita matemática, e eu concordo. Porém nem tudo que é dado em sala de aula no ensino médio e superior é de grande importância para o nosso assunto.

3D Math Primer for Graphics and Game Development, Segunda Edição

Assim como está escrito no título, este livro serve como uma introdução da matemática em três dimensões utilizada na programação gráfica e programação de jogos em geral. Se esforça, sempre traz os conceitos à luz de algo que interessaria uma pessoa ingressante na área de jogos, passa por muitos assuntos realmente relevantes como vetores, espaços de coordenadas, matrizes e transformações até a assuntos que não se estuda comumente no currículo comum do nível superior como curvas em 3D, coordenadas homogêneas e extensivos testes de interseção geométricas.
O livro peca em suas explicações, entretanto. Algumas partes possuem explicações desnecessárias, e em outras os fundamentos são deixados de lado ou a intuição não é construída.
Foi um livro que exigiu muita dedicação pois por diversas vezes eu tive que buscar material em outros livros ou sites para poder realmente entender do que se tratava. Os exercícios também costumam ser bem bobos.
Mesmo assim, é um livro que vale a pena ler nem que seja somente para saber quais assuntos você deve estudar e como eles são aplicados.
Veredito: 4 (de 0 a 5)
Obrigatório: Sim

Practical Linear Algebra: A Geometry Toolbox, Terceira Edição

Este livro é um excelente livro para ser lido logo após o 3D Math Primer. Todo o formalismo matemático e a falta de exercícios mais pesados que o livro anterior não possui este aqui tem de sobra, mas não se engane achando que a linguagem aqui não é acessível, pois ela é. Todo mundo sabe o que é ler um livro de matemática impossível de entender e com exemplos sem sentido.
Os autores optam por fugir do infame estilo maçante de definição, teorema e corolário, com tantos livros que utilizam esta abordagem é sempre bom encontrar algo um pouco mais formal que consegue fugir deste trio da destruição intuitiva. Praticamente todo o conteúdo aqui é utilizando no desenvolvimento de jogos e em particular na parte gráfica, ou seja, se você tem interesse em criar seus próprios shaders ou se aventurar na criação da parte gráfica de uma engine este livro é leitura obrigatória.
Poderia se aventurar um pouco na parte computacional de maneira mais explícita visto que o livro foi feito tanto para pessoas interessadas em aprender álgebra linear mais prática quanto como um preparatório para um curso de computação gráfica.
Veredito: 4 (de 0 a 5)
Obrigatório: Não, mas bastante recomendado

Geometric Algebra for Computer Science

Um assunto bastante novo que serve de alternativa à tradicional álgebra com matrizes. É realmente um livro de vanguarda em comparação aos outros que comumente são estudados, é uma teoria que se desenvolver como uma extensão da álgebra linear clássica e é comumente recebida como bastante prazerosa, consegue-se se abordar a geometria de 3 dimensões, em particular a rotação, sem ter que recorrer aos quase incompreensíveis quaternions. Eu ainda não terminei de ler este livro mas ele promete bastante.
Veredito: ? (de 0 a 5)
Obrigatório: Não

Desenvolvimento de jogos em geral

Provavelmente estes são os livros que mais vão lhe fazer se sentir um desenvolvedor (programador) de jogos de fato.

Game Engine Architecture

Tem sido o livro mais citado aqui no site e em muitos outros lugares. O autor possui extensa experiência real do campo e hoje trabalha como Programador Chefe na Naughty Dog. Apesar do livro ser extenso o nível de detalhe e a clareza com a qual ele passa os conceitos é fenomenal, um livro atual e que provavelmente vai se manter atual por muitos anos. Dificilmente você irá encontrar tantos tópicos do mais alto interesse do programador de engines e com tanta riqueza de detalhes escritos de maneira acessível do que este livro.
Mesmo que o principal foco seja para que está interessado em programar uma engine, o programador de jogos generalista também vai obter incríveis conhecimentos que vão lhe ajudar a obter o máximo de suas engines e também na implementação de subsistemas alternativos (fará isso por diversos motivos: performance, otimização de processo de trabalho, integração com outras ferramentas...) aos originais das engines escolhidas.
Veredito: 5 (de 0 a 5)
Obrigatório: Sim

Game Programming Patterns

Um outro livro também bastante citado, possui versão gratuita online. Também é usado como material fonte para os cursos que são dados no bladecast. Com uma abordagem parecida com o clássico livro de Design Patterns, este livro define e exemplifica diversas técnicas da programação de jogos que são bastante úteis em diversos tipos de jogos. Bastante didático e com vários diagramas, este livro pode ser lido e estudado do começo ao fim em um momento inicial para ser consultado inúmeras vezes em momentos futuros.
Veredito: 5 (de 0 a 5)
Obrigatório: Sim

Game Coding Complete, Primeira Edição

O livro é abrangente, faz jus ao nome. Mas não é um livro que vai te capacitar para desenvolver jogos de maneira alguma. É totalmente focado nas APIs do Windows o que pessoalmente pra mim é muito estranho.
Em muitas partes do livro ele simplesmente indica uma solução privada para algum problema e não chega nem perto de desenvolver o assunto de maneira adequada. Simplesmente não é um livro acessível onde deveria ser e passa muito tempo em alguns partes não técnicas, como o capítulo de milestones. Isso não é necessariamente ruim, mas para um livro que tem a palavra "coding" em seu título eu diria que ele não entrega o que prometeu.
A parte interessante do livro são as anedotas que o autor compartilha de sua árdua vida na série Ultima, você consegue sentir o peso da vida de um desenvolvedor AAA, realmente não é muito feliz.
Veredito: 2 (de 0 a 5)
Obrigatório: Não

IA

Tida pelos jogadores como algo cabuloso, a IA de jogos é muito especializada e simplificada em relação à IA de uso comum nas outras indústrias.

Programming Game AI by Example

Apesar de ter este título e capa genérica não se deixe enganar, este é facilmente um dos melhores livros sobre o assunto. Eu já o utilizei para implementar a inteligência artificial de um jogo chamado Connect 4, o clássico jogo da velha e diversas pequenas inteligências artificiais em jogos como pacman.
E muito além disso, este livro ensina de maneira bastante clara implementação de movimentação de agentes autônomos como seguir, fugir, perambular. Tem um capítulo inteiro dedicado a uma simples implementação de IA de futebol, explica também os métodos mais utilizados em desenvolvimento de IA de jogos da área de grafos, algoritmos esses que são usados tanto em navegação em cenários (path finding) até em jogos como match 3s, entre outros assuntos muito úteis e interessantes.
A leitura é boa, os conceitos são passados com a profundidade que os assuntos necessitam sem nunca deixar o leitor perdido ou demasiadamente cansado. Quem dera os livros técnicos fossem como este.
Veredito: 5 (de 0 a 5)
Obrigatório: Sim, totalmente.

Computação Gráfica

A área queridinha de muita gente. Costuma ser também a área mais desafiadora e enigmática. Mas com boas leituras e um estudo planejado através de mini projetos a computação gráfica pode ser desvendada.

Real-Time Rendering, Third Edition

Leitura obrigatória para quem quer entender como programar shaders e não somente shaders mas aplicações com rendering em real time (jogos?). O livro é acessível, divertido e cheio de exemplos interessantes. Uma perfeita introdução para quem quer cair de cabeça nesse mundo da programação gráfica moderna, mesmo sendo de 2008. Além de rendering e efeitos visuais em si o livro trata de ferramentas que são essencias para aqueles que pretendem criar aplicações de alta performance como culling, estruturas de dados espaciais, otimização do uso do pipeline gráfico, entre outros.
Veredito: 5 (de 0 a 5)
Obrigatório: Sim

Fundamentals of Computer Graphics, Fourth Edition

Fuja deste livro, ele é péssimo. O que mais me impressiona neste livro é a quantidade de professores que o usam como livro-texto. A probabilidade de alguém se perder nos conceitos apresentados já nas primeiras três páginas é enorme. A matemática é incrivelmente densa e a parte prática é muito corrida e essencialmente inútil. Você vai precisar pesquisar muito os porquês das coisas que são apresentadas e explicações para os conceitos mais difíceis como a função de distribuição de reflectância bidirecional, a própria equação da computação gráfica ou até mesmo coisas mais simples como o funcionamento da matriz de projeção.
Veredito: 0 (de 0 a 5)
Obrigatório: Não

Perguntas/Queries relacionadas
  • Recomendação de livros sobre desenvolvimento de jogos
  • Recomendação de livros sobre programação de jogos
  • Livros de matemática para jogos
  • Como aprender computação gráfica