Com 296 páginas muito bem escritas, "SFML Game Development", escrito por Artur Moreira, Henrik Vogelius Hansson e Jan Haller, é um livro novo públicado pelo PACKT que ensina(sem intimidar) sobre a popular bíblioteca de mídia, SFML 2.
Com vários códigos de exemplos, ilustrações, fluxogramas e textos bem formados, foi uma leitura agradável, e até pra mim, que já estou muito acostumado com a API do SFML e com o ambiente de criação de jogos consegui aprender um pouco mais durante a leitura.
Para mim, o livro é um must-have para quem nunca tocou no SFML ou se envolveu com desenvolvimento de games, mas deseja pegar o ritmo bem rápido com uma biblioteca bem feita. Tenho que dizer, SFML foi a primeira biblioteca de mídia que utilizei no C++, então pra mim é importante avaliar um livro como este.
Mas no meu tempo este livro ainda não existia, e mesmo tendo quase certeza que eu não teria comprado, também não tinha cartão internacional naquela época, ter ele em mãos teria poupado muitas horas de pesquisa, já que ele cobre até a parte de networking do SFML. De qualquer forma, a falta dele me fez pesquisar bastante, e aprender por conta própria (assim como eu fiz com quase tudo que sei), sem contar que naquele tempo eu tinha tempo pra ficar pesquisando, mas não vem ao caso.
Bom, voltando pro livro, ele é muito bem estruturado, possuí um boa apresentação em seu início, partindo um pouco mais a frente ele explica os básicos sobre como montar um jogo vazio com SFML rodando, e com o decorrer do livro esse jogo evolui em um shooter topdown de avião, e não é só isso, o livro ensina a implementar multiplayer co-op online. Melhor dizendo, o livro cobre todas as frações da API do SFML2, ah, quase esqueci, ele também ensina um pouco sobre alguns recursos novos do C++11.
*tl;dr: É um livro de leitura consideravelmente rápida. Cobre todo o SFML 2, é bem barato e muito bem escrito. Recomendado: compre aqui.
O livro possuí uma estrutura bem convidativa e organizada: em seu início, algumas palavras breves do autor do SFML, contando sobre a história do SFML e sobre alguns fatos sobre a segunda versão dele, logo após, a apresentação dos autores e avaliadores, depois, então, que a brincadeira começa.
O livro tem mais 10 capítulos, cada um cobrindo uma fração da programação do jogo, lembrando que o livro tem um bom material de apoio, que pode ser baixado no PACKT.
No primeiro capítulo, é dada uma boa introdução sobre como usar o SFML, incluindo download, instalação, avisos sobre a versão do C++ utilizada e o básico sobre a API, no final desse capítulo temos um jogo vazio, com FPS constante.
A partir do segundo capítulo o jogo recebe um carregador de recursos, ele ensina como otimizar o carregamento de texturas e algumas outras coisas, de forma a não perder tempo recarregando o que já foi carregado, também ensina a liberar os recursos da memória, e também sobre como tratar de uma situação bem comum: a falta de um recurso durante o jogo. Quase esqueci, ele fala um pouco sobre Shaders, e é bem interessante você saber que o SFML já vem com suporte embutido para shaders GLSL.
No terceiro capítulo o jogo começa a criar mais forma, começamos então a criar os objetos dele, elementos gráficos, controle da lógica do jogo, organização e estruturação. Eu tenho que dizer que, para quem sabe C++, mas nunca criou nenhum jogo, essa é a parte mais interessante do livro, porque é ela que define quão agradável a programação do jogo será, e quão rápido o jogo irá rodar, quanto mais você se dedicar em fazer essa parte de forma bem feita, mais rápido o seu jogo será, e os exemplos e tutoriais dados no livro são perfeitos.
No quarto capítulo, o livro ensina a administrar a entrada do usuário, detectar o aperto de botões. Caia entre nós, não é a parte mais complicada de um jogo, mas sem dúvida deve no mínimo bem feita, se você faz um erro aqui, comandos do jogador podem ser ignorados ou receberem um belo delay. Também recomendo que quem está acostumado a chamar uma função pra verificar se uma tecla foi pressionada leia esse capítulo com atenção, já que não está acostumados com um loop de eventos, porque não é assim que as coisas são na prática.
No capítulo 5, o livro explica sobre controle de estado/cena. Pra entender isso melhor: a maioria dos jogo não se passam em uma só tela do jogo, um jogo normalmente tem várias telas, agora pense que cada fase de um jogo possuí no mínimo uma tela, e algo programado por você deve administrar qual tela que está rodando. É isso que esse capítulo ensina a fazer, e eu me compliquei muito quando fui fazer isso pela primeira vez em C++, se tiver esse livro em mãos, com certeza será menos dolorido do que foi comigo.
O capítulo 6 ensina a fazer interfaces gráficas, é bem superficial e o assunto é um saco, mas é necessário, pelo menos o livro ajuda a reduzir um pouco o saco que é, e se fosse pra se aprofundar aqui o livro seria dividido em dois volumes.
Agora, no capítulo 7, alguns elementos importantes do gameplay são implementados, tipo os textos que aparecem na tela, HP no personagem. Os inimigos e projéteis também são criados nesse capítulo. O mais legal desse capítulo é a parte de fazer os homing missiles e deteção de colisões.
Dando um pouco mais de beleza ao jogo, o capítulo 8 ensina sobre efeitos especiais, sistemas de partículas, animação de sprites e algumas coisas como atlas de textura, shaders e opengl, uma das três partes mais interessantes do livro (as outras sendo controle de estado/cena e networking), lembrando que a maioria dos programadores não são bons em fazer coisas belas, e que muita gente tem dificuldade na hora de implementar Shaders e sistemas de partículas.
Chegando um pouco mais perto do final do livro, no capítulo 9 as músicas e efeitos sonoros são adicionados, um pouco sobre o carregamento das mesmas é ensinado, vale lembrar que o livro ensina a usar efeitos sonoros 3D, eu mesmo nunca tive tempo pra parar e ler sobre o assunto, o que torna o capítulo um pouco mais interessante, após isso o jogo já está praticamente pronto, só faltando um mínimo detalhe...
O multiplayer online, que é explicado no capítulo final, de forma bem completa. Como já disse, essa foi a parte que mais me interessou no livro, porque eu não tinha nem ideia de como preparar tudo, até a parte de separar em thread eu já tinha noção, mas não sabia como implementar, e, mesmo não utilizando mais o SFML, o último capítulo com certeza me deu uma boa base para quando eu for aplicar isso no meu jogo.
Se deseja criar jogos com C++, mas não sabe onde começar, comece com SFML, e tenha esse livro em mãos. E mais, mesmo que não seja com SFML, ter esse livro vai te ajudar muito quando no futuro for aplicar o que aprendeu nele na biblioteca que deseja usar, a menos, claro, que você já tenha conhecimento de tudo.