1
0
Fork 0
mirror of https://github.com/Oreolek/raconteur.git synced 2024-05-17 00:08:16 +03:00
This commit is contained in:
Bruno Dias 2015-04-15 00:54:29 -03:00
parent ef07a963ff
commit 0fdfd7e9a8
5 changed files with 57 additions and 40 deletions

View file

@ -6,25 +6,13 @@ author_id: "@NotBrunoAgain"
author_url: "http://twitter.com/notbrunoagain"
---
Writing interactive fiction is hard. I've shipped two games this year and they were both hard, or at least nontrivial. IF has difficulties that static prose doesn't have to handle, even before you touch the computer systems that actually make IF go.
Raconteur is "Undum with batteries included." Historically, developing for Undum has meant doing a lot of your own tooling; writing tools to enable you to write your game. Undum's flexibility and power have made it the engine that drove some of the most significant works in IF ([The Play], [Almost Goodbye]). But it has always been relatively inaccessible. Undum is not the system of choice for writing straightforward hypertext games; it's a challenging system to learn and use that demands the author build their own engine on top of it to drive their game logic.
When I finished writing a parser game earlier this year, I pretty much didn't want to look at Inform 7 for at least several months. I wanted to make a hypertext game. So I surveyed the state of hypertext IF systems:
Raconteur is a descendant of a library I wrote for my own use to write [Mere Anarchy]. I've polished it up (a bit; there is still work to be done) and given it a name, because I want there to be more Undum stories out there.
### ChoiceScript, Inkle Writer
Raconteur is a library of Undum tools that can get someone writing their story quickly. It tries to push Undum in the direction of Inform 7 and Twine, a system that puts the prose front and center.
Both of those are wonderful options, but they're also based on a very clear idea of what player interaction with your story is going to be. They're based on the idea of clearly demarcated choices at the end of every passage, stitching together a story. I wanted to play around with hypertext more; I wanted to do some of the things Twine authors were doing. Those two systems didn't really support that.
### Twee/Twine
Twine has done amazing work getting people who'd never even thought of making games to write IF. It's also really hard to extend. Most Twine authors rely on macros that were written by others authors. Twine authoring is code bricolage. There's not a lot of documentation on how those macros are written in the first place.
Twee, Twine's underlying technology, also had some other things I didn't care for. TiddlyWiki markup is clumsy. The enforced separation of code and content doesn't seem to benefit either. I missed the directness I had with Inform 7, of being able to just blend code and prose however I wanted to generate content.
### Undum
Undum is at least as powerful as Twee, but has a much cleaner, better documented API that makes writing code to do things with it much more straightforward. Undum is also fairly barebones; batteries are most definitely not included. Starting an Undum project has historically meant writing your own tools before you can get to writing prose. So Undum is in a weird place where there are few Undum pieces, but some of them are of considerable quality. IFDB lists 12 Undum works right now, by 11 authors (I'm one of them). Some of those are really significant works by accomplished authors -- Aaron Reed's Almost Goodbye, Squinky's The Play.
Undum wasn't exactly what I wanted, but it was closest. I set to work building a small library and a toolchain to make it easier to write an Undum story. Raconteur is a version of that library and toolchain written to be used by people who are not me.
Undum will never be quite as easy to use as Twine -- Raconteur itself introduces some complications for the less technically-minded (It depends on [Node.js], for one thing). But it's an attempt at averaging out the power and flexibility of Undum with the ease of other systems. And for IF authors (or aspiring IF authors) who know a bit of web development, it'll be a very familiar set of tools.
### What it Does
@ -88,4 +76,12 @@ Raconteur's actual source distribution, on [Github](http://github.com/sequitur/r
Raconteur is still in an experimental state. It's usable, however; you can download the [scaffold](http://github.com/sequitur/raconteur-scaffold/) right now and start playing with it or even building games.
Over the next few weeks, I'm going to be posting a series of tutorials on writing Undum games with Raconteur.
Over the next few weeks, I'm going to be posting a series of tutorials on writing Undum games with Raconteur, as well as a more navel-gazing explanation of why Raconteur exists, on my [own IF blog]. You can reach me through [Twitter], [Github], or [intfiction.org].
[The Play]: http://ifdb.tads.org/viewgame?id=ytohfp3jetsh1ik4
[Almost Goodbye]: http://ifdb.tads.org/viewgame?id=myktccphmb29xjne
[Mere Anarchy]: http://ifdb.tads.org/viewgame?id=txqmifzs44ndjxpw
[Node.js]: https://nodejs.org
[Twitter]: https://twitter.com/notbrunoagain
[Github]: https://github.com/sequitur
[intfiction.org]: http://www.intfiction.org/forum/

View file

@ -16,7 +16,7 @@
<p class="post-meta">{{ page.author }}
(<a href="{{ page.author_url }}">{{page.author_id}}</a>)</p>
{% endif %}
<p class="post-meta">{{ page.date | date: "%b %-d, %Y" }}</p>
<p class="post-meta">{{ page.date | date: "%B %-d, %Y" }}</p>
</div>
</div>
</div>

View file

@ -56,4 +56,8 @@ pre:first-child {
font-size: 1.8rem;
text-align: right;
}
img {
max-width: 100%;
}

BIN
img/storyteller.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

View file

@ -5,15 +5,18 @@ layout: noheader
<div class="section top bright">
<div class="container">
<div class="row">
<div class="four columns">
<div class="three columns">
<h5><a href="news.html">News</a></h5>
</div>
<div class="four columns">
<div class="three columns">
<h5><a href="http://github.com/sequitur/raconteur">View Raconteur on Github</a></h5>
</div>
<div class="four columns">
<div class="three columns">
<h5><a href="http://github.com/sequitur/raconteur-scaffold">Get the scaffold</a></h5>
</div>
<div class="three columns">
<h5><a href="http://raconteur.readthedocs.org/">Read the documentation</a></h5>
</div>
</div>
</div>
</div>
@ -22,10 +25,10 @@ layout: noheader
<div class="container">
<div class="row">
<div class="six columns intro">
<h3>
Raconteur dramatically speeds up writing interactive fiction with
<a href="http://undum.com">Undum</a>.
</h4>
<h1>
Raconteur is <a href="http://undum.com">Undum</a> with batteries
included.
</h1>
<p>
Undum is perhaps the most versatile system for writing hypertext
interactive fiction. Unfortunately, it's also the hardest to use.
@ -34,21 +37,17 @@ layout: noheader
going to use it.
</p>
</div>
<div class="six columns codeexample">
{% highlight coffeescript %}
situation 'west-of-house',
content: """
You are standing in an open field west of a
white house, with a boarded up front door.
"""
{% endhighlight %}
<div class="six columns">
<img alt="a storyteller" src="img/storyteller.jpg">
</div>
</div>
<div class="row">
<div class="six columns intro">
<h2>Batteries Included</h2>
<h2>Agile</h2>
<p>
The Raconteur scaffold comes with everything you need to get started,
The Raconteur <a href="https://github.com/sequitur/raconteur-scaffold">scaffold</a>
comes with (most) everything you need to get started,
configured out of the box to use a build system, CSS preprocessor, and
bundler. Armed with a text editor (We like
<a href="http://sublimetext.com">Sublime</a>), you can start writing
@ -57,17 +56,20 @@ situation 'west-of-house',
<p>
The scaffold is set up to automate as much work as possible. You can
make stylesheet changes and watch them load immediately on a browser.
It even automates bundling your game and its assets into a .zip file you
You change your game and it bundles it again, refreshing the page.
It even automates packaging your game and its assets into a .zip file you
can upload to <a href="http://itch.io">Itch.io</a>.
</p>
</div>
<div class="six columns intro">
<h2>Adaptive Text</h2>
<h2>Adaptive</h2>
<p>
Raconteur is built with adaptive text generation in mind. Defining
snippets of text that vary whenever the player sees them is easy.
Raconteur takes inspiration from Inform 7 and other IF development
systems.
Raconteur takes inspiration from Inform 7, commonly used Twine macros,
and other popular IF development systems. Text that varies across
printings, hypertexts that modify or insert text, and other common
functionality is already there to use.
</p>
<p>As much as possible, it treats code that produces text and
text interchangeably. Raconteur lets you rewrite passages to include
@ -81,7 +83,14 @@ situation 'west-of-house',
<div class="row">
<div class="six columns codeexample">
{% highlight coffeescript %}
situation 'reflecting-pool',
situation 'west_of_house',
content: """
You are standing in an open field west of a
white house, with a boarded up front door.
"""
choices: ['forest', 'inside_house']
situation 'reflecting_pool',
content: (character, system) -> """
Looking into the pool, you find yourself feeling
#{character.sandbox.mood}. It glows with a
@ -96,6 +105,14 @@ situation 'reflecting-pool',
Raconteur is made out of modules, each implementing its own set of
functionality. You only need to use the ones you want.
</p>
<h2>Open</h2>
<p>
Raconteur, Undum, its dependencies (JQuery and markdown-it) are all
open source software. Raconteur games are static web pages that can
be hosted anywhere or even run locally. You can build your game and
share it (or not share it) however you like, wherever you like,
rather than being tied to a particular engine, service, or server.
</p>
</div>
</div>
</div>