Another World

Présentation générale

Un jeu culte des années 90

Another World est un jeu d'aventure action cinématique sorti en novembre 1991 qui a marqué une génération de joueurs.

L'histoire

Un scientifique effectue des expériences avec un accélérateur de particules quand un orage frappe son expérience et le projette dans un monde parallèle. Le joueur doit s'échapper de ce monde.

Créateur : Éric Chahi

  • Développeur, graphiste et game designer
  • Développé pratiquement seul pendant 2 ans
  • Éric Chahi n'avait que 23 ans au début du développement
  • Publié par Delphine Software et Interplay aux États-Unis

Innovation

L'approche cinématographique était extrêmement innovante pour l'époque


Architecture remarquable et empreinte mémoire

Des chiffres impressionnants

Taille exceptionnelle

  • Exécutable : 24 kilooctets seulement
  • Données et ressources : 1,2 mégaoctet au total
  • Totalité du jeu : tient sur une seule disquette 3,5 pouces (1,44 Mo)

Comparaison avec aujourd'hui : plusieurs centaines de gigaoctets

Les trois piliers technologiques

  1. Moteur graphique vectoriel avec polygones pour animations cinématiques
  2. Moteur sonore compressé PCM avec sources numérisées (innovant pour l'époque)
  3. Machine virtuelle complète avec bytecode gouvernant l'ensemble du jeu

Compression des ressources

  • 13 banques de données + 1 fichier index
  • Compression avec algorithme Pak Killer
  • Gain total de compression : 33%
  • Sons : 16% de gain
  • Musiques : 89% de gain

Machine virtuelle - Le cœur du moteur

Architecture Harvard

Caractéristiques principales

  • 64 threads en parallèle avec multithreading coopératif
  • 256 registres (considérés comme 256 variables de 16 bits)
  • 512 octets de mémoire vive totale pour gérer toute la logique du jeu
  • Pile pour les appels de fonctions

Séparation mémoire : code distinct des données (pas d'auto-réécriture de code)

Jeu d'instructions

  • 219 instructions organisées en 5 groupes
  • Instructions de base (29) et instructions étendues
  • Organisation par fréquence statistique d'utilisation

5 groupes d'instructions : 1. Store : manipulation de variables 2. Arithmétique et logique : additions, soustractions, décalages 3. Branches et appels : saut conditionnel, appel de fonctions 4. Gestion des threads 5. Gestion des ressources

Fonctionnement des threads

Chaque thread exécute son code jusqu'à rencontrer une instruction de yield, puis rend la main au thread suivant. Cela permet une simulation de parallélisation avec des processeurs peu puissants de l'époque.


Ressources, vidéo et son

Système de ressources

7 types de ressources compilées

Sons, musiques, images, palettes, bytecode, polygones, hiérarchies de polygones

  • Compilées dans 13 banques de données
  • Référencées par 1 fichier index
  • Chaque ressource stockée avec : type, numéro de banque, offset, taille
  • Gestion d'état : chargée, déchargée ou requise

Sous-système vidéo

4 pages graphiques

  • 1 page affichée à l'écran
  • 3 pages cachées pour préparation

Rendu des polygones

  • Polygones avec nombre pair de points
  • Algorithme simple et compact : rendu ligne par ligne
  • Scènes rendues de l'arrière vers l'avant (algorithme du peintre)
  • Mise en cache des décors pour accélérer le rendu

Gestion des couleurs et effets

  • 32 palettes de 16 couleurs par niveau
  • Palette alternative pour compatibilité multiplateforme
  • Transparence : OU logique 8 sur la couleur 16
  • Masquage : lecture de couleur sur page alternative

Sous-système audio

Technologie tracker

  • 4 canaux stéréo
  • Représentation textuelle compacte de la musique
  • Effets spéciaux et musique mixés en temps réel
  • Très économe en espace mémoire

Sous-système d'entrée

Lecture des périphériques (joystick, clavier) et remplissage des registres de la machine virtuelle pour contrôle du jeu