Informer - Inform

Informer
Inform 7 IDE Icon.png
Auteur (s) original (s) Graham Nelson
Développeur (s) Graham Nelson
Version stable
7 6M62 / 24 décembre 2015  ( 24/12/2015 )
Système opérateur Microsoft Windows , Mac OS X , Linux , autres
Taper Développement et jeu de fiction interactifs
Site Internet http://inform7.com/

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 tout nouveau langage basé sur les principes du langage naturel et un nouvel ensemble d'outils basés sur une métaphore de l'édition de livres.

Z-Machine et Glulx

Les compilateurs Inform traduisent le code Inform en fichiers d'histoires pour Glulx ou Z-code , deux machines virtuelles spécialement conçues 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é initialement développée par Infocom en 1979 pour leurs titres de fiction interactifs. Comme il existe au moins un tel interpréteur pour presque toutes les plates-formes majeures et mineures, cela signifie que le même fichier de code Z peut être exécuté sur une multitude de plates-formes sans aucune modification. Initialement, Inform ciblait uniquement 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 Z-machine vieille de plusieurs décennies. À partir d'Inform 6.3, sorti le 29 février 2004, Inform 6 a inclus un support officiel pour les deux machines virtuelles, basé sur le travail d'Andrew Plotkin. La version précoce d'Inform 7 ne prenait pas en charge Glulx, mais en août 2006, la prise en charge de Glulx a été publiée.

Informer 6

Informer 1–6
Paradigme orienté objet , procédural
Conçu par Graham Nelson
Développeur Graham Nelson
Première apparition 1993
Version stable
6.32 / 2010
Version préliminaire
6.33 / 10 mai 2014  ( 10/05/2014 )
OS Microsoft Windows , Mac OS X , Linux , autres
Licence Freeware et licence artistique 2.0
Site Internet inform-fiction .org
Influencé par
langage naturel
Influencé
Informer 7

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 raisonnablement 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 travaux difficiles d' analyse de la saisie de texte du lecteur et de suivi des 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 la Z-Machine aient été conçus à l'origine avec la fiction interactive à l'esprit, de nombreux autres programmes ont été développés, notamment un interpréteur BASIC , un didacticiel LISP (complet avec interprète), un jeu Tetris et une version du jeu Snake .

Le compilateur Inform 6

Le compilateur Inform génère des fichiers pour la Z-machine 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. Puisque la relation parent-enfant est souvent utilisée pour représenter l'emplacement, on dit souvent qu'un objet qui est le parent d'un autre objet le "tient". Les objets peuvent être déplacés dans l'arborescence. En règle générale, 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, de sorte qu'un livingroom objet peut contenir insurancesaleman un briefcase objet qui contient un objet qui contient l' insurancepaperwork objet.

Dans les premières versions d'Inform, les objets étaient différents de la notion d'objets de la programmation orientée objet, en ce sens qu'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 l'objet "métaclasse". Cependant, les objets ont très souvent des attributs (propriétés booléennes, telles que scenery ou edible ) qui sont reconnus par la bibliothèque Inform. Dans d'autres langues, cela serait normalement implémenté par héritage.

Voici un exemple simple de code source Inform 6.

[ Main;
    print "Hello, World!^";
];

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 à l'entrée du joueur et un modèle du monde qui garde une trace de choses telles 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.

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

 Constant Story "Hello Deductible";
 Constant Headline "^An Interactive Example^";

 Include "Parser";
 Include "VerbLib";

 [ Initialise;
     location = Living_Room;
     "Hello World";
 ];

 Object Kitchen "Kitchen";
 Object Front_Door "Front Door";

 Object Living_Room "Living Room"
     with
         description "A comfortably furnished living room.",
         n_to Kitchen,
         s_to Front_Door,
     has light;

 Object -> Salesman "insurance salesman"
     with
         name 'insurance' 'salesman' 'man',
         description "An insurance salesman in a tacky polyester
               suit.  He seems eager to speak to you.",
         before [;
             Listen:
                 move Insurance_Paperwork to player;
                 "The salesman bores you with a discussion
                  of life insurance policies.  From his
                  briefcase he pulls some paperwork which he
                  hands to you.";
         ],
     has animate;

 Object -> -> Briefcase "briefcase"
     with
         name 'briefcase' 'case',
         description "A slightly worn, black briefcase.",
     has container;

 Object -> -> -> Insurance_Paperwork "insurance paperwork"
     with
         name 'paperwork' 'papers' 'insurance' 'documents' 'forms',
         description "Page after page of small legalese.";

 Include "Grammar";

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

Informer 7

Informer 7
Inform 7 IDE Icon.png
Paradigme déclarative , procédurale
Conçu par Graham Nelson
Développeur Graham Nelson
Première apparition 2006
Version stable
6M62 / 24 décembre 2015 ; il y a 5 ans  ( 24/12/2015 )
OS Microsoft Windows , Mac OS X , Linux , autres
Licence Licence propriétaire mais librement redistribuable ou licence artistique 2.0
Site Internet http://inform7.com/
Influencé par
Informer 6

Le 30 avril 2006, Graham Nelson a annoncé la sortie bêta d'Inform 7 sur le newsgroup rec.arts.int-fiction. Inform 7 se compose de trois parties principales: l' EDI 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 « Les règles standard » 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 utilise également par défaut l'écriture de fichiers Blorb , des archives qui incluent le code Z avec des "couvertures" facultatives 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 . La version du 25 mars 2007 a ajouté la prise en charge de la ligne de commande pour Linux , et les nouvelles versions incluent désormais un IDE utilisant l' environnement de bureau GNOME sous le projet GNOME Inform 7 SourceForge . Le langage et les outils restent en cours de développement; la version du 25 mars 2007 comprenait un certain nombre de modifications de la langue. En 2019, Graham Nelson a annoncé l'éventuel open sourcing d'Inform 7.

Inform 7 a été nommé Natural Inform pendant une brève période, mais a ensuite été renommé Inform 7. Cet ancien nom explique pourquoi le compilateur Inform 7 s'appelle «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 fourni 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'EDI Linux (connu sous le nom de GNOME Inform) a été développé par Philip Chimento.

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

L'EDI 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 Microsoft Windows IDE est basé sur WinFrotz .

Lorsqu'un développeur teste le jeu dans l'interpréteur intégré, la progression est suivie dans les vues "écheveau" et "transcription" de l'EDI. L'écheveau suit les commandes du lecteur sous la forme d'un arbre de possibilités de branchement. N'importe quelle branche de l'arbre peut être rapidement ré-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, quant à elle, suit à la fois les commandes des joueurs 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 de la version bénie seront mises en évidence, ce qui peut aider le développeur à trouver des erreurs.

L'IDE fournit également divers indices dans 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 semblable à un livre et sous d'autres formes. Le fait de cliquer sur des éléments dans l'index permet d'accéder au code source pertinent.

L'EDI présente deux volets côte à côte pour travailler. Chaque volet peut contenir le code source en cours de traitement, 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 toute extension installée de celui-ci, ou les paramètres. Le concept est d'imiter le livre manuscrit d'un auteur en présentant deux "pages en regard" au lieu d'une multitude de fenêtres séparées.

Langage de programmation Inform 7

Les caractéristiques notables incluent un fort biais en faveur d'un style de programmation déclaratif basé sur des règles et la capacité à déduire des types et des propriétés d'objets à partir de la façon dont ils sont utilisés. Par exemple, la déclaration «Jean porte un chapeau». crée une «personne» appelée «Jean» (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 «portable» peuvent être portés), et définit John comme porter le chapeau.

Un autre aspect notable du langage est la prise en charge directe des relations qui suivent les associations entre les objets. Cela inclut les relations fournies automatiquement, comme un objet en 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 les êtres, ou pour savoir quels personnages d'un jeu se sont rencontrés.

Inform 7 est un langage de programmation hautement spécifique au domaine , fournissant à l'écrivain / programmeur un niveau d'abstraction beaucoup plus élevé qu'Inform 6 et un code source résultant hautement lisible.

Exemple de jeu

Les déclarations dans Inform 7 prennent la forme de phrases complètes. Les lignes vides et les indentations sont à certains endroits structurellement significatives. La forme de base d'un programme Inform 7 est la suivante:

"Hello, World!" by "I.F. Author"

The world is a room.

When play begins, say "Hello, World!"

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

"Hello Deductible" by "I.F. Author"

The story headline is "An Interactive Example".

The Living Room is a room. "A comfortably furnished living room."
The Kitchen is north of the Living Room.
The Front Door is south of the Living Room.
The Front Door is a door. The Front Door is closed and locked.

The insurance salesman is a man in the Living Room. The description is "An insurance salesman in a tacky polyester suit. He seems eager to speak to you." Understand "man" as the insurance salesman.

A briefcase is carried by the insurance salesman. The description is "A slightly worn, black briefcase."  Understand "case" as the briefcase.

The insurance paperwork is in the briefcase. The description is "Page after page of small legalese." Understand "papers" or "documents" or "forms" as the paperwork.

Instead of listening to the insurance salesman: 
	say "The salesman bores you with a discussion of life insurance policies. From his briefcase he pulls some paperwork which he hands to you.";
	move the insurance paperwork to the player.

Jeux notables écrits dans Inform 7

Mystery House Possessed (2005), d' Emily Short , a été le premier jeu Inform 7 publié pour être public. Il est sorti 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 casse-tête) et Damnatio Memoriae (suite à son jeu primé Inform 6 Savoir-Faire ) ont été rejoints par Graham Nelson, The Reliques of Tolti-Aph (2006). Lorsque la version 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 à prendre la première place du concours de fiction interactive . Il a également remporté les prix XYZZY 2006 du meilleur décor et des meilleurs PNJ. Rendition , de nespresso (2007), est une expérience d'art politique sous la forme d'un jeu d'aventure textuel. Son approche de la tragédie a fait l'objet de discussions académiques à la fois par l' Association for Computing Machinery et l'Université de Cambridge .

Voir également

Lectures complémentaires

Informer 6
  • Le manuel officiel de INFORM est Graham Nelson de Inform Manuel Designer : il est un tutoriel, un manuel et un document technique en un. Il est disponible en ligne gratuitement sur le site officiel d'Inform, et deux éditions imprimées sont disponibles: une couverture souple ( ISBN   0-9713119-0-0 ) et une couverture rigide ( ISBN   0-9713119-3-5 ).
  • Le Guide du débutant d'Inform par Roger Firth et Sonja Kesserich ( ISBN   0-9713119-2-7 ) tente de fournir une introduction plus douce à Inform. Il est disponible gratuitement sur le site officiel d'Inform.
Informer 7
  • L'interview SPAG - Une interview avec les designers Graham Nelson et Emily Short sur le développement d'Inform 7. Cette interview a été réalisée peu de temps avant sa sortie et publiée le même jour que la sortie initiale.
  • "Langage naturel, analyse sémantique et fiction interactive" - ​​Un article sur la conception d'Inform 7 par le designer Graham Nelson .

Les références

Liens externes

  • Cloak of Darkness: Inform présente le même jeu court implémenté à la fois dans Inform 6 et Inform 7, ainsi que dans d'autres langues à des fins de comparaison.
  • Inform 6 - Site Web officiel
  • La FAQ Inform 6 sur les pages IF de Roger Firth fournit des détails sur la programmation dans Inform 6.
  • Inform 7 - Site Web officiel.
  • Informer chez Curlie
  • Les archives interactives de fiction fournissent de nombreux outils Inform, des exemples et des fichiers de bibliothèque.
  • Playfic est une interface Web permettant de créer et de partager de nouveaux jeux à l'aide d'Inform 7.
  • Guncho est un système de fiction interactif multijoueur basé sur Inform 7 avec une combinaison d' interfaces de type MUD et Web.