1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-05-19 09:28:51 +03:00
inform7/docs/inblorb/M-ui.html
2023-09-10 23:46:39 +01:00

181 lines
12 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Using Inblorb</title>
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
<meta name="viewport" content="width=device-width initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/ConsoleText-Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
<body class="commentary-font">
<nav role="navigation">
<h1><a href="../index.html">
<img src="../docs-assets/Inform.png" height=72">
</a></h1>
<ul><li><a href="../index.html">home</a></li>
</ul><h2>Compiler</h2><ul>
<li><a href="../structure.html">structure</a></li>
<li><a href="../inbuildn.html">inbuild</a></li>
<li><a href="../inform7n.html">inform7</a></li>
<li><a href="../intern.html">inter</a></li>
<li><a href="../services.html">services</a></li>
<li><a href="../secrets.html">secrets</a></li>
</ul><h2>Other Tools</h2><ul>
<li><a href="../inblorbn.html">inblorb</a></li>
<li><a href="../indocn.html">indoc</a></li>
<li><a href="../inform6.html">inform6</a></li>
<li><a href="../inpolicyn.html">inpolicy</a></li>
</ul><h2>Resources</h2><ul>
<li><a href="../extensions.html">extensions</a></li>
<li><a href="../kits.html">kits</a></li>
</ul><h2>Repository</h2><ul>
<li><a href="https://github.com/ganelson/inform"><img src="../docs-assets/github.png" height=18> github</a></li>
</ul><h2>Related Projects</h2><ul>
<li><a href="../../../inweb/index.html">inweb</a></li>
<li><a href="../../../intest/index.html">intest</a></li>
</ul>
</nav>
<main role="main">
<!--Weave of 'Using Inblorb' generated by Inweb-->
<div class="breadcrumbs">
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="index.html">inblorb</a></li><li><a href="index.html#M">Manual</a></li><li><b>Using Inblorb</b></li></ul></div>
<p class="purpose">How to use this tool, either from the command line or inside the Inform app.</p>
<ul class="toc"><li><a href="M-ui.html#SP1">&#167;1. What Inblorb is</a></li><li><a href="M-ui.html#SP2">&#167;2. Inblorb at the command line</a></li><li><a href="M-ui.html#SP3">&#167;3. Inblorb within the Inform user interface</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. What Inblorb is. </b>Inblorb is a command-line tool which forms one of the components of the
Inform 7 design system for interactive fiction. Inblorb is the successor to
cBlorb (2008), which was itself the successor to perlBlorb (2001).
All installations of Inform 7 contain it, though few users are aware of that.
They typically write sentences such as:
</p>
<blockquote>
<p>Release along with public source text, cover art, and a website.</p>
</blockquote>
<p class="commentary">Inform 7 uses the instructions in such sentences to contribute to the
writing of a script called a "blurb". In effect, this is a detailed set
of instructions for Inblorb to follow, and when the user clicks Release
in the Inform application, the Inblorb tool is called. (This is a slightly
simplified description &mdash; see below for the full details.)
</p>
<p class="commentary">Inblorb has two main jobs: to bind up the translated project, together with
any pictures, sounds, or cover art, into a single file called a "blorb" which
can be given to players on other machines to play; and to produce associated
websites, solution files and so on as demanded by "Release..." instruction(s)
in the source text.
</p>
<p class="commentary">"Blorb" is a general-purpose wrapper format designed as a way to gather
together audiovisual media and bibliographic data for works of IF. The
format was devised and formally specified by Andrew Plotkin around 2000,
and its name is borrowed from that of a magic spell in Infocom's classic
work, "Enchanter". ("The blorb spell (safely protect a small object as
though in a strong box).")
</p>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. Inblorb at the command line. </b>If you have compiled the standard distribution of the command-line tools
for Inform then the Inblorb executable will be at <span class="extract"><span class="extract-syntax">inblorb/Tangled/inblorb/</span></span>.
Usage is very simple:
</p>
<pre class="ConsoleText-displayed-code all-displayed-code code-font">
<span class="ConsoleText-plain-syntax"> </span><span class="ConsoleText-element-syntax">$</span><span class="ConsoleText-plain-syntax"> </span><span class="ConsoleText-function-syntax">inblorb/Tangled/inblorb</span><span class="ConsoleText-plain-syntax"> [OPTIONS] BLURBFILE [BLORBFILE]</span>
</pre>
<p class="commentary">This follows the given blurb file. Not all blurbs instruct Inblorb to make
a blorb, which is why BLORBFILE is optional.
</p>
<p class="commentary">The OPTIONS are very simple. Inblorb's predecessor cBlorb needed to be told
what platform it was running on, by specifying <span class="extract"><span class="ConsoleText-extract-syntax">-osx</span></span>, <span class="extract"><span class="ConsoleText-extract-syntax">-windows</span></span> or
<span class="extract"><span class="ConsoleText-extract-syntax">-linux</span></span> at the command line, but these have gone. What remains is:
</p>
<p class="commentary"><span class="extract"><span class="ConsoleText-extract-syntax">-verbose</span></span> causes Inblorb to print a running narrative of what it's doing;
</p>
<p class="commentary"><span class="extract"><span class="ConsoleText-extract-syntax">-project X</span></span> tells Inblorb to assume the usual settings for this project,
which means that BLURBFILE is set to <span class="extract"><span class="ConsoleText-extract-syntax">X/Release.blurb</span></span> and BLORBFILE
to <span class="extract"><span class="ConsoleText-extract-syntax">X/Build/output.gblorb</span></span>. <span class="extract"><span class="ConsoleText-extract-syntax">X</span></span> is usually something like <span class="extract"><span class="ConsoleText-extract-syntax">Whatever.inform</span></span>.
</p>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. Inblorb within the Inform user interface. </b>This is the sequence of events when the user clicks Release in the user
interface application (the "interface"):
</p>
<ul class="items"><li>(1) The interface calls the Inform 7 compiler as normal except that the
<span class="extract"><span class="ConsoleText-extract-syntax">-release</span></span> command-line switch is specified.
</li><li>(2) If Problems occur, the compiler exits with a return code of 1, and the
interface displays those, and then stops the process.
</li><li>(3) If no Problems occur, the compiler generates Inform 6 code, and also
two additional files for the project's <span class="extract"><span class="ConsoleText-extract-syntax">Build</span></span> folder:
<ul class="items"><li>(a) <span class="extract"><span class="ConsoleText-extract-syntax">Metadata.iFiction</span></span>, an iFiction record;
</li><li>(b) <span class="extract"><span class="ConsoleText-extract-syntax">Release.blurb</span></span>, a blurb file of instructions for Inblorb to follow later.
</li></ul>
<li>(4) The interface next calls the Inform 6 compiler. The interface calls it
with the <span class="extract"><span class="ConsoleText-extract-syntax">S</span></span> and <span class="extract"><span class="ConsoleText-extract-syntax">D</span></span> switches, for strict checking and for debugging, off
instead of on. Inform 6 should certainly not produce syntax errors, though
it will surely produce warnings; all the same it can fail if, say, Z-machine
memory limits are exceeded. The interface should deal with such failures
exactly as it would in a non-Release run.
</li><li>(5) Inform 6 having returned 0 to indicate success, the interface next calls
Inblorb as follows. Let <span class="extract"><span class="ConsoleText-extract-syntax">Path</span></span> be the path to the folder containing the Inform
project being released, which we'll call <span class="extract"><span class="ConsoleText-extract-syntax">This.inform</span></span>. Then the interface
should call:
</li></ul>
<pre class="ConsoleText-displayed-code all-displayed-code code-font">
<span class="ConsoleText-plain-syntax"> </span><span class="ConsoleText-element-syntax">$</span><span class="ConsoleText-plain-syntax"> </span><span class="ConsoleText-function-syntax">inblorb</span><span class="ConsoleText-plain-syntax"> "Path/This.inform/Release.blurb" "Path/This.inform/Build/output.gblorb"</span>
</pre>
<ul class="items"><li> These two filename arguments are the Blurb script for Inblorb to
follow, which was written by Inform 7 at step 3, and the filename of the Blorb
file which it should write. Note that the interface should give this the
extension ".gblorb" if the Glulx setting is in force, and ".zblorb" if
the Z-machine.
</li><li>(6) Like its predecessors, Inblorb can produce error messages, and it returns
0 (success) or 1 (failure). But the interface doesn't actually need to look
at that, because Inblorb also produces a much fuller report in the form of
an HTML page to be displayed on the Problems tab. This is <span class="extract"><span class="ConsoleText-extract-syntax">StatusCblorb.html</span></span>,
in the project's <span class="extract"><span class="ConsoleText-extract-syntax">Build</span></span> folder. (This is a change made in 2010: in the past,
the interface simply chose between a generic success and failure page on the
basis of the return code. The filename <span class="extract"><span class="ConsoleText-extract-syntax">StatusCblorb.html</span></span> is not hard-wired:
it just happens to be what the Blurb file generated by Inform 7 requests.)
</li><li>(7) There are no more tools to call, but the interface has one last duty (if
Inblorb succeeded) &mdash; to move the blorb somewhere sensible on disc, where the
user can see it. Leaving it where it is will not do &mdash; the user never looks
inside the Build project of a folder, which on Mac OS X, for instance, is
not even visible. To see what to do, the interface must look at the textual
output from Inblorb, printed to <span class="extract"><span class="ConsoleText-extract-syntax">stdout</span></span> (of course the interface is free
to redirect this if it wants to). If Inblorb printed a line in the form:
</li></ul>
<pre class="ConsoleText-displayed-code all-displayed-code code-font">
<span class="ConsoleText-plain-syntax"> Copy blorb to: [[...]]</span>
</pre>
<ul class="items"><li> then the interface should do as it's told. For instance:
</li></ul>
<pre class="ConsoleText-displayed-code all-displayed-code code-font">
<span class="ConsoleText-plain-syntax"> Copy blorb to: [[/Users/gnelson/Examples/Bronze Materials/Release/Bronze.gblorb]]</span>
</pre>
<ul class="items"><li> If Inblorb printed no such line, the interface should put up a Save As...
dialogue box, and invite the user to choose a destination.
</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprevoff">&#10094;</li><li class="progresscurrentchapter">M</li><li class="progresscurrent">ui</li><li class="progresssection"><a href="M-tbl.html">tbl</a></li><li class="progresssection"><a href="M-rc.html">rc</a></li><li class="progresschapter"><a href="1-bsc.html">1</a></li><li class="progresschapter"><a href="2-bw.html">2</a></li><li class="progresschapter"><a href="3-rls.html">3</a></li><li class="progressnext"><a href="M-tbl.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>
</body>
</html>