Writing for Seltani, in general

Screen Shot 2015-05-21 at 7.16.49 PM

I’ve written a couple of blog posts (1, 2) about particular design decisions for Aspel, a multiplayer game I wrote for Andrew Plotkin’s Seltani platform. Those posts were mostly about how I structured puzzles and information around having multiple characters, touching occasionally on how Seltani’s possibilities and restrictions changed design decisions.

I have a few other thoughts about the platform more generally, about what it’s like to write for.

The overall gist: Seltani offers several obvious and several non-obvious features that made me feel like I was enjoying some of the advantages of Twine (hyperlinked text, the ability to dig deeper into system descriptions, relatively low time/effort cost for embellishing with new details) but had more systemic control. On the other hand, there are definitely some things that it can’t do, and some formatting choices that I understand but am still not crazy about.

Continue reading

Writing for Seltani: Aspel Post-mortem Part 2

This is Part 2 of a post-mortem series about my multiplayer Seltani game Aspel. Part 1 talked about things I omitted entirely from the design, and some things that I put in that didn’t work quite right. Part 2 talks about things that did work, and things that started out not working but that I think I improved over the iterations between tours.

These discussions are sort of implicitly a bit spoilery. You can decide how much that bothers you.

Continue reading

Hybrid interfaces: Texture; Contrition (Porpentine); Spondre (Jay Nabonne)

Lately we’ve been seeing more and more work that falls somewhere between parser-based IF and hypertext: in the past six weeks or so, I’ve run across two new games and a creation tool that push the boundaries in various directions.

Jim Munroe and Juhana Leinonen recently released Texture, a system designed especially to produce touch-based IF that will play well on mobile devices. Texture features the idea of applying verbs to passages of text:

Screen Shot 2014-12-16 at 11.55.07 AM

When a verb is used on text, it replaces that text with something new, or else moves forward to a new page, mimicking the change-or-advance link distinctions in many Twine games. (With Those We Love Alive actually makes this distinction obvious by coloring these links different colors.)

The pairing of verbs and nouns means that navigation is a bit less obvious than in most pure hypertext Twine pieces, allowing for puzzles. The back end is still extremely simple, though, so although it might appear to be a system that would compete with the parser, in practice there’s no way (yet) to build up an extensive world model. The verbs that are available may change from page to page, and the author is handcrafting each verb-phrase interaction.

To the best of my knowledge there aren’t any released pieces yet that use Texture, but I’ll be interested to see what comes of it.

Continue reading

Procedural Text Generation in IF

In the Missing Tools discussion some time ago, one of the things people mentioned wanting more of in IF was procedural text generation, which here is meant specifically as the ability to have the computer describe complex world model states or story events without having to hand-author every possible variation.

This is an area where there’s a lot to learn from work going on in academic research, but as far as I’m aware there’s relatively little communication. As I mentioned in my ICIDS writeup, James Ryan at UCSC and Dr. Boyang Li at Georgia Tech’s Entertainment Intelligence Lab are doing work on a) how to better represent a richly complicated world model and b) how to procedurally alter narrative features such as the tone of narration. One of the things we particularly don’t seem to do in hobbyist IF, perhaps for lack of resources, is experiment with large word databases such as WordNet or crowd-sourced work in particular areas like that used on Scheherazade.

Speaking for myself, I’ve also tended to stumble towards solutions in this space based on trial and error and the needs of my own projects, rather than having a strong grounding in the relevant academic work. Most of what we’ve needed — and most of what we’ve done — is pretty much work in the shallowest end of this pool.

And, of course, text generation for parser IF comes with special additional challenges, in that the player usually expects to be able to refer to any generated noun or noun phrase element; therefore if we generate a description of a thing as “blue”, the system also needs to remember how we described that object and accept the input “blue” to refer to it.

Here are the things I’m currently aware of. Unfortunately, I’m inevitably more aware of the internals of my own libraries and games than I am of other people’s work, so if I left out something cool that you did, please by all means say something in the comments: I am eager to know about it. In particular, there may be a lot I don’t know about under the hood in Kerkerkruip.

Continue reading

Oxford Tools Meetup

As promised, some highlights from today’s Oxford tools meetup:

Eric Eve took us through a demonstration of adv3lite, his slimmer library for TADS 3 for users who don’t want or don’t need all the features of adv3. It’s designed to be intentionally moderate in what it models, not intended to grow to encompass all possible features. Among the things he demo’d: adv3lite

  • does away with some high-end but perhaps less frequently needed features of the adv3 library such as postures, sections of a room, and complicated connectors between rooms
  • provides Inform-7-esque handling for scenes (albeit with a TADS syntax)
  • has a concept of regions and “sense regions”: this provides a way of doing sense passing that is a bit less fiddly than the one in the main adv3 library, in that information about a particular sense can be passed throughout a contiguous area
  • offers a more advanced conversation engine than adv3, including intelligent behavior about whether typed input should be directed to the parser or should be treated as conversation towards the NPC
  • handles six tenses and all persons/numbers for story narration
  • handles three-object commands, and commands with text input strings as one of those (e.g., “write ‘hello world’ on paper with blunt pencil”)
  • does not use the transcript function of adv3, but has an alternative way of collating reports for actions on related objects so that they can be printed together in an attractive way
  • can be used even without roughly half of its component modules for a VERY stripped-down library experience

Graham Nelson showed us features of the upcoming build of Inform, with the target release date of April 30, 2014. These include:

  • indexed text is no longer a different type from text, which means that anything that can be done with indexed text (the manipulation of regular expressions, etc.) can now be done with any text property in a game
  • floating point numbers are now handled natively in Inform
  • Inform now does global named constants, and has a sleeker way of defining global variables
  • Inform is able to put the story into various tenses and persons, so it is possible to change the story text output to, say, third person plural past tense, if you wish (and to change this during play); this was previously possible only with custom library message extensions
  • Inform now provides richer facilities for doing adaptive text in general so that extensions can also easily be written to change their tense and person
  • Inform has built-in algorithms for conjugating English verbs to help produce adaptive text smoothly
  • A new “responses” system provides a way to override any library message text or any message from a properly formatted extension, without having to replace the entire rules in which the text appears
  • The first groundwork has been done towards creating international versions of Inform, including some experiments with French verb formation; this does not constitute a total translation of Inform so far, but is necessary preparation with a view towards eventually translating the whole system
  • The supporting materials have been extensively revised, the index panel improved, and a full index for the documentation provided
  • There is now a panel in the IDE for Extensions, including an App Store-like system called the Public Library for downloading them from the Inform website. This panel allows the author to view which extensions are installed and which are in the library; to install or update extensions with a single click; and even to download the entire Inform extension collection at once, if that’s desired
  • The Mac IDE has been overhauled quite a bit, with Toby Nelson (brother of Graham) also working on it: the search box much improved, syntax coloring sped up so that typing an open bracket no longer produces a major stall, and various longstanding glitches removed

Afterwards, there was some discussion about the “what do you want in a tool” question of the last few days, and several people agreed that they felt there would have been more answers about commercial IF if the question had been differently framed.

We talked about the desirability of being able to publish IF to mobile device apps more easily, for which none of the parser systems currently have an easy solution. We also talked a bit about Inform potentially building choice-based games, and about the rise of such games in general.

Thanks to everyone who came, and especially our presenters. The next meetup will be April 8 in London, on dialogue and character modeling.

What people said about the Missing Tools (and some that aren’t missing at all)

A few days ago I asked people in several forums to tell me what IF tools they wished existed. Here is a collation of the major themes. (This misses out a handful of very specific requests about what specific existing systems should do — it’s more an attempt to put together some general patterns.) I also got some interesting feedback about tools that do exist but aren’t widely known or used, so I’ve written that up too.

Continue reading