Voyage dans les fichiers d'un jeu de 1999
« Qu'est-ce qui peut changer la nature d'un homme ? »
Planescape: Torment ne tourne pas sur un moteur unique. En 1999, le studio Black Isle reprend l'Infinity Engine de BioWare — celui de Baldur's Gate — et le plie à un tout autre projet : non plus l'épopée, mais l'introspection.
Le moteur garde son squelette : des archives KEY/BIF qui indexent chaque ressource, des ressources binaires typées portant chacune sa propre signature (CRE, ITM, DLG, ARE…), et des règles tirées d'AD&D 2e édition rangées dans des tables .2da.
Le jeu empaquette 14 569 ressources dans 249 archives BIF — créatures, dialogues, objets, sorts, zones, sprites, voix. Pour comprendre comment il est construit, il faut d'abord savoir comment il range ses fichiers.
Rien de tout cela n'a été « volé ». Tout est extrait des fichiers du jeu acheté, à l'aide d'outils qui décodent ses formats binaires.
Tout l'équilibrage du jeu tient dans des fichiers texte tabulés : les .2da. On peut les ouvrir dans un éditeur et lire les règles d'AD&D ligne par ligne.
Le THAC0 (« To Hit Armor Class 0 ») dit la facilité avec laquelle une classe touche au combat — plus le chiffre baisse en montant de niveau, plus on frappe juste. La table d'expérience fixe le seuil de chaque niveau. Les jets de sauvegarde décident si l'on résiste à un sort, un poison, un souffle.
146 tables comme celles-ci pilotent le jeu, sans une ligne de code.
Ci-contre, trois tables réelles, lues telles quelles dans les fichiers. Le Sans-Nom est un Guerrier par défaut — suivez sa ligne.
Le Guerrier passe de 20 à 1 en vingt niveaux : il finit par toucher presque à coup sûr. Le Mage, lui, traîne — il n'est pas là pour cogner.
Cinq colonnes, héritées d'AD&D : Mort/Poison, Baguettes, Pétrification, Souffle, Sorts. Plus le chiffre à atteindre est bas, mieux on résiste — et il baisse avec les niveaux.
Planescape n'est pas un jeu de combat — mais le combat existe, et chaque créature reste une fiche .cre : des chiffres rangés dans une structure binaire signée « CRE V1.0 ».
Force, dextérité, constitution, points de vie, expérience donnée. On y lit des curiosités : le Golem de fer affiche 32 000 points de vie, soit la valeur sentinelle « invulnérable » du moteur ; le Fiélon de la Boîte de Moridor vaut 500 000 points d'expérience, la plus grosse prime du jeu.
Douze créatures, leurs statistiques exactes. Choisissez un nom.
Sept compagnons peuvent suivre le Sans-Nom — et chacun est, avant tout, un fichier de dialogue. Un crâne, une tieffeline, une succube, un githzeraï, une torche vivante, un cube logique, une armure de justice.
Leur poids ne se mesure pas en points de vie mais en caractères de texte. La fiche de Morte pèse à elle seule 174 481 caractères répartis sur 743 états. C'est là qu'est l'âme du jeu.
Choisissez un nom pour découvrir son portrait de journal, sa première réplique, et le poids de sa conversation.
Chaque compagnon porte aussi un thème « personnage » signé Mark Morgan, rangé dans des fichiers CHAR_xx (format ACM) — nous en avons associé un à chacun. Touchez « écouter le thème » sur sa fiche.
Avant la 3D, il y avait le sprite. Chaque personnage de Planescape est une série d'images pré-rendues, rangées au format BAM — 2 680 fichiers d'animation à elles seules.
Une créature n'a pas un modèle qui tourne : elle a une image par direction. Le Sans-Nom marche en neuf orientations, reste immobile en cinq, chacune découpée en seize ou douze trames. Le moteur choisit la bonne planche selon l'angle de déplacement.
Ci-contre, le Sans-Nom rejoué dans le navigateur à partir de ses planches d'origine. Changez la direction, basculez entre marche et repos.
Les sprites sont volontairement affichés en gros pixels — c'est leur résolution native, telle qu'elle s'affichait en 1999.
Une zone de Sigil, c'est un grand décor peint — une image MOS de plusieurs millions de pixels — sur lequel le fichier .are pose chaque habitant à une coordonnée précise.
Nom, créature, dialogue rattaché, position exacte : tout est là, en clair. Nous avons replacé chaque acteur sur le décor d'origine. Les points ambrés sont des personnages nommés ; les points gris, la foule anonyme de la cité.
Survolez un point pour révéler qui s'y tient. Annah rôde dans le Taudis, le premier quartier où débouche le Sans-Nom au sortir de la Mortuary.
La réputation de Planescape tient à un seul fichier : dialog.tlk, la table de toutes les chaînes de texte du jeu. Tout ce que le jeu vous fait lire — descriptions, pensées, et surtout les conversations — y est rangé.
Elle compte 106 834 entrées — mais plus d'un tiers d'entre elles sont vides. Les 68 129 qui restent pèsent près de 5,4 millions de caractères, autour d'un million de mots. La plus longue chaîne fait à elle seule 8 152 caractères, et 1 097 répliques sont doublées en voix.
Réparti par interlocuteur, ce texte dessine une hiérarchie : qui parle le plus ? Le crâne, sans conteste. Voici le poids réel de chaque grande conversation.
Trois lectures d'un même corpus, dans cette section : sa masse brute, sa structure multilingue, puis l'arbre de dialogue lui-même remis en mouvement.
Un strref est une adresse, pas une étiquette : chaque ligne porte un numéro gravé dans mille autres fichiers. On peut vider une ligne de son texte ; on ne supprime jamais son numéro sans tout décaler derrière. Les trous sont donc du contenu coupé et des plages laissées en réserve — figés là pour toujours.
Le jeu a été écrit en anglais, puis traduit pour chaque marché. Le même identifiant de texte (strref) pointe vers une chaîne différente selon la langue installée — la structure reste, les mots changent.
Voici quelques descriptions d'objets, lues dans les quatre langues livrées. La « Dague du Dernier Recours », maudite, ne se lâche qu'à la mort : son texte est le même récit, raconté quatre fois.
En dessous, la vraie conversation d'ouverture avec Morte — l'arbre DMORTE tel qu'on s'y déplace. À vous de choisir vos répliques.
Les répliques de Morte au-delà de cent caractères ressortent tronquées de notre passe d'extraction (marquées «…»). Les choix, eux, sont complets.
L'arbre de Morte, ci-dessus, montre la structure d'un fichier .dlg. Voici la même mécanique remise en mouvement : la conversation entière avec Coaxmetal, le golem de fer qui forge dans une tour de siège les armes destinées à défaire le multivers.
Soixante-six états, des dizaines d'embranchements, quatre langues — tout vient du fichier DCOAX.dlg, décodé puis rejoué tel quel. Le golem parle en capitales, comme dans le jeu. Choisissez vos répliques ; l'entretien se déroule, se ramifie et se referme exactement comme à l'écran en 1999.
Le bouton « Forge » active les sons d'ambiance extraits du jeu. Les répliques marquées d'une parenthèse menaient, en jeu, vers d'autres conversations ou des échanges marchands : ici, elles closent la branche.
En ouvrant les fichiers, on tombe sur autre chose que des chiffres : des fautes de frappe, des jurons de développeurs, des noms de fonctions restés intacts dans le moteur. Rien de tout cela n'a pu être corrigé sans casser le jeu.
Les fichiers d'identifiants (.ids) nomment chaque valeur du moteur. Une coquille y devient définitive : la rectifier romprait tous les fichiers qui la référencent. Alors elles sont restées, gravées.
La plus belle se cache dans DIETY.ids — déjà mal orthographié. Le fichier censé lister les dieux du jeu n'en contient qu'un seul.
À droite, des coquilles relevées telles quelles dans les fichiers d'identifiants et de tables.
1 Experience. Et « deity » y est écrit « diety ».| Fichier | Écrit | Devrait être |
|---|---|---|
| GENDER.ids | NIETHER | NEITHER |
| FACTION.ids | HATMONIUM | HARMONIUM |
| ENGINEST.2da | BAIRLYINJURED | BARELY |
| ACTION.ids | Itterations | Iterations |
| CLOWNCLR.ids | cloth_Rasberry | Raspberry |
Le moteur baptise d'ailleurs tout son système de palette « CLOWN » : CLOWNCLR.ids range ses 211 couleurs, fautes comprises.
Les noms d'animation et de fonction n'étaient pas censés être lus par le joueur. Les développeurs s'y parlent — et s'y plaignent — en clair.
Dans ANIMATE.ids, une animation cassée porte son avertissement en majuscules ; deux autres réclament qu'on les supprime ; une dernière s'étonne qu'il n'y ait « pas de chevaux à Sigil ».
Le moteur expose aussi des actions de script taillées sur mesure pour Planescape — dont une qui fait « parler en rébus » les Dabus, et une autre qui génère le Labyrinthe Modron à la volée.
Le script principal du jeu, lui, s'appelle toujours BALDUR — hérité de Baldur's Gate, jamais renommé.
0xF003 DON'T_USE!!!_Baurier_Male // cassée — l'ID ne peut pas être supprimé0xF010 Drone_Heavy_KillMe // « tuez-moi »0xF011 Drone_Light_KillMe0xF023 Horseguy // il n'y a pas de chevaux à Sigil0xF025 James_Bird // qui est James ?0xF042 Tree_Guy // alias de « Trelon »
FloatRebus(O:Target*) // les Dabus parlent en rébus d'imagesGenerateModronMaze() // le Labyrinthe Modron, monté par le moteurFixEngineRoom() // « réparer la salle des machines » — dans un RPGSetNamelessDisguise(I:Num*) // 0=AUCUN · 1=ZOMBIE · 2=POUSSIÉREUXSinisterPoof(...) // « poof sinistre » : nom officiel d'un effet
La seule fonction du binaire qui se qualifie elle-même de « horrible hack ».
Un booléen nommé avec lassitude : quelqu'un détestait vraiment le système d'objets rapides.
Le texte du jeu cache ses propres clins d'œil. Le plus connu : un squelette anonyme de la Mortuary, le nombre « 42 » gravé sur le front — la réponse de Douglas Adams à la vie, l'univers et le reste.
Le moteur prolonge la blague : quand il plante, son message d'erreur est « We apologize for the inconvenience » — la phrase gravée sur la Terre dans le Guide du voyageur galactique. Et le strref 912 du jeu fini dit, simplement : « (Placeholder.) ».
Enfin, Planescape parle sa propre langue. Voici la fréquence réelle de l'argot de Sigil dans les 68 000 textes du jeu.
Mark Morgan a composé une bande-son ambient et mélancolique, à mille lieues de l'épopée héroïque — piano, cordes feutrées, nappes électroniques.
Le moteur ne joue pas des morceaux figés : chaque thème est découpé en segments interchangeables (le thème de combat BT5 en compte vingt-trois) que le jeu réassemble à la volée selon l'action. Huit pistes, extraites intactes du dossier musique.
Lancez-en une — le fond sonore de la page se tait pour lui laisser la place.
Pas de morceau de combat figé : le moteur enchaîne des segments interchangeables selon l'état de la bataille. Auditionnez-les un à un, ou lancez un combat simulé — la boucle centrale tourne jusqu'à ce que vous désengagiez, puis l'outro résout la scène.
Tout partait de la même opération : ouvrir les archives. Voici ce qu'on y trouve en image.
Les portraits de journal — un rendu 3D soigné pour chaque personnage rencontré — et les grands décors isométriques de Sigil, peints zone par zone. Cliquez pour agrandir.


















