Description

Mise à jour à venir.

Critique [Livre] – Advanced 2D Game Development, par Jonathan S. Harbour.

Cette semaine n’a pas été très productive. On a eu quelques épisodes de gastro dans la famille en plus de cette bonne vielle grippe qui est venue frapper à la porte. Heureusement, je suis vacciné contre le H1N1 et donc, je ne devrais pas mourir. Le monde a assez perdu de grands hommes comme ça!


Je dois dire que j’ai également perdu beaucoup de temps à repenser mon système de sprites. J’ai dû en effet, arrêter le développement du système de collision pour la simple et bonne raison que pour le tester, j’ai besoins de sprites. Hors, comme je l’ai déjà dit, elles n’étaient vraiment pas au point. J’ai effectué quelques recherches sur le web afin de trouver une bonne implémentation de sprite mais sans trop de succès. Ma meilleure référence vient du livre de Harbour, Advanced 2D Game development.

L’auteur y présente une classe sprite de base pouvant être utilisée de différentes manières, dans différents contextes de jeu. L’approche est intéressante mais trop de base et en même temps, j’ai l’impression qu’elle est parfois trop complexe pour de simple sprites qui ne doivent qu’afficher qu’une image. Je me suis néanmoins basé sur sa méthode en intégrant celles de Davison, de Brackeen et de la mienne évidemment. Quand j’aurai terminé mon système de sprites, j’en parlerai plus en profondeur. J’essairai également de mettre un vidéo des sprites en action.

Revenons à mon intention de base : le livre de Harbour. Il faut d’abord comprendre que comme je n’ai jamais suivi de formations en développement de jeu vidéo, une bonne librairie technique est primordiale. Je me suis donc procuré des livres sur le web en me basant sur leurs descriptions et sur les commentaires des utilisateurs. Dans le cas de celui de Harbour, je me suis fait un tantinet avoir.

Quand j’ai acheté ce livre, j’en cherchais un qui traitait du 2D. C’est sur le 2D que je désire travailler parce que je ne me sens pas capable de m’attaquer au sujet beaucoup plus complexe de la 3D. Non seulement au niveau de la logique, mais surtout au niveau du graphisme. Même, si mes dessins sont nuls, je peux tout de même les utiliser dans mes jeux 2D avec un résultat quand même intéressant. C’est donc en faisant mes recherche que je suis tombé sur le titre de Harbour en prévente. Et comme c’était un livre « avancé », je me disais que c’était parfait parce que j’en avait déjà sur les notions de bases. Et Internet pouvait aussi combler quelques lacunes. D’ailleurs, je me suis vite aperçu que les livres d’introductions ne valent pas la peine parce que leurs contenus sont bien trop superficiels. Les explications sont souvent nulles, dans le sens où la théorie n’est pas expliqué et on doit alors se fier aveuglément au jugement de l’auteur. En plus, ce sont souvent des concepts qui vont de soi que l’on aurait pu facilement déduire par soi. Rien de neuf finalement. Dans cet optique, lorsque j’ai lu la description de  « Advanced 2D Game Development », je me suis dit : « Ça y est! C’est pile poil ce qu’il me faut. » Sauf que la description était basée sur des informations en prévente. Voici ce que l’on disait, grosso-modo :

"Advanced 2D Game Development" is a comprehensive guide to 2D game development for experienced game programmers who are comfortable working in the C++ language. The book covers every significant 2D game subject including animated sprites, tile-based scrolling, level editing, vector graphics, and physics, as well as the major game genres: real-time strategy, turn-based strategy, first-person shooter, scrolling platform, and role-playing. Readers will develop a complete, professional quality, real-time strategy (RTS) game through the exploration of game theory and techniques, from simple 2D topics to more advanced material such as pathfinding and enemy AI."

Et quand le livre a été en vente, la description est devenue beaucoup plus modeste :

"Get ready to build a complete, professional-quality 2D game engine from start to finish! "Advanced 2D Game Development" is your comprehensive guide to 2D game development using DirectX in the C++ programming language. Each chapter of the book covers one major component of the game engine, including 2D and 3D rendering, DirectInput, FMOD audio, game math, multi-threading, Lua scripting, and more, and the game engine is built upon chapter by chapter. Through the creation of the game engine, you'll learn step by step how to write solid code for multiple compilers, adding to the code as you work through each chapter. And every chapter includes an example game that illustrates the new techniques being taught. Perfect for game programming students and professionals alike, this book is your ultimate guide to awesome 2D game development. "

Je partage tout à fait l’avis de cet utilisateur sur Amazon. Le livre est écrit pour des imbéciles. L’auteur nous prend vraiment pour des idiots en expliquant et en illustrant des concepts de façon bébêtes. Les sujets touchés sont tout ce qui a de plus basic. Il consacre pratiquement un chapitre à configurer son environnement de travail. Ce qui a mon sens relève bien plus de l’introduction que de concepts avancés. Les chapitres sont creux, dans le sens où les sujets traités sont à peine effleurés. Vraiment, ce livre aurait dû être appelé :  « Introduction 2D Game Development ». En fait, l’auteur rempli ces pages avec de longs listings de code qu’il réutilise abondamment dans d’autres sections même si peu de changements y ont été apportés. Pour vous donner une idée, 20 lignes de listing, prend environ une page du livre. En gardant le code au minimum, j’imagine que ce livre aurait pu avoir 100 à 150 pages en moins. Sur un total de 320 pages environ… J’appel cela du remplissage. Surtout qu’il y a un CD qui accompagne le volume avec l’ensemble du code en version mature. On a qu’à ouvrir les fichiers désirés et les imprimés, si notre conscience planétaire nous le permet, pour suivre les explications du livre.

Malgré tout, comme je l’ai dit, ce livre m’est utile. La vie n’est pas que noir ou blanc. Je l’utilise pour établir des squelettes de classes. Et à partir de ces classes de bases, j’enlève ce qui m’est inutile et j’ajoute des éléments que je considère cruellement manquant dans son approche. En fait je prends le meilleur de son approche et je l’utilise selon mes besoins. En espérant que j’obtienne des résultats satisfaisants.

En fait, avant de terminer ce billet, je suis allé voir l’API de développement web de Brackeen que j’ai téléchargé ici. Cette API s’appelle « pulpcore ». Elle contient une implémentation d’une sprite que j’ai étudié tout à l’heure. Ciel que je suis loin d’atteindre ce niveau. Brackeen utilise entre autre des path svg pour les comportements des sprites au niveau des mouvements. Quelle excellente idée. Ça c’est complexe. Ça c’est avancé. Je me rends compte encore plus que ce que Harbour à écrit, c’est pour les gamins du primaire… Et je suis gentil.

Note finale : 5/10

Commentaires