Mise à jour du 09/01/24 : La version originale de cet article créditait par erreur Matt Pritchard comme « responsable du codage » sur Age of Empires. « C’était Angelo Laudon, qui excellait dans ce domaine », explique Pritchard. « J’ai été chargé entre autres du graphisme et de l’optimisation. Plus tard, j’ai été responsable des versions HD et DE. » Toutes mes excuses pour l’erreur.
Certaines des plus grandes histoires sur les jeux concernent simplement la façon dont les développeurs ont fait fonctionner la chose. Demandez à n’importe quel développeur quelles sont ses solutions de contournement préférées et vous obtiendrez une soirée complète de divertissement sur le fonctionnement réel d’un tramway géant. un PNJ avec un chapeauou comment sont réellement les lapins Qu’est-ce qui fait fonctionner Azeroth ?et ainsi de suite.
Ce n’est pas tout à fait dans ce sens, mais un rédacteur a récemment noté que Chris Sawyer avait écrit Rollercoaster Tycoon 1 et 2 en langage Assembly, et apparemment Age of Empires était le même : « AoE est écrit en Assembly : est-ce réellement VRAI ?! » Il est important de noter que cela n’était pas rare à l’époque, même si ce serait quand même assez remarquable si un jeu entier était codé en dur de cette façon. Le langage assembleur, pour être aussi bref que possible, est tout langage de codage de bas niveau qui communique plus directement avec l’architecture d’un ordinateur que les langages de haut niveau comme le C++.
La question de savoir si Age of Empires a été codé en langage Assembly J’ai touché l’or dans les réponses grâce à Matt Pritchard, l’un des membres fondateurs d’Ensemble Studios, qui était en charge des graphismes et de l’optimisation sur les premiers jeux, et sur les éditions HD/DE ultérieures, responsable du codage.
« Je suppose que je peux clarifier cela, puisque j’ai écrit tout le code assembleur utilisé dans Age of Empires et Age of Kings, ainsi que de nombreuses autres parties de ces jeux », explique Pritchard. « Il y avait environ 13 000 lignes de code assembleur x86 32 bits écrites au total. »
Pritchard poursuit en expliquant que la grande majorité de cela se trouvait dans le « noyau de dessin », qui a été compilé par Microsoft Macro Assembler 6.1 dans un fichier .obj et dans d’autres cas par Visual C++. En clair, il s’agissait d’un moyen extrêmement efficace pour le jeu de dessiner des sprites, Pritchard estimant qu’il était environ 10 fois plus rapide que les implémentations C++ standard.
« Le noyau de dessin d’AoE était nettement plus rapide que celui de concurrents comme StarCraft, c’est pourquoi la résolution par défaut « prête à l’emploi » pour AoE était de 800 x 600, alors que presque tous nos concurrents avaient une résolution de 640 x 480 », explique Pritchard. « Nous pouvions faire défiler l’écran et le remplir de sprites aussi rapidement, voire plus, même si nous avions deux fois plus de pixels dans la zone du monde du jeu. »
Le code Assembly est resté utilisé même à l’époque de Age of Kings : édition HD (un jeu 32 bits), mais Pritchard « a réécrit les fonctions d’assemblage en C++ pour les deux éditions définitives, car ce sont des programmes 64 bits et en ligne. L’assemblage n’a jamais été pris en charge par le compilateur C++ 64 bits, et les jeux de registres considérablement améliorés et les optimisations du compilateur l’ont rendu inutile. De plus, le dessin de sprites dans les éditions définitives est multithread et utilisera jusqu’à 4 cœurs pour cette seule tâche. «
Une telle solution de contournement était nécessaire en partie parce que les deux jeux étaient développés à une époque où les cartes 3D autonomes étaient rares : « la pointe était la 2D avec une carte 3D séparée comme les Voodoo 1 et 2 », explique Pritchard. Il entre dans les détails sur les restrictions techniques de l’époque, notant que le processeur Pentium 166 des machines que la plupart des développeurs d’Ensemble utilisaient « avait 16 Ko de cache… TOTAL ». Ou pour le dire plus clairement, « Vous travaillez probablement en ce moment sur un PC avec plus de mémoire cache sur le processeur que le PC sur lequel j’ai développé AoE n’en avait au TOTAL. »
Pritchard a eu toute une carrière mais a clairement une réelle affinité pour Age of Empires, et mentionne comment l’édition HD (à ne pas confondre avec l’édition définitive) est née. « L’édition HD est née après avoir fait du porte-à-porte chez Microsoft pendant quelques années pour essayer d’intéresser quelqu’un, et le contrat avec Hidden Path (où je travaillais à l’époque sur CS:GO pour mon ancien employeur Valve) était plutôt petite », explique Pritchard.
« Microsoft ne pensait pas qu’il y avait beaucoup d’intérêt pour une version téléchargeable entièrement numérique d’un jeu 2D des années 1990 (la version sur CD-ROM du jeu original était encore dans les rayons des magasins à peine un an ou deux auparavant). La HD a été réalisée par un une excellente équipe chez HPE avec un petit budget (~ 5 personnes, ~ un peu moins d’un an), donc les changements ont été limités au domaine de « absolument nécessaire » plutôt que les éditions définitives, plus ambitieuses. »
Il y a aussi des détails amusants sur les différents ports console des jeux. « Ensemble n’avait rien à voir avec le portage PS2 », explique Pritchard. « Microsoft a négocié l’accord par lui-même et leur a donné un code et des ressources sur CD et leur a dit ‘allez-y’. Presque la même chose pour le port Dreamcast, bien que pour celui-là, j’ai passé une heure à dessiner sur un tableau blanc et à essayer d’expliquer détails graphiques à un ingénieur de Konami qui ne parlait pas anglais alors que je ne parlais pas japonais.
Pritchard termine en disant : « Je suis très chanceux d’avoir pu jouer un rôle démesuré dans ces jeux depuis le tout début et leur création en 1996, jusqu’à être la force motrice derrière la renaissance en 2010-2011 jusqu’à aujourd’hui, terminant mon propre voyage. avec lui une fois DE sorti en 2019.
« Je suis à la fois très chanceux d’avoir participé à sa création et aujourd’hui encore, je suis touché par tout le plaisir et bien plus qu’il a apporté aux gens. Je n’aurais jamais eu la belle carrière dans le développement de jeux que j’ai eue sans tous les fans. et les supporters de ces jeux. »