Inform is a programming language and design system for interactive fiction originally created in 1993 by Graham Nelson. Inform can generate programs designed for the Z-code or Glulx virtual machines. Versions 1 through 5 were released between 1993 and 1996. Around 1996, Nelson rewrote Inform from first principles to create version 6 (or Inform 6).[3] Over the following decade, version 6 became reasonably stable and a popular language for writing interactive fiction. In 2006, Nelson released Inform 7 (briefly known as Natural Inform), a completely new language based on principles of natural language and a new set of tools based around a book-publishing metaphor.
Z-Machine and Glulx
The Inform compilers translate Inform code to story files for Glulx or Z-code, two virtual machines designed specifically for interactive fiction. Glulx, which can support larger games, is the default.
The Z-machine was originally developed by Infocom in 1979 for their interactive fiction titles. Because there is at least one such interpreter for nearly every major and minor platform, this means that the same Z-code file can be run on a multitude of platforms with no alterations. Originally Inform targeted the Z-machine only.
Andrew Plotkin created an unofficial version of Inform 6 that was also capable of generating files for Glulx, a virtual machine he had designed to overcome many of the limitations of the several-decades-old Z-machine. Starting with Inform 6.3, released February 29, 2004, Inform 6 has included official support for both virtual machines, based on Andrew Plotkin's work. Early release of Inform 7 did not support Glulx, but in August 2006 Glulx support was released.
Inform was originally created by Graham Nelson in 1993. In 1996 Nelson rewrote Inform from first principles to create version 6 (or Inform 6). Over the following decade, version 6 became reasonably stable and a popular language for writing interactive fiction.
The Inform 6 system consists of two major components: the Inform compiler, which generates story files from Inform source code, and the Inform library, a suite of software which handles most of the difficult work of parsing the player's text input and keeping track of the world model. The name Inform also refers to the Inform programming language that the compiler understands.
Although Inform 6 and the Z-Machine were originally designed with interactive fiction in mind, many other programs have been developed, including a BASIC interpreter, a LISP tutorial (complete with interpreter), a Tetris game, and a version of the game Snake.
The Inform programming language is object-oriented and procedural. A key element of the language is objects. Objects are maintained in an object tree which lists the parent–child relationships between objects. Since the parent–child relationship is often used to represent location, an object which is the parent of another object is often said to "hold" it. Objects can be moved throughout the tree. Typically, top level objects represent rooms and other locations within the game, which may hold objects representing the room's contents, be they physical items, non-player characters, the player's character, or background effects. All objects can hold other objects, so a livingroom object might hold an insurancesaleman object which is holding a briefcase object which contains the insurancepaperwork object.
In early versions of Inform, objects were different from the notion of objects from object-oriented programming, in that there was no such thing as a class. Later versions added support for class definitions and allowed objects to be members of classes. Objects and classes can inherit from multiple classes. Interactive fiction games typically contain many unique objects. Because of this, many objects in Inform do not inherit from any class, other than the "metaclass" Object. However, objects very frequently have attributes (boolean properties, such as scenery or edible) that are recognized by the Inform library. In other languages this would normally be implemented via inheritance.
Here is a simple example of Inform 6 source code.
! Square brackets define a routine. This is the Main routine, which takes no arguments.[Main;print"Hello, World!^";];
The procedual parts, statements and operators, are largely borrowed from C, with the notable exception that -->x instead of [x] is used to take array subscripts. Routines are defined in square brackets, as in the Main routine above,[5] but called with round brackets as in C. The character @ is used to escape characters and to invoke raw Z-machine opcodes.[6]
Inform 6 library
The Inform system also contains the Inform library, which automates nearly all the most difficult work involved in programming interactive fiction; specifically, it includes a text parser that makes sense of the player's input, and a world model that keeps track of such things as objects (and their properties), rooms, doors, the player's inventory, etc.
The Inform compiler does not require the use of the Inform library. There are several replacement libraries available, such as Platypus[7] and InformATE, a library that codes Inform in Spanish. Some games may use no library at all, such as a direct port of Zork into Inform 6.[5]
Example game
This section is missing information about C-like logic parts. Please expand the section to include this information. Further details may exist on the talk page.(January 2023)
Here is an example of Inform 6 source code that makes use of the Inform library. The Inform 6 code sample below is usable in Inform 7, but not without special demarcation indicating that it is embedded legacy code.
ConstantStory"Hello Deductible";ConstantHeadline"^An Interactive Example^";Include"Parser";Include"VerbLib";[Initialise;location=Living_Room;"Hello World";];ObjectKitchen"Kitchen";ObjectFront_Door"Front Door";ObjectLiving_Room"Living Room"withdescription"A comfortably furnished living room.",n_toKitchen,s_toFront_Door,haslight;Object->Salesman"insurance salesman"withname'insurance''salesman''man',description"An insurance salesman in a tacky polyester suit. He seems eager to speak to you.",before[;Listen:moveInsurance_Paperworktoplayer;"The salesman bores you with a discussion of life insurance policies. From his briefcase he pulls some paperwork which he hands to you.";],hasanimate;Object->->Briefcase"briefcase"withname'briefcase''case',description"A slightly worn, black briefcase.",hascontainer;Object->->->Insurance_Paperwork"insurance paperwork"withname'paperwork''papers''insurance''documents''forms',description"Page after page of small legalese.";Include"Grammar";
Notable games developed in Inform 6 or earlier versions
Curses, by Graham Nelson (1993), the first game ever written in the Inform programming language. Considered one of the first "modern" games to meet the high standards set by Infocom's best titles.[8]
Varicella by Adam Cadre (1999). It won four XYZZY Awards in 1999 including the XYZZY Award for Best Game, and had a scholarly essay written about it.[10]
Galatea, by Emily Short (2000). Galatea is focused entirely on interaction with the animated statue of the same name. Galatea has one of the most complex interaction systems for a non-player character in an interactive fiction game. Adam Cadre called Galatea "the best NPC ever".[11]
Slouching Towards Bedlam, by Star C. Foster and Daniel Ravipinto (2003). Set in a steampunk setting, the game narratively integrates meta-game functionality (saving, restoring, restarting) into the game world itself. The game won two XYZZY Awards and received the highest average score of any game in the Interactive Fiction Competition as of 2006.
On April 30, 2006, Graham Nelson announced the beta release of Inform 7 to the rec.arts.int-fiction newsgroup.[13] Inform 7 consists of three primary parts: The Inform 7 IDE with development tools specialized for testing interactive fiction, the Inform 7 compiler for the new language, and "The Standard Rules" which form the core library for Inform 7. Inform 7 also relies on the Inform library and Inform compiler from Inform 6. The compiler compiles the Inform 7 source code into Inform 6 source code, which is then compiled separately by Inform 6 to generate a Glulx or Z-code story file. Inform 7 also defaults to writing Blorb files, archives which include the Z-code together with optional "cover art" and metadata intended for indexing purposes. The full set of Inform 7 tools are currently available for Mac OS X, Microsoft Windows and Linux (since 2007).
As of 2023[update], Inform 7 and its and tools remain under development.[14] Since April 2022, Inform 7 is open source and developed on GitHub.[15]
Inform 7 was named Natural Inform for a brief period of time, but was later renamed Inform 7. This old name is why the Inform 7 compiler is named "NI".[16]
Inform 7 IDE
Inform 7 comes with an integrated development environment (IDE) for Mac OS X, Microsoft Windows and Linux. The Mac OS X IDE was developed by Andrew Hunter. The Microsoft Windows IDE was developed by David Kinder. The Linux IDE (known as GNOME Inform) was developed by Philip Chimento.[17]
The Inform 7 IDE includes a text editor for editing Inform 7 source code. Like many other programming editors it features syntax highlighting. It marks quoted strings in one color. Headings of organizational sections (Volumes, Books, Chapters, Parts, and Sections) are bolded and made larger. Comments are set in a different color and made slightly smaller.
The IDE includes a built-in Z-code interpreter. The Mac OS X IDE's interpreter is based on the Zoom interpreter by Andrew Hunter, with contributions from Jesse McGrew.[citation needed] The Microsoft Windows IDE's interpreter is based on WinFrotz.
As a developer tests the game in the built-in interpreter, progress is tracked in the "skein" and "transcript" views of the IDE. The skein tracks player commands as a tree of branching possibilities. Any branch of the tree can be quickly re-followed, making it possible to retry different paths in a game under development without replaying the same portions of the game. Paths can also be annotated with notes and marked as solutions, which can be exported as text walkthroughs. The transcript, on the other hand, tracks both player commands and the game's responses. Correct responses from the game can be marked as "blessed". On replaying a transcript or a branch of the skein, variations from the blessed version will be highlighted, which can help the developer find errors.
The IDE also provides various indices into the program under development. The code is shown as a class hierarchy, a traditional IF map, a book-like table of contents, and in other forms. Clicking items in the index jumps to the relevant source code.
The IDE presents two side-by-side panes for working in. Each pane can contain the source code being worked on, the current status of compilation, the skein, the transcript, the indices of the source code, a running version of the game, documentation for Inform 7 or any installed extensions to it, or settings. The concept is to imitate an author's manuscript book by presenting two "facing pages" instead of a multitude of separate windows.[13]
Inform 7 programming language
Notable features include strong bias towards declarative rule-based style of programming and ability to infer types and properties of objects from the way they are used. For example, the statement "John wears a hat." creates a "person" called "John" (since only people are capable of wearing things), creates a "thing" with the "wearable" property (since only objects marked "wearable" are capable of being worn), and sets John as wearing the hat.
Another notable aspect of the language is direct support for relations which track associations between objects. This includes automatically provided relations, like one object containing another or an object being worn, but the developer can add their own relations. A developer might add relations indicating love or hatred between beings, or to track which characters in a game have met each other.
Inform 7 is a highly domain-specific programming language, providing the writer/programmer with a much higher level of abstraction than Inform 6, and highly readable resulting source code. General-purpose logical and arithmetic statements are written in natural language (see e.g. the "Physics" example in The Inform Recipe Book).[18]
In early Inform 7, the compiler translates the code to Inform 6, much like CFront did with C++ and C.[16] The current compiler (as of version 10 of 2022) is additionally able to translate the code directly to C for a native executable,[dubious – discuss] and to generate an "index mini-website" describing the story.[19]
Example game
Statements in Inform 7 take the form of complete sentences. Blank lines and indentation are in some places structurally significant. The basic form of an Inform 7 program is as follows:
"Hello, World!" by "I.F. Author"
The world is a room.
When play begins, say "Hello, World!"
The following is a reimplementation of the above "Hello Deductible" example written in Inform 7. It relies on the library known as "The Standard Rules" which are automatically included in all Inform 7 compilations.
"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.
Notable games written in Inform 7
Mystery House Possessed (2005), by Emily Short,[20] was the first Inform 7 game released to be public. It was released as part of the "Mystery House Taken Over" project.
On March 1, 2006, Short announced the release of three further games:[21]Bronze[22] (an example of a traditional puzzle-intensive game) and Damnatio Memoriae[23] (a follow-up to her award-winning Inform 6 game Savoir-Faire) were joined by Graham Nelson's The Reliques of Tolti-Aph[24] (2006). When the Inform 7 public beta was announced on April 30, 2006, six "worked examples" of medium to large scale works were made available along with their source code, including the three games previously released on March 1.[25][26][27]
TADS The Text Adventure Development System (TADS), another leading IF development system
Further reading
Inform 6
The official manual of Inform is Graham Nelson's Inform Designer's Manual: it is a tutorial, a manual, and a technical document rolled into one. It is available online for free at Inform's official website,[32] and two printed editions are available: a softcover (ISBN0-9713119-0-0) and a hardcover (ISBN0-9713119-3-5).[33]
The Inform Beginner's Guide by Roger Firth and Sonja Kesserich (ISBN0-9713119-2-7) attempts to provide a more gentle introduction to Inform. It is available for free at Inform's official website.[34]
Inform 7
The SPAG Interview - An interview with designers Graham Nelson and Emily Short about the development of Inform 7. This interview was made shortly before its release and published on the same day as the initial release.[3]
"Natural Language, Semantic Analysis and Interactive Fiction" - A paper on the design of Inform 7 by designer Graham Nelson.[35]
^Of the 1219 games rated at "Interactive Fiction Ratings", Anchorhead was the highest rated game as of January 4, 2007. ("IF Rating Stats". Archived from the original on May 11, 2008. Retrieved January 4, 2007.)
Antoon Arnold Frederik Lanzing Antoon Arnold Fredrik Lanzing (Boxmeer, 12 September 1834 - Breda, 1917) adalah mayor jenderal Belanda yang dianugerahi gelar ksatria dalam Militaire Willems-Orde. Karier Lanzing mengikuti pendidikan militer dan pada tahun 1860 diangkat sebagai letnan satu di Batalyon III Resimen Infanteri II di garnisun Vlissingen. Pada tahun yang sama, ia dialihfungsikan sebagai ajudan di Batalyon II Resimen II di Middelburg. Antara bulan Maret 1867-1872, ia dilepaskan ke Koni...
Artikel ini sebatang kara, artinya tidak ada artikel lain yang memiliki pranala balik ke halaman ini.Bantulah menambah pranala ke artikel ini dari artikel yang berhubungan atau coba peralatan pencari pranala.Tag ini diberikan pada April 2017. Jun UrunoInformasi pribadiNama lengkap Jun UrunoTanggal lahir 23 Oktober 1979 (umur 44)Tempat lahir Prefektur Saitama, JepangPosisi bermain PenyerangKarier senior*Tahun Tim Tampil (Gol)1998-2005 Honda 2006-2008 Ventforet Kofu 2009-2011 Roasso Kumamo...
Roger D. KornbergLahirRoger David Kornberg24 April 1947 (umur 76)St. Louis, Missouri, United StatesTempat tinggalUnited StatesKebangsaanUnited StatesAlmamaterHarvard University (undergraduate),Stanford University (PhD)Dikenal atasperubahan genetika dari DNA menjadi RNAPenghargaanHadiah Nobel dalam Kimia (2006), Penghargaan Louisa Gross Horwitz (2006), Gairdner Foundation International Award (2000), Penghargaan Harvey (1997)Karier ilmiahBidangStructural biologyInstitusiStanford Universit...
Luffa Buah gambas (oyong) Klasifikasi ilmiah Kerajaan: Plantae (tanpa takson): Angiospermae (tanpa takson): Eudikotil (tanpa takson): Rosidae Ordo: Cucurbitales Famili: Cucurbitaceae Genus: Luffa Species Luffa acutangula (Gambas atau oyong) Luffa aegyptiaca (blustru) Luffa operculata dan lain-lain Luffa aegyptiaca Luffa adalah salah satu genus liana tropis dan subtropis dalam famili labu-labuan atau Cucurbitaceae. Anggota marga ini paling tidak ada dua yang dikenal: L. acutangula (gambas) da...
Purdue Boilermakers softballFounded1994UniversityPurdue UniversityHead coachMagali Frezzotti (1st season)ConferenceBig TenLocationWest Lafayette, INHome stadiumBittinger Stadium (Capacity: 1000)NicknameBoilermakersColorsOld gold and black[1] NCAA Tournament appearances2008, 2009 The Purdue Boilermakers softball team represents Purdue University in NCAA Division I college softball. The team participates in the Big Ten Conference. The Boilermakers are cur...
Cet article est une ébauche concernant une localité italienne et la Lombardie. Vous pouvez partager vos connaissances en l’améliorant (comment ?) selon les recommandations des projets correspondants. Suzzara Administration Pays Italie Région Lombardie Province Mantoue Code postal 46029 Code ISTAT 020065 Code cadastral L020 Préfixe tel. 0376 Démographie Population 20 648 hab. (31-12-2010[1]) Densité 344 hab./km2 Géographie Coordonnées 45° 00′...
19th and 20th-century Anglican priest, scholar, and missionary The ReverendArthur LloydMissionaryPersonal detailsBorn(1852-04-10)April 10, 1852Simla, British IndiaDied27 October 1911(1911-10-27) (aged 59)Tokyo, Japan Arthur Lloyd (10 April 1852 – 27 October 1911) was a minister of the Church of England, fellow and Dean of Peterhouse, Cambridge, academic, translator, and biographer. He also served as an Anglican missionary to Japan. Background and early life Lloyd was born in Shiml...
Past cricket tournament Stanford 20/20Countries West IndiesFormatTwenty20First edition2006Latest edition2008Tournament formatKnockoutNumber of teams19 (2006), 21 (2008)Current champion Trinidad & TobagoQualificationStanford Super Series The Stanford 20/20 was a short-lived cricket tournament in the Caribbean island of Antigua. It was held first in July and August 2006 in the West Indies at the Stanford Cricket Ground, St. John's, Antigua and Barbuda, and then again in the same p...
Historic house in North Carolina, United States For the Georgian crescent England, see Somerset Place, Bath. United States historic placeSomerset Place State Historic SiteU.S. National Register of Historic Places Somerset PlaceShow map of North CarolinaShow map of the United StatesLocationPettigrew State Park, near Creswell, North CarolinaCoordinates35°47′16.84″N 76°24′18.38″W / 35.7880111°N 76.4051056°W / 35.7880111; -76.4051056Area7 acres (2.8 ha)Bui...
Physics Template‑class Physics portalThis template is within the scope of WikiProject Physics, a collaborative effort to improve the coverage of Physics on Wikipedia. If you would like to participate, please visit the project page, where you can join the discussion and see a list of open tasks.PhysicsWikipedia:WikiProject PhysicsTemplate:WikiProject Physicsphysics articlesTemplateThis template does not require a rating on Wikipedia's content assessment scale. Reason for box There are many s...
Questa voce o sezione sull'argomento Lombardia non è ancora formattata secondo gli standard. Contribuisci a migliorarla secondo le convenzioni di Wikipedia. Segui i suggerimenti del progetto di riferimento. GarbogeraStato Italia Regioni Lombardia Nascea Birago nei pressi di via Gerbino 45°39′47.87″N 9°05′27.63″E45°39′47.87″N, 9°05′27.63″E Sfociaa Milano nel Cavo Redefossi 45°26′18.9″N 9°13′36.72″E45°26′18.9″N, 9°13′36.72″E Modifica dati...
SMA Negeri 1 PekalonganSMA KartiniInformasiDidirikanMei 1949AkreditasiANomor Statistik Sekolah301036402001Nomor Pokok Sekolah Nasional20329517Kepala SekolahYulianto Nurul Furqon, M.Pd.Jumlah kelas27 kelas (21 MIA dan 6 IIS)Jurusan atau peminatanMIA dan IISRentang kelasX, XI, XIIKurikulumKurikulum 2013StatusnegeriAlamatLokasiJalan RA Kartini 39 RT 05/ RW 05, Keputran, Kecamatan Pekalongan Timur, Jawa Tengah, IndonesiaTel./Faks.(0285) 421190Situs webSitus Resmi SMA Negeri 1 Pekal...
Canadian politician This biography of a living person needs additional citations for verification. Please help by adding reliable sources. Contentious material about living persons that is unsourced or poorly sourced must be removed immediately from the article and its talk page, especially if potentially libelous.Find sources: Anita Neville – news · newspapers · books · scholar · JSTOR (November 2022) (Learn how and when to remove this message) Her Ho...
Research and Analysis BranchBranch overviewFormedJune 13, 1942; 82 years ago (1942-06-13)DissolvedOctober 1, 1945 (1945-10-01)Superseding agencyBureau of Intelligence and ResearchJurisdictionExecutive branch of the United StatesBranch executivesJames Phinney Baxter III, Director Research and AnalysisWilliam L. Langer, Director Research and AnalysisParent departmentDeputy Director Intelligence Service The Research and Analysis Branch (R&A) was a branch of t...
Voce principale: Football Club Internazionale Milano. FC Internazionale MilanoStagione 1977-1978Una formazione nella stagione 1977-1978 Sport calcio Squadra Inter Allenatore Eugenio Bersellini All. in seconda Armando Onesti Presidente Ivanoe Fraizzoli Serie A5º (in Coppa delle Coppe) Coppa ItaliaVincitore Coppa UEFAPrimo turno Maggiori presenzeCampionato: Bordon (30)[1][2]Totale: Marini (41) Miglior marcatoreCampionato: Altobelli (10)[1][2]Totale: Altobe...
Ini adalah nama Korea; marganya adalah Kim. Untuk kartunis, lihat Sanho Kim. Kim San-hoLahir12 Februari 1982 (umur 42)Cheonan, Provinsi Chungcheong Selatan, Korea SelatanPendidikanSeoul Institute of the Arts - Teater Korea Arts Institute - Akting MusikalPekerjaanAktorTahun aktif2003-sekarangAgenThe People Entertainment Nama KoreaHangul김산호 Alih AksaraGim San-hoMcCune–ReischauerKim San-ho Kim San-ho (lahir 12 Februari 1982) adalah aktor asal Korea Selatan. Kim paling dikenal d...
Landerneau Maisons à façade d'ardoise sur le pont de Rohan. Blason Administration Pays France Région Bretagne Département Finistère Arrondissement Brest Intercommunalité Communauté d'agglomération du pays de Landerneau-Daoulas(siège) Maire Mandat Patrick Leclerc 2020-2026 Code postal 29800 Code commune 29103 Démographie Gentilé Landernéens Populationmunicipale 16 206 hab. (2021 en évolution de +2,92 % par rapport à 2015) Densité 1 229 hab./km2 Géograp...
1536 uprising against Henry VIII in England Pilgrimage of GracePart of the European wars of religionA banner bearing the Holy Wounds of Jesus Christ, which was carried at the Pilgrimage of GraceDateOctober 1536 – February 1537LocationNorthern EnglandCaused byThe English Reformation, dissolution of the monasteries, rising food prices, and Statute of UsesGoalsThe reversal of the Act of Supremacy, restoration of Mary Tudor to the line of succession, and removal of Thomas CromwellResulted ...