Un jeu sur PC au début des années 90 ? Comment ont-ils fait ?

Au début des années 90, le PC commence à s’imposer doucement comme machine de jeux. Développer aujourd’hui sous Windows est relativement aisé car le système d’exploitation fournit des bibliothèques qui permettent de s’affranchir des contraintes matérielles (carte vidéo, GPU, carte son, carte réseau…). Mais il y a 25 ans, c’était une autre paire de manches !
Par rapport aux consoles et machines phares des joueurs de l’époque (Megadrive, Super NES, Atari ST, Amiga), les PC avaient 3 avantages :

  • Des processeurs rapides permettant des calculs lourds (typiquement pour les jeux en 3D, ce n’est pas rien que la 3D mappée est apparue avec Wolfenstein 3D sur … 286).
  • Une définition graphique sympa pour les jeux : le mode MCGA, en 320*200 en 256 couleurs
  • Presque toutes les machines avaient un disque dur, permettant un accès rapide aux fichiers (pas aussi rapide que les cartouches, mais sans commune mesure avec les disquettes)

A part ça, le développement sur PC était extrêmement contraignant :

  • La gestion de la mémoire était un vrai cauchemar. Le système d’exploitation gérait nativement 640 Ko. Pour gérer la mémoire supplémentaire (il était courant d’avoir 2 Mo), on devait utiliser des librairies LIM ou EMS, et c’était très compliqué (croyez-moi, j’en ai encore mal à la tête). La gestion de ces paramètres pouvait virer au travail d’orfèvre et il fallait faire des choix. Sur Wing Commander par exemple, si on désactivait la mémoire EMS, le jeu était un peu moins beau mais BEAUCOUP plus rapide.
  • Au niveau des cartes sonores, il y en avait pléthore et le développeur devait prendre en compte les capacités de chacune pour jouer une musique ou des sons plus moins élaborés
  • Aucun coprocesseur additionnel n’était disponible pour aider les développeurs. Il fallait tout faire à la main. (gestion des animations, scrolling,…) A ce propos, il est amusant de noter que dans la démo emblématique Second Reality, les codeurs de Future Crew ont détournés un composant de la carte mère pour simuler le Copper de l’Amiga !

Mais surtout, il existait des dizaines de variantes de machines, avec des vitesses de processeurs différentes ! Pour résoudre ce problème, certains PC avaient un bouton pour diminuer la fréquence du processeur, et pouvoir s’amuser avec les (rares) jeux disponibles. Sinon, le jeu était trop rapide.
Vous me direz que c’est encore le cas aujourd’hui avec les PC, Mac ou les téléphones portables (Android ou IPhone). C’est vrai, mais vu le coût des machines de l’époque, on avait des rapports de puissance de 1 à 10 !

Alone in the Dark (Infogrames, 1992) est l’un des gros succès de cette époque. Encensé par son ambiance fabuleuse, la peur insidieuse distillée, son environnement sonore, il utilisait également une technique révolutionnaire.
Dans ce jeu, on explore un château hanté. Les décors sont des images fixes, sur lesquelles sont ajoutés des objets en 3D. Le moteur était très puissant : les personnages étaient composés de très nombreux polygones en 3D mappée, assez riches (bon, aujourd’hui ils nous paraissent un peu anguleux), mais c’est surtout l’animation qui était superbe.

En effet, pour animer un personnage ou un objet, les créateurs ont défini des positions clés : par exemple, si on anime un bras en train de plier, on défini le bras déplié, puis le bras plié à 45°, puis à 90°).
L’ordinateur a en charge l’animation complète en calculant les étapes intermédiaires. Le jeu s’adapte à la puissance de la machine. Si on prend notre exemple de bras, disons qu’il doit se plier en 1 seconde. Si le PC est rapide, on pourra faire une animation très fluide en 25 images/seconde. Si le PC est plus lent, le jeu n’affichait que 10 images en une seconde.
Ainsi, les animations étaient les mêmes, mais sur les machines les plus récentes le résultat était vraiment superbe.

Les jeux ID Software (Wolfenstein, Doom) utilisaient une autre astuce. Une approche « naïve » d’un jeu vidéo est de mettre en place une boucle qui :

  • Récupère le temps depuis la dernière mise à jour de l’écran
  • Met à jour le monde en fonction des entrées clavier/souris et de ce temps
  • Dessine le monde
  • Et recommence…

Problème : supposons que sur une machine lente, ce cycle prend 100 millisecondes, et 50 millisecondes sur une machine plus rapide (ces chiffres sont théoriques). Quand on joue en réseau, la machine lente a un temps de retard, et par conséquent on arrive à des problèmes qui peuvent être insolubles (les personnages traversent les murs ou sont bloqués dans des lieux improbables).
La solution a été de dissocier le dessin et la mise à jour du monde, en utilisant une horloge qui met à jour le monde toutes les N millisecondes. Quand on joue en réseau, les différentes machines sont donc dans un état cohérent !

La semaine prochaine, nous découvrirons les mécanismes qui animent le Kinect.


Mots-clés:

2 commentaires

  1. Setzer novembre 3, 2014 8:22   Répondre

    Je l’aime bien cette rubrique… même si je comprends pas toujours tout tout bien.
    (la faute à mon cerveau étroit de simple joueur)

  2. polo janvier 14, 2015 12:59   Répondre

    Putain c etait vraiment chiadé. Trop beau les graphismes.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *