1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-05-13 06:28:41 +03:00
(Mirror with no changes) The core software distribution for the Inform 7 programming language.
Go to file
2022-04-23 14:02:23 +01:00
docs Scanning directories in alphabetical order 2022-04-19 22:05:06 +01:00
docs-src Typos fixed 2022-04-19 11:16:03 +01:00
inblorb Using new-style gitignore scripts (again) 2022-04-23 14:02:23 +01:00
inbuild Using new-style gitignore scripts (again) 2022-04-23 14:02:23 +01:00
indoc Using new-style gitignore scripts (again) 2022-04-23 14:02:23 +01:00
inform6 Using new-style gitignore scripts (again) 2022-04-23 14:02:23 +01:00
inform7 Using new-style gitignore scripts (again) 2022-04-23 14:02:23 +01:00
inpolicy Using new-style gitignore scripts (again) 2022-04-23 14:02:23 +01:00
inrtps Using new-style gitignore scripts (again) 2022-04-23 14:02:23 +01:00
inter Using new-style gitignore scripts (again) 2022-04-23 14:02:23 +01:00
resources Renamed image to remove spurious space in filename 2022-04-19 12:15:22 +01:00
retrospective Further work on makefiles 2022-04-22 23:55:36 +01:00
scripts Using new-style gitignore scripts (again) 2022-04-23 14:02:23 +01:00
services Scanning directories in alphabetical order 2022-04-19 22:05:06 +01:00
.gitignore Changing clang settings to c11, not c99, for MacOS 2022-04-10 22:58:56 +01:00
build.txt Using new-style gitignore scripts 2022-04-23 14:01:04 +01:00
colony.txt Documented and rounded out some debugging features 2022-04-18 15:46:46 +01:00
README.md Using new-style gitignore scripts 2022-04-23 14:01:04 +01:00

Inform 7

v10.1.0-alpha.1+6U88 'Krypton' (23 April 2022)

About Inform 7

Inform 7 (April 2006-) is a programming language for creating interactive fiction, using natural language syntax. Using natural language and drawing on ideas from linguistics and from literate programming, Inform is widely used as a medium for literary writing, as a prototyping tool in the games industry, and in education, both at school and university level (where Inform is often assigned material for courses on digital narrative). It has several times ranked in the top 100 most influential programming languages according to the TIOBE index.

Disclaimer. Because this is a private repository (until the next public release of Inform, when it will open), its GitHub pages server cannot be enabled yet. As a result links marked ★ below lead only to raw HTML source, not to served web pages. They can in the mean time be browsed offline as static HTML files stored in "docs".

Licence

Except as noted, copyright in material in this repository (the "Package") is held by Graham Nelson (the "Author"), who retains copyright so that there is a single point of reference. As from the first date of this repository becoming public, the Package is placed under the Artistic License 2.0. This is a highly permissive licence, used by Perl among other notable projects, recognised by the Open Source Initiative as open and by the Free Software Foundation as free in both senses.

For the avoidance of doubt, the Author makes the further grant that users of the Package may make unlimited use of story files produced by the Package: such story files are not derivative works of Inform and do not inherit the Artistic License 2.0 as an obligation. (This further grant follows the practice of projects like bison, which also copy substantial code into their outputs.)

Repositories

This is the "core repository", holding source code for the compiler, and for everything needed to run it on the command line. However:

Build Instructions

Make a directory in which to work: let's call this "work". Then:

  • Change the current directory to "work": "cd work"
  • Build Inweb as "work/inweb": see its repository here
  • Build Intest as "work/intest": see its repository here
  • Clone Inform as "work/inform": "git clone https://github.com/ganelson/inform.git"
  • Change the current directory to this: "cd inform"
  • Run a first-build script: "bash scripts/first.sh"
  • Check executables have compiled: "inblorb/Tangled/inblorb -help"
  • Run a single test case: "../intest/Tangled/intest inform7 -show Acidity".

If that passes, probably all is well. The definitive test is "make check", which runs nearly 2000 cases through the executables, but takes 10 minutes on an 8-core desktop and half an hour on a 4-core laptop (which will sound something like a helicopter taking off).

Inventory

"I can't help feeling that if someone had asked me before the universe began how it would turn out, I should have guessed something a bit less like an old curiosity shop and a bit more like a formal French garden — an orderly arrangement of straight avenues, circular walks, and geometrically shaped trees and hedges." (Michael Frayn)

Inform is not a single program, but an assemblage of programs and resources. Some, including the inform7 compiler itself, are "literate programs", also called "webs". The notation ★ marks these, and links are provided to their human-readable forms. (This will be enabled when the repository becomes public: GitHub Pages does not work on private repositories.)

Resources for which this is the primary repository

This repository is where development is done on the following executables:

Two webs give detailed expositions of the most important built-in Inform extensions (at the subtree inform7/extensions):

This repository also contains kits of Inter code (at the subtree inform7/Internal/Inter). These are libraries of code needed at run-time, and whose source is written in Inform 6 notation:

  • BasicInformKit - Support for Inform as a programming language - ★ Web
  • WorldModelKit - Support for modelling space, time and actions in interactive fiction - ★ Web
  • EnglishLanguageKit - Support for English as the natural language used - ★ Web
  • CommandParserKit - Support for parsing turn-by-turn commands in interactive fiction - ★ Web
  • BasicInformExtrasKit - Additional support needed only if the Standard Rules are not used - ★ Web

The inform7 subtree further contains these primary resources:

  • inform7/Internal/Extensions - Libraries of code. Inform 7
    • inform7/Internal/Extensions/Emily Short/Basic Help Menu.i7x - ____
    • inform7/Internal/Extensions/Emily Short/Basic Screen Effects.i7x - 7/140425
    • inform7/Internal/Extensions/Emily Short/Complex Listing.i7x - 9
    • inform7/Internal/Extensions/Emily Short/Glulx Entry Points.i7x - 10/140425
    • inform7/Internal/Extensions/Emily Short/Glulx Image Centering.i7x - 4
    • inform7/Internal/Extensions/Emily Short/Glulx Text Effects.i7x - 5/140516
    • inform7/Internal/Extensions/Emily Short/Inanimate Listeners.i7x - ____
    • inform7/Internal/Extensions/Emily Short/Locksmith.i7x - 13
    • inform7/Internal/Extensions/Emily Short/Menus.i7x - 3
    • inform7/Internal/Extensions/Emily Short/Punctuation Removal.i7x - 5
    • inform7/Internal/Extensions/Emily Short/Skeleton Keys.i7x - ____
    • inform7/Internal/Extensions/Eric Eve/Epistemology.i7x - 9
    • inform7/Internal/Extensions/Graham Nelson/Approximate Metric Units.i7x - 1
    • inform7/Internal/Extensions/Graham Nelson/English Language.i7x - 1
    • inform7/Internal/Extensions/Graham Nelson/Metric Units.i7x - 2
    • inform7/Internal/Extensions/Graham Nelson/Rideable Vehicles.i7x - 3
    • inform7/Internal/Extensions/Graham Nelson/Unicode Character Names.i7x - ____
    • inform7/Internal/Extensions/Graham Nelson/Unicode Full Character Names.i7x - ____
  • inform7/Internal/HTML - Files needed for generating extension documentation and the like
  • inform7/Internal/Languages - Natural language definition bundles
  • inform7/Internal/Templates - Template websites for Inform 7's 'release as a website' feature
    • inform7/Internal/Templates/Classic - An older, plainer website - ____
    • inform7/Internal/Templates/Standard - The default, more modern look - ____

The "resources" directory holds a number of non-executable items of use to the Inform UI applications, and to Inform websites:

  • Changes to Inform - A detailed change history of Inform 7. Ebook in Indoc format, stored at path resources/Changes.
  • Writing with Inform and the Inform Recipe Book - The main Inform documentation, as seen in the apps, and in standalone Epubs. Ebook in Indoc format, stored at path resources/Documentation.
  • resources/Outcome Pages - Inrtps uses these to generate HTML outcome pages (such as those showing Problem messages in the app)
  • resources/Sample Projects - Two small interactive fictions, 'Disenchantment Bay' and 'Onyx', presented as samples in the app. Inform 7

Finally, the "retrospective" directory holds ANSI C source and resources needed to build (some) previous versions of Inform 7.

Resources copied here from elsewhere

Stable versions of the following are periodically copied into this repository, but this is not where development on them is done, and no pull requests will be accepted. (Note that these are not git submodules.)

Binary resources (such as image files)

  • resources/Imagery/app_images - icons for the Inform app and its many associated files, in MacOS format
  • resources/Imagery/bg_images - background textures used in the Index generated by Inform
  • resources/Imagery/doc_images - miscellaneous images needed by the documentation
  • resources/Imagery/map_icons - images needed for the World pane of the Index generated by Inform
  • resources/Imagery/outcome_images - images used on outcome pages
  • resources/Imagery/scene_icons - images needed for the Scenes pane of the Index generated by Inform
  • resources/Internal/Miscellany - default cover art, the Introduction to IF and Postcard PDFs

Other files and folders in this repository

  • docs - Woven forms of the webs, for serving by GitHub Pages
  • scripts/gitignorescript.txt - Inweb uses this to generate the .gitignore file at the root of the repository
  • scripts/makescript.txt - Inweb uses this to generate a makefile at the root of the repository
  • scripts/READMEscript.txt - Inpolicy uses this to generate the README.md file for the repository

Colophon

This README.mk file was generated automatically by Inweb, and should not be edited. To make changes, edit scripts/READMEscript.txt and re-generate.