💾 Archived View for gemini.ctrl-c.club › ~nttp › writing › intfic › gamebooks.html captured on 2024-08-31 at 14:39:22.

View Raw

More Information

⬅️ Previous capture (2021-12-03)

-=-=-=-=-=-=-

<!DOCTYPE html>
<meta charset="utf-8">
<title>Gamebooks In Alan 3</title>
<link rel="stylesheet" type="text/css" href="diary.css">
<link rel="icon" type="image/png" href="icon.png">
<meta name="viewport" content="width=device-width">
<meta name="description" content="">
<meta name="author" content="Felix Pleşoianu">
<meta property="og:site_name" content="Fictionally interactive">
<meta property="og:type" content="website">

<header role="banner">
 <a href="https://felix.plesoianu.ro/intfic/">Fictionally interactive</a>
 <h1>Gamebooks In Alan 3</h1>
</header>

<time>2016-12-06</time>

<p>It's easy to forget nowadays, but gamebooks in the analog world exploded in popularity at the same time parser-based interactive fiction did on computers. For a while, after the commercial death of both genres, fans of the latter looked down upon the former as an inferior form (though they won't admit it nowadays). Even so, people have tried to adapt their favorite tools for emulating all those cool choice-based adventures they'd grown up with. Inform 6 has the MCA extension by Krister Fundin (only available on the IF Archive). Inform 7 has the Adventure Book extension, itself a port of an older tool. Quest has a gamebook mode built in. Arguably these have all been obsoleted by dedicated tools such as Twine, but those throw out the baby with the bathwater. Ever played a parser-based game with menu-based conversation? Or an Inform game with a hint menu? There's room for both a parser and choices in the same game &mdash; an insufficiently explored avenue. But to pursue it requires a tool that can support both kinds of interaction at the same time, and that's rare: the aforementioned extensions are all-or-nothing solutions.

<p>You'll be happy to hear, then, that <a href="alan3-review.html">Alan 3</a> supports gamebooks natively, by its very nature, and you don't have to sacrifice anything to make one.

<p>How? Remember that unlike with most authoring systems, in Alan 3 exit names are arbitrary; they don't have to be picked from a predefined "compass". The interpreter still tracks all the exit names used in the game so it can say "you can't go that way" where appropriate, but that's done transparently, without bothering the author. So you can easily have exits named "a", "b", "c" and so on, corresponding to a list of options given in the room description...

<pre><code>
	the outside_the_castle isa location
		name 'Outside the castle'
		description "The next few days of travel pass quietly, and
		you arrive at Redhill Castle with time to spare. Right away,
		you notice the anthill-like activity surrounding the massive
		construction. People are hard at work cleaning the moat and
		reinforcing the walls, while more guards than usual closely
		search everyone going in."

		style emphasized.
		"$pHow are you going to reach the king?
		$na) Bluff your way past the guards;
		$nb) climb the wall unnoticed by workers;
		$nc) use your Orb of Travel to blink in."
		style normal.

		exit a to trick_guards.
		exit b to climb_wall.
		exit c to blink_inside
			check charges of magic_orb &gt; 0
			else "The magic of the orb is exhausted
				from too much use."
		end exit.
	end the outside_the_castle.
</code></pre>

<p>Yes, we're reusing locations for situations, but that's hardly a stretch. And the game works just fine without including the standard library; but that also leaves out some useful verbs, so you'll want to do something like:

<pre><code>
	verb 'save' does save. "Game saved." end verb.
	verb 'restore' does restore. "Game restored." end verb.
	verb 'restart' does quit. end verb.
	verb 'quit' does quit. end verb.
	syntax 'save' = 'save'.
		'restore' = 'restore'.
		'restart' = 'restart'.
		'quit' = 'quit'.
		'quit' = 'q'.
</code></pre>

<p>All you have left to do is replacing the "you can't go that way" message with something more appropriate:

<pre><code>
	message NO_WAY: "That's not an option right now."
	message UNKNOWN_WORD: "That's not a command or option in this game."
</code></pre>

<p>Ta-da! You have a perfectly good gamebook system, with the whole power of Alan 3 still at your disposal:

<ul>
 <li>checks on exits, er, options;
 <li>conditional description parts;
 <li>rules and events;
 <li>objects and containment;
 <li>nested locations.
</ul>

<p>You can even have things like magic spells available at any time (nothing prevents you from defining <em>some</em> verbs if appropriate for the game). I'm not sure how actors would mesh with this way of using the system, but you'll probably need to use them one way or another if you want fantasy combat in the game. Speaking of which, see above about hybrid interfaces: the whole point of doing this in Alan 3 is that you don't have to give up the parser entirely.

<p>Sadly, as of this writing I don't have a suitable story I could implement to test this proposal in practice. (Is there even a <i>Cloak of Darkness</i> equivalent for choice-based games? If not, we need one.) So for all I know there could be serious flaws in my plan. But it looks fairly solid. If you do try it, let me know how it goes. And thank you for reading.