Styles

vendredi 8 septembre 2017

Game Engine Black Book, pour comprendre les techniques bas niveau de 1992

Fabien Sanglard, d'origine de Romans-Sur-Isere, aujourd'hui employé de Google à Mountain View, CA vient de publier son livre que beaucoup attendaient avec impatience: Game Engine Black Book: Wolfenstein 3D. Depuis plusieurs années, Fabien nous gratifie de nombreux billets techniques sur son blog, essentiellement sur la programmation de jeux, et notamment des explications des techniques "bas niveau" de jeux mythiques comme Wolfenstein 3D ou Quake, ou de plateformes, certes anciennes, mais qui sont tellement instructives qu'il est passionnant de s'y pencher à nouveau.

Aujourd'hui avec son livre Game Engine Black Book, Fabien prend le temps d'expliquer le hardware de l'époque de Wolfenstein 3D, les outils de l'époque (TurboC++) et toutes les techniques géniales qui ont été mises en œuvre pour la première fois dans un jeu pour construire la vision 3D en vitesse rapide. Nécessité est mère de l'inventivité : les contraintes si fortes de l'époque ont poussé les développeurs comme John Carmack à trouver des techniques bas-niveau originales et puissantes qui, aujourd'hui encore sont appréciées pour leur élégance et leur efficacité.


Et c'est pour cela qu'il est intéressant de lire le code source de Wolfenstein 3D accompagné du livre Game Engine Black Book pour en tirer toute la substantifique moelle et en tirer des leçons pour soi-même, dont la première est l'humilité : pour produire de telles optimisations, une somme incroyable de temps et de jus de cerveau a du être déployée, et on ne peut être qu'impressionné par le niveau de maitrise complète du système qu'avaient ces programmeurs.

L'utilisation de langages de haut niveau, avec ramasse-miettes, des sucres syntactiques, d'abstractions sur d'autres abstractions sur d'autres frameworks, sur d'autres machines virtuelles jusqu'à l'infini abouti à programmer sur des sables mouvants où la complexité est telle qu'aucune maitrise réelle n'est envisageable. Cette programmation "abstraite" revient presque à un exercice de croyance où la qualité n'est qu'espérée sur la foi des développeurs des technologies sous-jacentes et la croyance dans leur capacité à maintenir complètes et entières leurs abstractions.

Aucun commentaire: