AoE a-t-il été écrit en assembleur ? - Est-ce vraiment vrai ?!
- Écriture de code assembleur pour AoE et AoK : environ 13 000 lignes de code assembleur x86 32 bits ont été écrites. La majeure partie, soit environ 11 500 lignes, correspondait au « cœur de rendu », qui dessinait les sprites SLP de différentes manières.
- Compilation du code assembleur : utilisation de Microsoft Macro Assembler 6.1 pour « compiler » les fichiers .asm en fichiers .obj.
- Assembleur inline dans le code C++ : le compilateur prenait en charge l’« assembleur inline », permettant d’ajouter des blocs de code assembleur dans les fonctions avec le mot-clé
__asm { }.
- Amélioration des performances du cœur de rendu : le cœur de rendu en assembleur offrait une vitesse de dessin des sprites environ 10 fois supérieure à l’implémentation de référence en C++.
- Conception technique du code assembleur : une conception tenant compte de l’architecture du cache et des pipelines U/V, afin de tirer parti des caractéristiques des processeurs Pentium.
- Code assembleur dans l’édition AoK:HD : l’édition AoK:HD (jeu 32 bits) utilisait elle aussi du code assembleur.
- Réécriture en C++ dans les Definitive Editions : dans les Definitive Editions, des programmes 64 bits, les fonctions en assembleur ont été réécrites en C++.
Communauté et ressources AoE
- Live streams : liste de live streams liés à AoE, diffusés en plusieurs langues sur Twitch et Facebook.
- Jeu en ligne : possibilité de jouer à différentes versions du jeu, dont AoE2 Definitive Edition, sur Steam et Microsoft Store.
- Patch actuel : informations sur le patch mis à jour le 26 juillet 2023.
- Tournois et événements : informations sur les tournois via AoEZone, AoE2 Liquipedia et un calendrier des événements.
- Sites communautaires : liens vers divers sites communautaires, dont la page officielle d’Age of Empires, les forums, Discord et AoK Heaven.
- Statistiques des unités et bâtiments : liens vers des wikis et ressources fournissant des informations sur les unités et contres, les corrections de bugs, les astuces de jeu et les patchs.
- Chaînes YouTube : liste de la chaîne officielle et de YouTubers AoE2 connus.
L’avis de GN⁺
- Importance du code assembleur : dans les premières versions de la série AoE, le code assembleur a eu un impact majeur sur les performances du jeu. En particulier pour le traitement graphique, il permettait des optimisations difficiles à atteindre avec les langages de plus haut niveau modernes.
- Impact des avancées techniques : avec le temps, les progrès des compilateurs 64 bits et l’introduction du traitement multicœur ont réduit la nécessité du code assembleur. Cela montre comment l’évolution des langages de programmation et du matériel influence le développement logiciel.
- Rôle de la communauté : la communauté AoE joue un rôle important dans la popularité durable du jeu et son évolution. Grâce à diverses ressources et discussions, elle offre une plateforme où les fans peuvent partager leur passion du jeu et échanger leurs connaissances.
1 commentaires
Avis Hacker News
Un utilisateur de Hacker News a partagé son expérience du portage, en 1999-2000, de jeux Konami de la PSX vers PC. Le code écrit en C contenait de nombreux
#ifdefavec de l’assembleur inline, et le code C d’origine avait été conservé. Selon lui, ce code C original a beaucoup aidé pour le travail de portage. Il a aussi évoqué son expérience de développement logiciel pour le processeur Intel Katmai avec l’utilisation d’instructions SIMD, ainsi que du travail d’optimisation en assembleur. Dans ce processus, Intel VTune lui a été d’une grande aide. Il se souvenait toutefois que, dans certains cas, le code qu’il avait écrit en assembleur était plus lent que celui généré par le compilateur.Un autre utilisateur a mentionné NAC5, un grand tournoi de "Age of Empires 2" (AoE2) actuellement en cours à Berlin, et a partagé un lien à ce sujet.
En citant une interview de développeur, un commentaire avançait que s’il est déjà certain qu’un jeu aura besoin d’un patch avant sa sortie, alors il ne devrait pas être lancé.
Il a été mentionné que l’une des techniques d’accélération d’"Age of Empires" avait été discutée lors d’un déjeuner avec Michael Abrash, programmeur chez id Software et expert en optimisation, avec un regret exprimé pour la spontanéité des échanges que l’Internet a fait disparaître.
Un utilisateur a partagé le fait surprenant qu’un cœur graphique écrit en assembleur avait permis d’obtenir une vitesse de dessin des sprites environ 10 fois supérieure à celle en C++.
Un commentaire estimait que Michael Abrash semble apparaître partout où ont lieu des avancées majeures en graphisme.
Un utilisateur a mentionné que cela pouvait aussi être une occasion de comprendre pourquoi "Age of Empires 2: Definitive Edition" a de mauvaises performances sous Wine.
Il a été indiqué que "Age of Empires 2: Definitive Edition" contient encore de l’assembleur handwritten qui décompresse le code du jeu à l’exécution, même si ce n’est pas le code du jeu lui-même. Cela laisserait tout le code dans un état lisible, modifiable et exécutable (RWX), ce qui a été pointé comme une grave faiblesse de sécurité.
Un utilisateur qui lit actuellement sur l’histoire de Borland a expliqué que le compilateur Turbo Pascal était en grande partie écrit en assembleur et qu’il était encore utilisé dans Delphi 1.0. Comme personne chez Borland ne pouvait vraiment apporter de gros changements à ce code, il aurait finalement été réécrit pour Delphi 2.0. Il a ajouté qu’à son avis, les programmeurs qui ont écrit en assembleur des logiciels pour des CPU complexes ont quelque chose d’unique.