Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Inform
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== Inform 7 == {{Infobox programming language | name = Inform 7 | logo = [[File:Inform 7 IDE Icon.png]]<!-- FAIR USE: Low resolution icon for program, for identification purposes. --> | paradigm = [[Natural-language programming|natural-language]], [[Declarative programming|declarative]], [[Procedural programming|procedural]] | year = 2006 | designer = [[Graham Nelson]] | developer = [[Graham Nelson]] | latest release version = 10.1.2 | latest release date = {{start date|2022|08|31}}<ref>{{cite web | url = https://github.com/ganelson/inform/blob/master/notes/release/10-1-0.md | title = Release notes for Inform v10.1.0 and v10.1.1 | access-date = 2022-08-26 | publisher = github.com }}</ref> | latest_test_version = | latest_test_date = | typing = | implementations = | dialects = | influenced_by = Inform 6, [[Natural-language programming]] | influenced = | operating_system = [[Microsoft Windows]], [[macOS|Mac OS X]], [[Linux]], others | license = [[Freeware]] (before 2022); [[Artistic License]] 2.0 (since 2022) | website = http://inform7.com/ }} On April 30, 2006, Graham Nelson announced the beta release of Inform 7 to the rec.arts.int-fiction newsgroup.<ref name="raif">{{cite newsgroup | title = Inform 7: Public Beta | author = Graham Nelson | date = 2006-04-30 | newsgroup = rec.arts.int-fiction | message-id = 1146419288.944486.157150@i39g2000cwa.googlegroups.com | url = https://groups.google.com/group/rec.arts.int-fiction/msg/17791dfefeec46e0 | access-date = 2007-01-04 }}</ref> Inform 7 consists of three primary parts: The '''Inform 7 [[Integrated development environment|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-machine|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 [[macOS|Mac OS X]], [[Microsoft Windows]] and [[Linux]] (since 2007). {{As of|2023}}, Inform 7 and its and tools remain under development.<ref name="jan07short">{{cite newsgroup |title = Inform 7: Possible future developments |author = Emily Short |date = 2007-02-18 |newsgroup = rec.arts.int-fiction |message-id = 1169164007.311210.64650@a75g2000cwd.googlegroups.com |url = https://groups.google.com/group/rec.arts.int-fiction/msg/980b5a84e8dfc29b |access-date = 2007-03-30 }} Also archived at {{cite web |url = http://www.inform-fiction.org/I7Downloads/Documents/January2007Document.txt |title = Inform 7: Possible future developments |date = January 2007 |last = Short |first = Emily |author2 = Graham Nelson |author2-link = Graham Nelson |author-link = Emily Short |access-date = March 31, 2007 |archive-url = https://web.archive.org/web/20080905103637/http://www.inform-fiction.org/I7Downloads/Documents/January2007Document.txt |archive-date = September 5, 2008 |url-status = dead }}</ref> Since April 2022, Inform 7 is open source and developed on [[GitHub]].<ref>{{cite web |last1=Nelson |first1=Graham |title=Inform 7 Version History |website=[[GitHub]] |url=https://github.com/ganelson/inform/blob/master/notes/version_history.md |date=13 January 2023}}</ref> 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".<ref name="whyni">{{cite newsgroup | title = Re: "Inform 7" is the wrong name | author = Graham Nelson | date = 2007-03-30 | newsgroup = rec.arts.int-fiction | message-id = 1175250734.801804.199340@y80g2000hsf.googlegroups.com | url = https://groups.google.com/group/rec.arts.int-fiction/msg/b0424047b4038cd9 | access-date = 2007-03-30 }}</ref> === Inform 7 IDE === [[File:Inform 7 code and skein.png|right|thumb|The Inform 7 IDE on [[macOS|Mac OS X]] showing source code and the skein]]<!-- FAIR USE: Screenshot of the software in question for identification and illustration. Furthemore, software in question is under GPL, while screenshot itself is released under public domain. --> [[File:Inform 7 map and transcript.png|right|thumb|The Inform 7 IDE on Mac OS X showing the Index Map and the transcript]]<!-- FAIR USE: Screenshot of the software in question for identification and illustration. Furthemore, software in question is under GPL, while screenshot itself is released under public domain. --> 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.<ref name="gnomei7">{{cite web | url = http://sourceforge.net/projects/gnome-inform7/ | title = GNOME Inform 7 SourceForge project page | date = February 2008 }} – Now moved to GitHub at {{cite web |last1=Chimento |first1=Philip |title=ptomato/inform7-ide |website=[[GitHub]] |url=https://github.com/ptomato/inform7-ide |date=27 December 2022}}</ref> 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-machine|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|date=April 2008}} 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.<ref name="raif" /> === 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'').<ref>{{cite web |title=10.1. Gases |url=https://ganelson.github.io/inform-website/book/RB_10_1.html |website=ganelson.github.io}}</ref> In early Inform 7, the compiler translates the code to Inform 6, much like [[CFront]] did with C++ and C.<ref name="whyni"/> The current compiler (as of version 10 of 2022) is additionally able to translate the code directly to C for a native executable,{{dubious|reason=Source is vague. It *feels* more like a inweb "literary programming" situation if you look at the "foundation" code which uses it.|date=January 2023}} and to generate an "index mini-website" describing the story.<ref>{{cite web |title=Structure of the Inform 7 compiler |url=https://ganelson.github.io/inform/structure.html |website=ganelson.github.io}}</ref> === 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: <syntaxhighlight lang="inform7" style="background-color:#F9F9F9; line-height:1.1em; "> "Hello, World!" by "I.F. Author" The world is a room. When play begins, say "Hello, World!" </syntaxhighlight> 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. <syntaxhighlight lang="inform7" style="background-color:#F9F9F9; line-height:1.1em; "> "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. </syntaxhighlight> === Notable games written in Inform 7 === ''Mystery House Possessed'' (2005), by [[Emily Short]],<ref name="turbulence">{{cite web | url = http://www.turbulence.org/Works/mystery/games.php | title = Mystery House Taken Over | access-date = 2007-01-04 | archive-date = May 4, 2006 | archive-url = https://web.archive.org/web/20060504184514/http://turbulence.org/Works/mystery/games.php | url-status = dead }}</ref> 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:<ref name="raif-games">{{cite newsgroup | title = Three games in Inform 7 | author = Emily Short (at the request of Graham Nelson) | date = 2006-03-01 | newsgroup = rec.games.int-fiction | message-id = 1141259182.610660.185360@p10g2000cwp.googlegroups.com | url = https://groups.google.com/group/rec.games.int-fiction/msg/354c7965c0dea5d6 | access-date = 2007-01-04 }}</ref> ''Bronze''<ref name="bronze">{{cite web | url = http://ifdb.tads.org/viewgame?id=9p8kh3im2j9h2881 | title = Bronze | access-date = 2007-01-04 | year = 2006 | last = Short | first = Emily }}</ref> (an example of a traditional puzzle-intensive game) and ''Damnatio Memoriae''<ref name="damn">{{cite web | url = http://ifdb.tads.org/viewgame?id=2103dabhxzxsraal | title = Damnatio Memoriae | access-date = 2007-01-04 | year = 2006 | last = Short | first = Emily }}</ref> (a follow-up to her award-winning Inform 6 game ''[[Savoir-Faire]]'') were joined by Graham Nelson's ''The Reliques of Tolti-Aph''<ref name="reliques">{{cite web | url = http://ifdb.tads.org/viewgame?id=nnhm4yp172oivtd9 | title = The Reliques of Tolti-Aph | access-date = 2007-01-04 | year = 2005 | last = Nelson | first = Graham }}</ref> (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.<ref name="bronze-ex">{{cite web |url = http://inform-fiction.org/I7Downloads/Examples/bronze/ |title = Bronze |access-date = 2007-01-04 |year = 2006 |last = Short |first = Emily |url-status = dead |archive-url = https://web.archive.org/web/20070210003932/http://inform-fiction.org/I7Downloads/Examples/bronze/ |archive-date = February 10, 2007 |df = mdy-all }}</ref><ref name="damn-ex">{{cite web |url = http://inform-fiction.org/I7Downloads/Examples/dm/ |title = Damnatio Memoriae |access-date = 2007-01-04 |year = 2006 |last = Short |first = Emily |url-status = dead |archive-url = https://web.archive.org/web/20061212185900/http://inform-fiction.org/I7Downloads/Examples/dm/ |archive-date = December 12, 2006 |df = mdy-all }}</ref><ref name="reliques-ex">{{cite web |url = http://www.inform-fiction.org/I7Downloads/Examples/rota/ |title = The Reliques of Tolti-Aph |access-date = 2007-01-04 |year = 2005 |last = Nelson |first = Graham |url-status = dead |archive-url = https://web.archive.org/web/20070206202522/http://inform-fiction.org/I7Downloads/Examples/rota/ |archive-date = February 6, 2007 |df = mdy-all }}</ref> Emily Short's ''[[Floatpoint]]'' was the first Inform 7 game to take first place in the [[Interactive Fiction Competition]].<ref>{{cite web | url = http://www.ifcomp.org/comp06/ | title = 12th Annual Interactive Fiction Competition | access-date = 2007-05-12 | year = 2006 }}</ref> It also won 2006 [[XYZZY Award]]s for Best Setting and Best NPCs.<ref>{{cite web |url=http://www.xyzzynews.com/2006winners.html |title=XYZZY Awards: Winning Games of 2006 |access-date=2007-05-12 |url-status=dead |archive-url=https://web.archive.org/web/20070515062751/http://www.xyzzynews.com/2006winners.html |archive-date=May 15, 2007 |df=mdy-all }}</ref> ''[[Rendition (text adventure game)|Rendition]]'', by nespresso (2007), is a [[experimental literature|political art experiment]] in the form of a text adventure game. Its approach to [[tragedy]] has been discussed academically by both the [[Association for Computing Machinery]]<ref>{{cite web | url = http://www.natematias.com/cam/trag-elit/Emily-Short-Tragedy.pdf | title = ACM Hypertext 2007 conference slides (PDF) }}</ref> and [[Cambridge University]].<ref>{{cite web | url = http://www.natematias.com/cam/trag-elit/TragPresentation.html | title = Cambridge University lecture slides }}</ref>{{bsn|reason=This is a Flash file. Modern browsers can't cope with Flash. Also this citation is inadequate: who exactly at the university? What was the title?|date=December 2024}}
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)