Article de reference

Informer

Inform est un langage de programmation et un système de conception pour la fiction interactive créé à l'origine en 1993 par Graham Nelson . Inform peut générer des programmes co...

Inform est un langage de programmation et un système de conception pour la fiction interactive créé à l'origine en 1993 par Graham Nelson . Inform peut générer des programmes conçus pour les machines virtuelles Z-code ou Glulx . Les versions 1 à 5 ont été publiées entre 1993 et ​​1996. Vers 1996, Nelson a réécrit Inform à partir des premiers principes pour créer la version 6 (ou Inform 6 ). Au cours de la décennie suivante, la version 6 est devenue raisonnablement stable et un langage populaire pour l'écriture de fiction interactive. En 2006, Nelson a publié Inform 7 (brièvement connu sous le nom de Natural Inform ), un langage entièrement nouveau basé sur les principes du langage naturel et un nouvel ensemble d'outils basé sur une métaphore de l'édition de livres.

Z-Machine et Glulx

Les compilateurs Inform traduisent le code Inform en fichiers d'histoire pour Glulx ou Z-code , deux machines virtuelles conçues spécifiquement pour la fiction interactive. Glulx, qui peut prendre en charge des jeux plus volumineux, est la valeur par défaut.

La Z-machine a été développée à l'origine par Infocom en 1979 pour ses titres de fiction interactive. Comme il existe au moins un tel interpréteur pour presque toutes les plateformes majeures et mineures, cela signifie que le même fichier de code Z peut être exécuté sur une multitude de plateformes sans aucune modification. À l'origine, Inform ne ciblait que la Z-machine.

Andrew Plotkin a créé une version non officielle d'Inform 6 qui était également capable de générer des fichiers pour Glulx , une machine virtuelle qu'il avait conçue pour surmonter de nombreuses limitations de la machine Z vieille de plusieurs décennies. À partir d'Inform 6.3, sorti le 29 février 2004, Inform 6 a inclus le support officiel pour les deux machines virtuelles, basé sur le travail d'Andrew Plotkin. La première version d'Inform 7 ne prenait pas en charge Glulx, mais en août 2006, le support de Glulx a été publié.

Informer 6

Inform a été créé à l'origine par Graham Nelson en 1993. En 1996, Nelson a réécrit Inform à partir des premiers principes pour créer la version 6 (ou Inform 6). Au cours de la décennie suivante, la version 6 est devenue relativement stable et un langage populaire pour l'écriture de fiction interactive.

Le système Inform 6 se compose de deux composants principaux : le compilateur Inform , qui génère des fichiers d'histoire à partir du code source d'Inform, et la bibliothèque Inform , une suite de logiciels qui gère la plupart des tâches difficiles d' analyse du texte saisi par le joueur et de suivi du modèle mondial. Le nom Inform fait également référence au langage de programmation Inform que le compilateur comprend.

Bien qu'Inform 6 et Z-Machine aient été conçus à l'origine pour la fiction interactive, de nombreux autres programmes ont été développés, notamment un interpréteur BASIC , un didacticiel LISP (complet avec interpréteur), un jeu Tetris et une version du jeu Snake .

Le compilateur Inform 6

Le compilateur Inform génère des fichiers pour la machine Z ou Glulx (également appelés fichiers d'histoire) à partir du code source d'Inform 6 .

Le langage de programmation Inform 6

Le langage de programmation Inform est orienté objet et procédural . Les objets sont un élément clé du langage. Les objets sont conservés dans une arborescence d'objets qui répertorie les relations parent-enfant entre les objets. Étant donné que la relation parent-enfant est souvent utilisée pour représenter un emplacement, on dit souvent qu'un objet qui est le parent d'un autre objet le « détient ». Les objets peuvent être déplacés dans l'arborescence. En général, les objets de niveau supérieur représentent des pièces et d'autres emplacements dans le jeu, qui peuvent contenir des objets représentant le contenu de la pièce, qu'il s'agisse d'objets physiques, de personnages non joueurs, du personnage du joueur ou d'effets d'arrière-plan. Tous les objets peuvent contenir d'autres objets, donc un livingroomobjet peut contenir un insurancesalemanobjet qui contient un briefcaseobjet qui contient l' insurancepaperworkobjet.

Dans les premières versions d'Inform, les objets étaient différents de la notion d'objets de la programmation orientée objet, dans la mesure où il n'existait pas de classe. Les versions ultérieures ont ajouté la prise en charge des définitions de classe et ont permis aux objets d'être membres de classes. Les objets et les classes peuvent hériter de plusieurs classes. Les jeux de fiction interactifs contiennent généralement de nombreux objets uniques. Pour cette raison, de nombreux objets dans Inform n'héritent d'aucune classe, autre que la « métaclasse » Object. Cependant, les objets ont très souvent des attributs (des propriétés booléennes, telles que sceneryou edible) qui sont reconnus par la bibliothèque Inform. Dans d'autres langages, cela serait normalement implémenté via l'héritage.

Voici un exemple simple de code source d'Inform 6.

! Les crochets définissent une routine. Il s'agit de la routine Main, qui ne prend aucun argument. 
[ 
Main ; 
print 
"Hello, World! ^ " ; 
];

Les parties procédurales, instructions et opérateurs, sont largement empruntées au C, à l'exception notable que le -->xcaractère au lieu de [x]est utilisé pour prendre des indices de tableau. Les routines sont définies entre crochets, comme dans la Mainroutine ci-dessus, mais appelées avec des crochets ronds comme en C. Le caractère @est utilisé pour échapper des caractères et pour invoquer des opcodes bruts de la machine Z.

Bibliothèque Inform 6

Le système Inform contient également la bibliothèque Inform, qui automatise presque tous les travaux les plus difficiles impliqués dans la programmation de fiction interactive ; plus précisément, il comprend un analyseur de texte qui donne un sens à la saisie du joueur et un modèle mondial qui garde une trace d'éléments tels que les objets (et leurs propriétés), les pièces, les portes, l'inventaire du joueur, etc.

Le compilateur Inform ne nécessite pas l'utilisation de la bibliothèque Inform. Il existe plusieurs bibliothèques de remplacement disponibles, telles que Platypus et InformATE, une bibliothèque qui code Inform en espagnol. Certains jeux peuvent n'utiliser aucune bibliothèque du tout, comme un portage direct de Zork dans Inform 6.

Exemple de jeu

Voici un exemple de code source Inform 6 qui utilise la bibliothèque Inform. L'exemple de code Inform 6 ci-dessous est utilisable dans Inform 7, mais pas sans une démarcation spéciale indiquant qu'il s'agit d'un code hérité intégré.

Histoire 
constante « Bonjour Déductible » ; 
Titre constant 
« ^ Un exemple interactif ^ » ;
Inclure 
« Parser » ; 
Inclure 
« VerbLib » ;
[ 
Initialiser ; 
location 
= 
Salon ; 
"Bonjour le monde" ; 
];
Objet 
Cuisine 
"Cuisine" ; 
Objet 
Front_Door 
"Porte d'entrée" ;
Objet 
Living_Room 
"Salon" 
avec 
description 
"Un salon confortablement meublé." , 
n_to 
Cuisine , 
s_to 
Porte_d'entrée , 
a 
de la lumière ;
Objet 
-> 
Vendeur 
"vendeur d'assurances" 
avec 
le nom 
'assurance' 
'vendeur' 
'homme' , 
description 
"Un vendeur d'assurances dans un 
 costume en polyester de mauvais goût. Il semble impatient de vous parler." , 
avant 
[; 
Écouter : 
déplacer 
Insurance_Paperwork 
vers 
le joueur ; 
"Le vendeur vous ennuie avec une discussion 
 sur les polices d'assurance-vie. De sa 
 mallette, il sort des papiers qu'il 
 vous tend." ; 
], 
a 
animé ;
Objet 
-> 
-> 
Mallette 
"mallette" 
avec 
le nom 
'mallette' 
'case' , 
description 
"Une mallette noire légèrement usée." , 
a 
un conteneur ;
Objet 
-> 
-> 
-> 
Insurance_Paperwork 
"documents d'assurance" 
avec 
le nom 
'paperasse' 
'papiers' 
'assurance' 
'documents' 
'formulaires' , 
description 
"Page après page de petit jargon juridique." ;
Inclure 
« Grammaire » ;

Jeux notables développés dans Inform 6 ou versions antérieures

  • Curses , de Graham Nelson (1993), le premier jeu jamais écrit dans le langage de programmation Inform. Considéré comme l'un des premiers jeux « modernes » à répondre aux normes élevées fixées par les meilleurs titres d'Infocom.
  • Zork: The Undiscovered Underground (1997), écrit par Marc Blank et Michael Berlyn , programmé par Gerry Kevin Wilson. Offert gratuitement par Activision pour promouvoir la sortie de Zork: Grand Inquisitor .
  • Anchorhead , de Michael S. Gentry (1998) est une histoire d'horreur très appréciée inspirée du mythe de Cthulhu de HP Lovecraft .
  • Photopia , d' Adam Cadre (1998), le premier jeu presque entièrement dépourvu d'énigmes. Il a remporté le concours annuel de fiction interactive en 1998.
  • Varicella d'Adam Cadre (1999). Il a remporté quatre prix XYZZY en 1999, dont le prix XYZZY du meilleur jeu, et a fait l'objet d'un essai universitaire.
  • Galatea , d' Emily Short (2000). Galatea est entièrement axé sur l'interaction avec la statue animée du même nom. Galatea possède l'un des systèmes d'interaction les plus complexes pour un personnage non joueur dans un jeu de fiction interactif. Adam Cadre a qualifié Galatea de « meilleur PNJ de tous les temps ».
  • Slouching Towards Bedlam , de Star C. Foster et Daniel Ravipinto (2003). Situé dans un décor steampunk , le jeu intègre narrativement des fonctionnalités de méta-jeu (sauvegarde, restauration, redémarrage) dans le monde du jeu lui-même. Le jeu a remporté deux prix XYZZY et a reçu la note moyenne la plus élevée de tous les jeux du concours de fiction interactive en 2006.

Informer 7

Le 30 avril 2006, Graham Nelson a annoncé la sortie bêta d'Inform 7 au groupe de discussion rec.arts.int-fiction. Inform 7 se compose de trois parties principales : l' IDE Inform 7 avec des outils de développement spécialisés pour tester la fiction interactive, le compilateur Inform 7 pour le nouveau langage et « The Standard Rules » qui forment la bibliothèque principale d'Inform 7. Inform 7 s'appuie également sur la bibliothèque Inform et le compilateur Inform d'Inform 6. Le compilateur compile le code source d'Inform 7 en code source Inform 6, qui est ensuite compilé séparément par Inform 6 pour générer un fichier d'histoire Glulx ou Z-code . Inform 7 écrit également par défaut des fichiers Blorb , des archives qui incluent le code Z avec une « couverture » facultative et des métadonnées destinées à des fins d'indexation. L'ensemble complet des outils Inform 7 est actuellement disponible pour Mac OS X , Microsoft Windows et Linux (depuis 2007).

En 2023 , Inform 7 et ses outils sont toujours en cours de développement. Depuis avril 2022, Inform 7 est open source et développé sur GitHub .

Inform 7 a été nommé Natural Inform pendant une brève période, mais a ensuite été renommé Inform 7. C'est cet ancien nom qui explique pourquoi le compilateur Inform 7 est nommé « NI ».

Informer 7 IDE

L'IDE Inform 7 sur Mac OS X montrant le code source et l'écheveau
L'IDE Inform 7 sur Mac OS X montrant la carte d'index et la transcription

Inform 7 est livré avec un environnement de développement intégré (IDE) pour Mac OS X, Microsoft Windows et Linux. L'IDE Mac OS X a été développé par Andrew Hunter. L'IDE Microsoft Windows a été développé par David Kinder. L'IDE Linux (connu sous le nom de GNOME Inform) a été développé par Philip Chimento.

L'IDE Inform 7 comprend un éditeur de texte pour éditer le code source d'Inform 7. Comme de nombreux autres éditeurs de programmation, il propose une coloration syntaxique. Il marque les chaînes entre guillemets d'une couleur. Les titres des sections organisationnelles (volumes, livres, chapitres, parties et sections) sont mis en gras et agrandis. Les commentaires sont définis dans une couleur différente et légèrement plus petits.

L'IDE comprend un interpréteur de code Z intégré . L'interpréteur de l'IDE Mac OS X est basé sur l'interpréteur Zoom d'Andrew Hunter, avec des contributions de Jesse McGrew. L'interpréteur de l'IDE Microsoft Windows est basé sur WinFrotz .

Lorsqu'un développeur teste le jeu dans l'interpréteur intégré, la progression est suivie dans les vues « skein » et « transcript » de l'IDE. L'écheveau suit les commandes du joueur sous forme d'un arbre de possibilités de ramification. N'importe quelle branche de l'arbre peut être rapidement suivie, ce qui permet de réessayer différents chemins dans un jeu en cours de développement sans rejouer les mêmes parties du jeu. Les chemins peuvent également être annotés avec des notes et marqués comme des solutions, qui peuvent être exportées sous forme de procédures pas à pas textuelles. La transcription, en revanche, suit à la fois les commandes du joueur et les réponses du jeu. Les réponses correctes du jeu peuvent être marquées comme « bénies ». Lors de la relecture d'une transcription ou d'une branche de l'écheveau, les variations par rapport à la version bénie seront mises en évidence, ce qui peut aider le développeur à trouver des erreurs.

L'IDE fournit également divers index sur le programme en cours de développement. Le code est affiché sous la forme d'une hiérarchie de classes, d'une carte IF traditionnelle, d'une table des matières de type livre et sous d'autres formes. En cliquant sur les éléments de l'index, vous accédez au code source correspondant.

L'IDE présente deux volets côte à côte pour travailler. Chaque volet peut contenir le code source en cours de travail, l'état actuel de la compilation, l'écheveau, la transcription, les index du code source, une version en cours d'exécution du jeu, la documentation d'Inform 7 ou de toute extension installée, ou des paramètres. Le concept consiste à imiter le livre manuscrit d'un auteur en présentant deux « pages en vis-à-vis » au lieu d'une multitude de fenêtres séparées.

Informer le langage de programmation 7

Les fonctionnalités notables incluent une forte tendance à privilégier un style de programmation déclaratif basé sur des règles et la capacité à déduire les types et les propriétés des objets à partir de la façon dont ils sont utilisés. Par exemple, l'instruction « John porte un chapeau. » crée une « personne » appelée « John » (puisque seules les personnes sont capables de porter des choses), crée une « chose » avec la propriété « portable » (puisque seuls les objets marqués « portables » peuvent être portés) et définit John comme portant le chapeau.

Un autre aspect notable du langage est la prise en charge directe des relations qui permettent de suivre les associations entre les objets. Cela inclut les relations fournies automatiquement, comme un objet contenant un autre ou un objet porté, mais le développeur peut ajouter ses propres relations. Un développeur peut ajouter des relations indiquant l'amour ou la haine entre des êtres, ou pour suivre les personnages d'un jeu qui se sont rencontrés.

Inform 7 est un langage de programmation hautement spécifique à un domaine , offrant au rédacteur/programmeur un niveau d'abstraction bien plus élevé qu'Inform 6 et un code source résultant très lisible. Les instructions logiques et arithmétiques à usage général sont écrites en langage naturel (voir par exemple l'exemple « Physique » dans The Inform Recipe Book ).

Dans les premiers Inform 7, le compilateur traduit le code en Inform 6, un peu comme CFront l'a fait avec C++ et C. Le compilateur actuel (à partir de la version 10 de 2022) est en outre capable de traduire le code directement en C pour un exécutable natif, et de générer un « mini-site Web d'index » décrivant l'histoire.

Exemple de jeu

Les instructions dans Inform 7 prennent la forme de phrases complètes. Les lignes vides et les retraits sont à certains endroits significatifs sur le plan structurel. La forme de base d'un programme Inform 7 est la suivante :

"Bonjour le monde !" par "IF Author" Le monde est une pièce. Lorsque le jeu commence, dites « Bonjour, monde ! »

Ce qui suit est une réimplémentation de l'exemple « Hello Deductible » ci-dessus écrit dans Inform 7. Il s'appuie sur la bibliothèque connue sous le nom de « The Standard Rules » qui sont automatiquement incluses dans toutes les compilations Inform 7.

"Bonjour Déductible" par "Auteur IF" Le titre de l’histoire est « Un exemple interactif » . Le salon est une pièce. « Un salon confortablement meublé. » La cuisine est au nord du salon. La porte d'entrée est au sud du salon. La porte d'entrée est une porte. La porte d'entrée est fermée et verrouillée. Le vendeur d'assurances est un homme dans le salon. La description est la suivante : « Un vendeur d'assurances dans un costume en polyester de mauvais goût. Il semble impatient de vous parler. » Comprenez « homme » comme le vendeur d'assurances. Le vendeur d'assurances porte une mallette. La description est la suivante : « Une mallette noire légèrement usée ». Comprendre « mallette » comme la mallette. Les documents d'assurance se trouvent dans la mallette. La description est la suivante : « Page après page de petit jargon juridique. » Il faut comprendre « papiers » ou « documents » ou « formulaires » comme étant les documents. Au lieu d’écouter le vendeur d’assurances : dites « Le vendeur vous ennuie avec une discussion sur les polices d'assurance-vie. De sa mallette, il sort des papiers qu'il vous tend. » ; transférer les documents d'assurance au joueur. 

Jeux notables écrits avec Inform 7

Mystery House Possessed (2005), d' Emily Short , a été le premier jeu Inform 7 à être rendu public. Il a été publié dans le cadre du projet « Mystery House Taken Over ».

Le 1er mars 2006, Short a annoncé la sortie de trois autres jeux : Bronze (un exemple de jeu traditionnel à forte intensité de puzzle) et Damnatio Memoriae (une suite de son jeu primé Inform 6 Savoir-Faire ) ont été rejoints par The Reliques of Tolti-Aph de Graham Nelson (2006). Lorsque la bêta publique d'Inform 7 a été annoncée le 30 avril 2006, six « exemples travaillés » d'œuvres de moyenne à grande échelle ont été mis à disposition avec leur code source, y compris les trois jeux précédemment sortis le 1er mars.

Floatpoint d'Emily Short a été le premier jeu Inform 7 à remporter la première place du concours de fiction interactive . les prix XYZZY 2006 pour le meilleur décor et les meilleurs PNJ. Rendition , de Nespresso (2007), est une expérience artistique politique sous la forme d'un jeu d'aventure textuel. Son approche de la tragédie a été discutée académiquement par l' Association for Computing Machinery et l'Université de Cambridge .

Plus d articles de Worldlex Wiki

Revenez a l index pour explorer davantage de pages sur l histoire, la science, la culture, la geographie et la societe en francais.

Explorer l index