Retour sur le DevFest Toulouse 2026 : Another World, une belle leçon d’architecture logicielle

Sommaire
- Another World, une belle leçon d’architecture logicielle par Olivier Poncet
- Contexte historique et technologique de Another World
- Un moteur de jeu révolutionnaire : la machine virtuelle et l’abstraction
- Gestion des ressources : compression et optimisation
- La gestion du rendu graphique : polygones et hiérarchies
- Architecture multi-threading coopératif
- Leçons d’architecture logicielle pour aujourd’hui
- Conclusion
Another World, une belle leçon d’architecture logicielle par Olivier Poncet
Lors du DevFest Toulouse 2025, Olivier Poncet, expert en architecture logicielle, a donné une conférence fascinante sur Another World, un jeu vidéo emblématique sorti en 1991. Bien plus qu’un simple jeu d’aventure, Another World est un modèle d’innovation technique et d’architecture logicielle. Dans cette session, Olivier a décortiqué les choix architecturaux audacieux qui ont permis à ce jeu de marquer son époque et de rester une référence pour les développeurs. Voici un résumé des points clés de cette présentation.
Contexte historique et technologique de Another World
Sorti en 1991, Another World (initialement intitulé Out of This World en version originale) est un jeu d’aventure cinématographique qui a marqué les esprits grâce à son approche visuelle révolutionnaire et son moteur de jeu innovant. Développé par Eric Chahi sur un budget limité, le jeu est un exemple frappant de la manière dont une architecture logicielle bien pensée peut surmonter les limitations techniques des machines de l’époque.
- Taille de l’exécutable : Avec seulement 24 Ko d’exécutable, Another World parvient à offrir une expérience immersive, une prouesse technique pour l’époque où la mémoire était une ressource précieuse.
- Dataset de 1,2 Mo : En comparaison avec les jeux modernes qui peuvent peser plusieurs gigaoctets, le jeu de 1991 utilise un dataset très léger, ce qui nécessitait une gestion particulièrement efficace des ressources.
Le jeu était conçu pour être exécuté sur des machines comme l’Amiga, et il exploitait des techniques comme la rotoscopie pour animer des personnages avec un réalisme impressionnant pour l’époque. Mais ce qui distingue vraiment Another World, c’est son architecture logicielle, un parfait exemple de modularité et d’abstraction.
Un moteur de jeu révolutionnaire : la machine virtuelle et l’abstraction
Olivier a mis en lumière la manière dont le moteur du jeu était conçu autour d’une machine virtuelle complète, une idée novatrice pour l’époque. La machine virtuelle utilisée dans Another World est une architecture Harvard, ce qui signifie que les instructions et les données sont séparées dans la mémoire.
- Machine virtuelle généraliste : Cette machine virtuelle permettait d’abstraire l’ensemble des opérations du jeu, des actions des personnages aux interactions avec l’environnement. Elle gérait ainsi une hiérarchie de ressources et d’états qui étaient rendus de manière fluide à l’écran.
- Le moteur des actions était responsable des événements du jeu, tandis que les ressources (polygones, images, sons, bytecode) étaient gérées par cette même machine virtuelle. Une telle abstraction offrait une flexibilité impressionnante tout en permettant un contrôle fin des performances.
Gestion des ressources : compression et optimisation
Une partie essentielle de la réussite technique de Another World réside dans la gestion des ressources. Le jeu utilise des techniques d’optimisation et de compression pour maximiser l’utilisation de la mémoire et réduire la taille des fichiers nécessaires à son fonctionnement.
- Compression avec l’algorithme Bitekiller : Un algorithme spécialement conçu pour comprimer les ressources, permettant de réduire la taille des fichiers sans sacrifier la qualité. Le système utilisait une technique de compression à base de bitstream qui offrait un gain de 33 % en termes de taille, une performance impressionnante étant donné les limitations de l’époque.
- Un buffer unique pour la décompression : L’approche « à rebours » de Another World consistait à décompresser les ressources dans un seul buffer mémoire, plutôt que de les charger en plusieurs étapes. Cette gestion mémoire permettait de réduire les coûts en termes de cycles processeur et d’optimiser la fluidité du jeu.
La gestion du rendu graphique : polygones et hiérarchies
Le moteur graphique d’Another World était basé sur un moteur vectoriel polygonal. Plutôt que d’utiliser des sprites bitmap classiques, le jeu représentait ses personnages et environnements par des polygones vectoriels, une technique qui permettait de créer des animations fluides avec un nombre limité de ressources. Le choix du rendu polygonal, combiné à la gestion des couleurs et des sprites, était une solution élégante face aux limitations graphiques des plateformes de l’époque.
- Rendu des polygones en tranches : Une des techniques clés utilisées par Another World était le rendu en tranches. Les polygones étaient rendus de haut en bas, une technique qui permettait de réduire le travail nécessaire pour le rendu, en créant une hiérarchie de polygones qui se superposaient de manière fluide. Cette méthode était complétée par l’algorithme du peintre, où les polygones étaient rendus de l’arrière vers l’avant pour éviter les problèmes de superposition et d’occlusion.
Architecture multi-threading coopératif
Une autre caractéristique technique de Another World qui a marqué les esprits est l’utilisation du multi-threading coopératif. Le moteur du jeu ne faisait pas appel à un système d’exploitation multitâche classique, mais utilisait plutôt un système de gestion de threads basé sur un modèle coopératif.
- 64 threads, 256 registres, 1 pile : La machine virtuelle d’Another World pouvait exécuter jusqu’à 64 threads en parallèle, ce qui permettait de gérer l’animation des personnages, les événements du jeu, et la gestion des ressources en temps réel. Bien que cette approche n’offre pas les mêmes garanties qu’un système multitâche moderne, elle était particulièrement efficace sur les machines de l’époque, où les ressources étaient limitées.
Leçons d’architecture logicielle pour aujourd’hui
Olivier a conclu sa présentation en soulignant plusieurs leçons d’architecture logicielle que les développeurs modernes peuvent tirer de Another World :
- Abstraction et modularité : L’utilisation d’une machine virtuelle complète pour gérer les actions, les ressources et les événements montre l’importance de créer des abstractions claires et modulaires. De nos jours, des concepts similaires sont utilisés dans les moteurs de jeu modernes comme Unity ou Unreal Engine, qui utilisent des systèmes de composants pour gérer les éléments du jeu de manière flexible.
- Optimisation des ressources : Le travail d’optimisation de la mémoire et de compression dans Another World est un excellent exemple de l’importance d’une gestion efficace des ressources, un principe qui reste crucial, même dans le développement de logiciels modernes, notamment pour des applications mobiles ou des jeux en temps réel.
- Simplicité et efficacité : Malgré ses avancées techniques, Another World ne cherchait pas à être un jeu complexe en termes de code. Il misait plutôt sur la simplicité, l’efficacité et l’utilisation optimale des ressources limitées, un principe toujours valable dans l’architecture de logiciels modernes.
Conclusion
Another World reste l’un des exemples les plus marquants d’architecture logicielle efficace, où chaque décision technique a été pensée pour maximiser les performances tout en respectant les contraintes matérielles de l’époque. La conférence d’Olivier Poncet a permis de redécouvrir ce jeu mythique sous un autre angle : celui de l’ingénierie logicielle, et de comprendre comment une architecture bien pensée peut transformer une idée ambitieuse en une réalisation technique à la fois élégante et performante.
Les développeurs d’aujourd’hui peuvent tirer une immense inspiration de la manière dont Another World a été conçu, en appliquant des principes d’abstraction, de gestion des ressources et de simplicité dans leurs propres projets.
