Voyage dans les fichiers d'un jeu de 1999

Comment est bâti
Planescape: Torment

« Qu'est-ce qui peut changer la nature d'un homme ? »

Sous le récit le plus écrit du jeu de rôle se cache une machine : le moteur Infinity de BioWare, une centaine de tables de règles, des milliers de scripts et des centaines de fichiers de dialogue. Nous avons ouvert les archives du jeu, décodé leurs formats et trié ce qu'on y trouve. Tout ce qui suit — chiffres, portraits, sprites, voix, musique — sort directement de ces fichiers.

Commencer la lecture
01 — Architecture

Le Moteur Infinity

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.

Scripts & dialogues
BCS (2 222 scripts compilés) · DLG (854 arbres de dialogue)
Règles AD&D — tables .2da
146 tables d'équilibrage : THAC0, expérience, jets de sauvegarde…
Moteur — Infinity Engine (C++)
rendu 2D isométrique, pathfinding, tour par tour masqué en temps réel
Archives BIF / KEY
14 569 ressources, 249 archives indexées
data/
  ├── chitin.key — index maître des 14 569 ressources
  ├── gui.bif 254 Mo — interface & portraits
  ├── AR0200.bif 6,7 Mo — le Taudis (Hive)
  ├── AR0800.bif 8,4 Mo — les Nations Mortes (Dead Nations)
  ├── CA_mrt.bif Morte — créature & animations
  ├── Scripts.bif 6,1 Mo — logique de jeu compilée
  ├── *.dlg 854 arbres de dialogue (format DLG)
  ├── *.cre 1 093 fiches de créature
  └── *.2da 146 tables de règles

override/ — les fichiers qui priment sur les archives
music/ — pistes ACM, découpées en segments
02 — Les Règles

Les Règles, en clair

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.

THAC0 par niveau THAC0.2da

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.

Seuils d'expérience XPLEVEL.2da

Jets de sauvegarde du Guerrier SAVEWAR.2da

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.

03 — Bestiaire

Le Bestiaire

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.

04 — Compagnons

La Compagnie

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.

05 — Sprites vivants

Les Sprites

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.

DIR · S
planche BAM · le Sans-Nom

Animations du jeu format BAM · cliquez pour agrandir

06 — La carte vivante

La Cité peuplée

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.

Personnage nommé Foule anonyme
06 — La carte vivante · en mouvement

Et si l'on rendait le décor à ses habitants ? Voici le Taudis rejoué par le moteur lui-même — le même fichier .are, ses acteurs posés à leurs coordonnées exactes, le pathfinding lu directement depuis la carte de passage.

Le Sans-Nom se tient là où débouche la Mortuary. Cliquez n'importe où sur la cité : il calcule son chemin et s'y rend, contournant murs et étals. Survolez les silhouettes pour lire qui hante les ruelles.

Aucune capture, aucune vidéo. Tout est calculé en direct, dans votre navigateur, à partir des fichiers extraits du jeu.

Continuer
07 — Dialogues

Un Million de Mots

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.

68 129lignes pleines · 64 % 38 705slots vides · 36 %

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.

Poids des dialogues par caractères · dialog_stats

07 — Dialogues · les langues

Quatre Langues

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 dialogue DMORTE · état 0

07 — Dialogues · le format, joué

Parler au Golem de Fer

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.

08 — Archéologie

Ce que le Code a gardé

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.

DIETY.ids — une seule entrée
Le seul dieu du jeu,
c'est l'Expérience.
Dans un multivers qui compte des centaines de divinités, le fichier des dieux tient en une ligne : 1 Experience. Et « deity » y est écrit « diety ».
FichierÉcritDevrait être
GENDER.idsNIETHERNEITHER
FACTION.idsHATMONIUMHARMONIUM
ENGINEST.2daBAIRLYINJUREDBARELY
ACTION.idsItterationsIterations
CLOWNCLR.idscloth_RasberryRaspberry

Le moteur baptise d'ailleurs tout son système de palette « CLOWN » : CLOWNCLR.ids range ses 211 couleurs, fautes comprises.

08 — Archéologie · les voix du moteur

Quand les Devs Crient

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é.

ANIMATE.ids les cris des développeurs

0xF003 DON'T_USE!!!_Baurier_Male // cassée — l'ID ne peut pas être supprimé
0xF010 Drone_Heavy_KillMe // « tuez-moi »
0xF011 Drone_Light_KillMe
0xF023 Horseguy // il n'y a pas de chevaux à Sigil
0xF025 James_Bird // qui est James ?
0xF042 Tree_Guy // alias de « Trelon »

Actions taillées pour Planescape instructions du moteur

FloatRebus(O:Target*) // les Dabus parlent en rébus d'images
GenerateModronMaze() // le Labyrinthe Modron, monté par le moteur
FixEngineRoom() // « réparer la salle des machines » — dans un RPG
SetNamelessDisguise(I:Num*) // 0=AUCUN · 1=ZOMBIE · 2=POUSSIÉREUX
SinisterPoof(...) // « poof sinistre » : nom officiel d'un effet
incrementHorribleClockHack()

La seule fonction du binaire qui se qualifie elle-même de « horrible hack ».

m_bStupidQuickItemStuff

Un booléen nommé avec lassitude : quelqu'un détestait vraiment le système d'objets rapides.

08 — Archéologie · trésors enfouis

Easter Eggs & Argot

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.

« 42 » est gravé sur le front du squelette ; plusieurs de ses os — surtout les mâchoires — ont été liés par des lanières de cuir.Texte du jeu · un squelette de la Mortuary

L'argot de Sigil occurrences dans dialog.tlk

cutter
personne compétente
494
berk
idiot, naïf
379
the lady
la Dame de la Douleur
209
blood war
la guerre éternelle démons / diables
142
barmy
fou, dingue
108
clueless
un naïf venu du Plan Matériel
46
basher
un combattant
35
piking
lâche, qui fuit
16
sodding
juron (« foutu »)
12
addle-coved
confus, désorienté
11
bubber
ivrogne
11
leatherhead
stupide
9
09 — Musique

La Partition de Mark Morgan

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.

Le combat, assemblé à la volée BT1 · segments

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.

En attente
Extrait et décodé des fichiers de Planescape: Torment

Juin 2026 — à partir de Planescape: Torment (1999, Black Isle Studios / Infinity Engine).

Aucun code source n'a été « volé ». Tout a été extrait des fichiers du jeu, à l'aide d'outils écrits pour décoder ses formats binaires propriétaires — KEY/BIF, CRE, DLG, .2da, BAM.