We Cured Unix – Now What?

I’m here at LibrePlanet 2010. Although I’m not going to bust out with full-conference liveblogging (that’s so 2005) I do have a quick summary, and a reaction, to today’s opening talk and the ensuing discussion. The presentation was “We’re done cloning Unix, what next?” by John Gilmore, co-founder of the EFF and founder of the “alt” branch of USENET.

My notes from Gilmore’s talk: The GNU plan from the beginning (with Stallman writing Emacs) was to replace proprietary Unix with free software. Now … “We’re sort of like one of those medical charities that has succeeded in wiping polio from the face of the earth.” And it’s not only Unix – CodeWeavers has also pretty much finished reimplementing the user side of Windows, so that Wine (a free software Windows emulator) works more often than not with arbitrary Windows programs. Replacing Windows makes sense as an external goal, but “how many people in our community want to understand the guts of Windows and replicate it?” So, what is our common goal now?

Mentioned in Q&A: ReactOS … We’re not finished with free software beyond the nerdy command line; for instance, video editing; free software for hackers only as opposed to school systems, the business world? … Wine and Samba are very tactical moves to keep the majority market-share players from having control; what about Facebook? … Reverse-engineering tools to understand binary programs … Support the abandoned Windows XP platform for the users trapped there … Communications, content, and services; for an open Facebook, we need open services … free software that uses new paradigms, not the Microsoft model … Having a solid computer gaming framework would be good; the best games make you think and expand your mind … Wine should be like Vaseline, easing the transition from non-free to free; we need a better UI … What about free software in cars?

Although I am part of the FSF, I’m in no way a GNU hacker and my participation in free software isn’t nearly as great as with most people in the room. So I decided, rather than jumping in to the discussion, to offer my comment and my suggestion for a post-Unix project here:

The real thing that the group here has to offer the world is not to follow up a free Unix-like system with a free Windows-like one or with free firmware. It’s probably not even a better user interface or better video-editing software. I suggest that it’s the power to program the computer and to control computation and networking, not just to edit documents and media. Obviously computers *can* be programmed right now, but people like the ones here have a oligopoly on this sort of programming. Whether or not we’re equally skilled in all areas, we’re for the most part comfortable with the idea writing Perl to process text, setting up cron jobs, writing GUI applications, writing servers in Python, and programming games. We don’t think it’s beyond our reach.

That’s not a typical attitude. Maybe it was in 1983, when home computers ran BASIC (gasp – Microsoft BASIC! Ripped off from Dartmouth…) and people who bought these computers and brought them home learned to program them as a matter of course. But it isn’t now. Proprietary software discourages programming by “ordinary people” and encourages office-style and traditional production-style approaches. The people here who hack on GNU aren’t, generally speaking, expert video editors or UI designers, although there are surely of few of each here. The real strength that the group has is in being expert at programming. What they can offer the world, beyond free imitations of existing systems, is a computer that is more free to program, that by design (not just by license) encourages users to work and play powerfully as programmers.

GNU’s first project, Emacs, is not just a text editor; it is also a programmable environment, a major part of its appeal to many programmers. To look to more recent projects, I find Processing a particularly powerful piece of free software that allows students and artists to use visual, computational capabilities and to understand programming in an extraordinary context. What if the improved programmability of the computer, in a broad sense, for many purposes, became a major goal for free software developers? Couldn’t we do a few orders of magnitude better, and allow for people to be even more empowered by the use (and programming) of computers?

Art as Process, BASIC Considered Helpful

Two quick interruptions to our unscheduled blog hiatus:

Francisco J. Ricardo of RISD’s Digital+Media Department has written a deep and detailed blog post, “From Objecthood to Processhood.” In it, he defends artists, their work, and their discourse about the digital, responding to Henry Jenkins’s 2000 article “Games, the New Lively Art,” which celebrates video games but isn’t as keen on the work of artists. He also describes the transition from a focus on the artwork, an object, to consideration of art as process, concluding with reference to my ppg256 series.

Also, a rather innovative defense of BASIC is advanced in “Where Dijkstra went wrong: the value of BASIC as a first programming language,” a post by Mike Taylor, who, by the way, has a totally sweet banner at the top of his blog. Edsger W. Dijkstra, who was my teacher at the University of Texas, is known for his work on structured programming and just about as well known for his quick denunciations of COBOL and BASIC. The post argues that BASIC is useful to programmers and allows them to discipline their thinking about programs. I would defend BASIC for a different, although not inconsistent, reason: The huge outpouring of innovative, diverse, creative programs – often very short ones – that were written in the 1970s and 1980s, making programming a widespread activity and showing people the potential of the computer for (among other things) amusement, simulation, play with language, and production of visual art. Noah Wardrip-Fruin and I wrote a bit more on this back in 2003 in our introduction to two BASIC programs on The New Media Reader CD-ROM.

In(ter)ventions in Medias Res

I’m here in Banff (in Alberta, Canada) at the cutting edge, or maybe the precipitous edge, or, as I’d prefer to think, the connecting edge. The occasion is In(ter)ventions: Literary Practice at the Edge: A Gathering, organized by Steven Ross Smith.

The presenters include: Charles Bernstein, Jen Bervin, Christian Bök, J.R. Carpenter, Maria Damon, Ram Devineni, Craig Dworkin, Al Filreis, Christopher Funkhouser, Kenneth Goldsmith, D Kimm, Larissa Lai, Daphne Marlatt, Nick Montfort, Erin Moure, Lance Olsen, Stephen Osborne, Kate Pullinger, Stephanie Strickland, Steve Tomasula, Fred Wah.

The presentations (which include critical papers, but also many readings, screenings, performances, and artists’ talks) have been provocative and have unfolded new types of beauty and new understandings of process.

On Thursday, February 18, I was honored to join Larissa Lai and Chris Funkhouser as part of the opening reading. I read from Implementation (a collaboration with Scott Rettberg) and ppg256, concluding with the premiere of a new poety generator in this series, ppg256-5:

perl -le '@a=split/,/,"conceptual,digit,flarf,maximal,modern,pixel,quiet,real";sub f{pop if rand>.5}sub w{$a[rand@a]}{print f("post").w."ism ".w."s ".f("the ").w."\n".(" "x45)."WHAT DOES ppg DO?";$a[rand@a]=~s/[aeio]/substr("aeio",rand 4,1)/e if $l++>5;sleep 5;redo}'

As I explained in my talk the next morning, this program is based on a section in the middle of Tristan Tzara’s February 1921 Dada Manifesto, a section that begins:

cubism constructs a cathedral of artistic liver paste

WHAT DOES DADA DO?

expressionism poisons artistic sardines

WHAT DOES DADA DO?

If you run ppg256-5 (which is the real way to experience the program) it might begin:

postmodernism flarfs digit

WHAT DOES ppg DO?

realism reals the conceptual

WHAT DOES ppg DO?

Because this section of Tzara’s manifesto ends “50 francs reward to the person who finds the best way to explain DADA to us,” so I concluded by presentation similarly, offering a 50 character reward for the person who finds the best way to explain ppg to us. Chris Funkhouser said, “It does a lot with a little.” John Cayley offered that “ppg combines atoms of language.” These aren’t bad explanations, but the most impressive so far has been from Travis Kirton, who, without having any previous experience programming in Perl, created and sent me this modified version of ppg256-5:

perl -le '@a=split/,/,"illmn,imgn,ltr,mut,pxl,popl,strlz,pnctu,typfc,poetc,glmr,idl,ion,cptl,cpsl,cvl,atom,pltc,txtul,erotc,rvl";sub f{pop if rand>.5}sub w{$a[rand@a]}{print f("de").f("over").w."izes ".w."ation".f("s")."\n".(" "x45)."IS WHAT ppg DOES!";sleep 5;redo}'

A run of this may begin by outputting:

deltrizes ionation

IS WHAT ppg DOES!

deoverltrizes mutations

IS WHAT ppg DOES!

I’ll have to see if anything can top that and earn the 50-character reward.

Here’s what’s being said on Twitter about the conference. I’ve found that one participant, Claire Lacey, has been writing about In(ter)ventions on her blog poetactics. Finally, here are just a handful of memorable (mis)quotes to give you another impression, however slanted, of this gathering:

Stephanie Strickland: “The front of your wave is the back of someone else’s.”

Steve Tomasula, in reference to Magritte: “No one ever says that this isn’t a cigarette:

My mishearing of Maria Damon, who was discussing healthy eating with someone as we were descending a staircase: “You need a multi-prawn strategy.”

D Kimm: “We are always unknown to someone.”

Update: Steven Osborne has just launched a blog with a post about the conference.

“Geração sobre a fala” / “My Generation about Talking”

“Geração sobre a fala” (“My Generation about Talking,” Nick Montfort) Tradução para o português, Cicero Inacio da Silva.

“My Generation about Talking,” a text generator which I first presented at the Software Studies Workshop on May 21, 2008, is now available in Portuguese translation, thanks to Cicero Inacio da Silva. It was made for use in a presentation, but the program is set up to allow a user to play the entire presentation or to access any of the fifteen individual voices, each of which affirms repeatedly in some way.

The program is in Python and will run from the command line in OS X and on many Linux systems. It will run on Windows after Python for Windows has been installed.

For instance, to run the English version of this program on OS X:

  1. Download yes_voices.py to the desktop; if you download it to another location, move the file to the desktop.
  2. Start the Terminal application and open a terminal window. An easy way to do this: Click on the Spotlight magnifying glass in the upper left, type “terminal”, and select the Terminal application. A window will open.
  3. In the terminal window, type “cd Desktop” and press return to change directories to the desktop.
  4. Type “python yes_voices.py” and press return.

“Les deux” / “The Two”

[English follows…]

Mon générateur d’histoires “The Two” est désormais en ligne avec une traduction française, “Les deux” , de Serge Bouchardon. La version anglaise était auparavant disponible en Python. C’était le second de trois générateurs de 1k que j’avais réalisés à la fin de 2008. “Les deux” génère des histoires toutes simples de trois lignes, mais dont l’effet de sens n’est peut-être pas si simple. Les versions anglaise et française sont à présent disponibles en JavaScript et sont ainsi facilement accessibles sur le Web.

My story generator, “The Two,” is now online along with a French translation, “Les deux,” by Serge Bouchardon. The English version of the story was previously available in Python. It was the second of three 1k story generators that I wrote near the end of 2008. “The Two” generates three-line stories in a straightforward way, although the effect may not be straightforward. Both French and English versions are now available in JavaScript, so they can be run from the Web easily.

Micro Art Machines

Here are some tiny bits of code to generate some amusement and aesthetic value.

The album sc140 features 22 tracks, each one generated by no more than 140 characters of SuperCollider code. You can download 80 MB of MP3 (for the weak!) or grab the source code (less than 4 KB, with all the formatting) and, if necessary, install SuperCollider, which is free in every sense. Here’s a November New Scientist blog post about the album.

On the visual and literary side, check out Pall Thayer’s Microcodes, tiny art pieces in Perl. Thayer also offers a PDF guide to the appreciation of tiny programs. Some of Thayer’s program incorporate play with the human-legible dimension of code; “WAR has NO value,” now on the front page, is a simple and nice example of this.

Literary Generation at DAC

Late yesterday, I wrapped up my long (and very fun) day at Digital Arts and Culture 2009 in Irvine by presenting my paper “The ppg256 Series of Minimal Poetry Generators” in the late afternoon cognition and creativity panel and then by being a part of the extraordinary DAC Literary Arts Extravaganza, quickly presenting selections that I called “Five Uneasy Pieces:”

  1. “The Purpling,” a prose poem in hypertext
  2. The Marble Index (a work in progress in the interactive fiction system Curveship)
  3. “Taroko Gorge,” a poetry generator originally written in 1k of Python
  4. “The Two,” a 1k Python story generator (on the screen, I premiered the French translation by Serge Bouchardon – links to both coming soon)
  5. “ppg256-2,” one of my 256-character Perl poety generators which my paper discusses

Interactive Fiction Platforms, Strong Bad’s Upgrades

Alex Mitchell just did a great job of presenting the work he and I did on the influence of interactive fiction platforms: “Shaping stories and building worlds on interactive fiction platforms.” We looked at how TADS 2 and Inform 6, which are really extremely similar development systems created to do almost exactly the same things, nevertheless may offer different affordances to IF authors and may influence the way story words (and other aspects of IF) are developed. Check out the full paper if this interests you.

In this panel, which was intriguing overall, I’ll also mention Stephanie Boluk’s fine presentation. She investigated seriality (in a broad sense), melancholy, and the relationship between narrative and database, bringing narratology (among other approaches) to bear on her object of study: Homestar Runner. “Homestar Runner’s far more surreal characters are impossible to locate along any realistic age spectrum. They perform innocence and experience in various degrees, functioning as polysemic signifiers that embrace these contradictory positions – a hybrid condition made possible by their status as cartoons.” Also, a discussion of how Strong Bad’s past computers coming back from the dead resists the dehistoricization of digital media.

IF, Visuality, and Other Bits of DAC

Among the many great presentations here at DAC 2009 at UC Irvine, the paper by Aaron Kashtan, “Because It’s Not There: Verbal Visuality and the Threat of Graphics in Interactive Fiction,” was particularly nice to hear. Aaron discussed my 2000 interactive fiction Ad Verbum, related it to Emily Short’s City of Secrets, and presented a nice argument about how these two engage (differently) with text’s ability to represent the visual. Here’s the abstract:

In this paper I analyze two contemporary works of interactive fiction (IF), Nick Montfort’s Ad Verbum and Emily Short’s City of Secrets, as examples of two contrasting ways in which IF reacts to the perceived threat of computer graphics. In the post-commercial era of IF, graphics represent a factor that, without being acknowledged, has profoundly shaped the development of the medium. Post-graphical works of IF may be distinguished according to how they respond to the threat or promise of graphics. Ad Verbum’s response to graphics is to emphasize the purely textual, and thus anti-graphical and anti-visual, aspects of the medium. The implication is that IF’s closest affinities are not with visual prose but with printed works of procedural textuality, and that IF is a visual medium. By contrast, City of Secrets activates a mode of visuality that depends less on immediate presence than on emotional affect and imaginative participation. Short suggests that IF is a visual medium, but that it differs from graphical video games in that its visuality depends on absence rather than presence.

I was also really impressed by Brett Camper’s discussion of the MSX-inspired “fake 8-bit” game La-Mulana and, on a very different level, the wide-ranging first talk of the conference, by Kate Hayles, which engaged cognition, tools, attention, and evolution.

DAC 2009 has proceedings which were handed out to attendees on CD-ROM and which will be (to some extent?) available. So, while I hope to mention a few more DAC highlights, I won’t aim to summarize talks.

Before & After Media (DAC at UCI)

Ian Bogost and I just gave a talk on platform studies at UC Irvine’s Center for Computer Games and Virtual Worlds. We talked about our book on the Atari VCS, Racing the Beam, and about the platform studies concept more generally. A nice crowd came out on the rainy Friday afternoon and engaged us in some good discussion afterwards. Although we’ve both talked about the book and platform studies in several different places, this was the first talk we’ve given together. I think it worked well, but I guess writing a book together is good preparation.

We’re giving another join talk at Digital Arts and Culture (“After Media”), which starts this evening and then runs for three days of panels (which include scholarly and artists’ talks) and more unlikely presentations in the evenings. Besides my paper with Ian on platform studies misconceptions, I have another co-authored paper with Alex Mitchell on interactive fiction development systems, a “solo” paper on minimal poetry generators (the ppg256 series), and a reading at the DAC Literary Arts Extravaganza. I’m looking forward to seeing a slew of digital media folks and to enjoying the program, the company, and the Southern California environment – even if it keeps raining.

Bergen Apothegma, Part 2

Actually I haven’t had the energy to keep mining each of the presentations at The Network as a Space and Medium for Collaborative Interdisciplinary Art Practice, but they were rich in provocation and new ideas, and now I have to post something to follow “part 1.” The workshop went very well; particularly good were two long evenings of electronic literature, digital poetry, and readable digital art that were done by individuals but showcased collaboration. These two readings stood out because so much of the workshop time (which usually would have gone to very full days of panels) was dedicated to the presentation of creative work, and because the variety and quality of work was stellar.

You can check the twitsphere to see what was twot about the workshop.

A big thanks to Scott Rettberg for putting on this event and for inviting us Americans to join this international discussion.

Platform Readings: Jaguar, Pseudo 3D

As an Atari Jaguar owner, I suppose I have something of a soft spot for the system, but I really do wish that it had more than one awesome game. There’s a recent article on the failure of Atari’s last console by Matthew Kaplan. He ends up singing of the Jaguar rather as if it has been the Great White Hope, sadly fallen to Japanese consoles, but touches on several interesting aspects of the console along the way. Technology, pricing, and marketing are all discussed in some detail. This will help us remember the “64-bit” claims that were made for the system and the never-shipped VR helmet that made appearances at trade shows. Thanks to Jason Scott for this link.

Pseudo 3D graphics is the road less traveled these days, but this non-polygon method of making racetracks and other planar spaces appear to be 3D is fascinating. It’s written up very clearly, with code, example images, and discussion of games that use unusual pseudo-3D techniques, in an article by Louis Gorenfeld. I like how the advantages and disadvantages of these techniques are discussed – the method is treated as neither strictly inferior or “way better” than what we usually think of as 3D. This one’s not only relevant to platform studies, but an obvious topic for a blog called Post Position. Thanks to Josh Diaz for the link.

A Tiny Poetry Generator with Blinkenlights

ppg256-4 on a shelf

[As I wrote on netpoetic.com:] My latest Perl Poetry Generator in 256 Characters, ppg256-4, is my first one created specifically for a gallery setting. Although shown here in my office, it’s now on display at the Axiom Gallery for New and Experimental Media in Boston in the show Pulling Back the Curtain, which runs through September 27.

Since 2007, I have been developing Perl poetry generators that are 256 characters long. These programs constitute the ppg256 series. They are simply 256 characters of Perl code; they use no external data sources, online or local, and they do not make use of any special libraries or invoke any other programs. Here’s the code for ppg256-4:

perl -e 'sub c{$_=pop;$_[rand split]}sub w{c("b br d f fl l m p s tr w").c"ad ag ap at ay ip on ot ow"}{$|=print"\0\0\0\0\0\1Z00\2AA\33 b".c("be de mis re pre ").w." ".c("a on the that")." ".w.w.", ".c("boss bro buddy dogg dude guy man pal vato")."\4";sleep 4;redo}' > /dev/alpha

Note that those 256 characters of Perl include all of the control codes that are needed to drive the sign; the output is just redirected to the sign, a serial device, instead of appearing in the terminal. If you want to run ppg256-4 yourself, you can use this modified version that doesn’t include the control codes — it’s ready for you to copy and paste it into a terminal window:

perl -le 'sub c{$_=pop;$_[rand split]}sub w{c("b br d f fl l m p s tr w").c"ad ag ap at ay ip on ot ow"}{$|=print "\n".c("be de mis re pre ").w." ".c("a on the that")." ".w.w.", ".c("boss bro buddy dogg dude guy man pal vato")."\4";sleep 4;redo} #No LED sign version'

I’ll try to post a longer discussion about ppg256-4 on netpoetic.com and/or on Post Position before too long.

ppg256-4_2

ppg256-4_3

ppg256-4_4

ppg256-4_5

This was posted here on Post Position for the convenience of those of you who subscribe to the feed or visit the site. If you want to leave a comment, please head over to this post on netpoetic.com.

From nn to Curveship

This is the fourth in a series of posts about my interactive fiction system, Curveship.

I was recently asked to elaborate on the difference between nn (the research system I developed during my dissertation work at the University of Pennsylvania) and Curveship.

The most important difference is that nn is a research system that I used for making some advances related to computer science, computational linguistics, and narratology. The system was developed to prove certain points; it was used only by yours truly to implement narrative and text generation ideas and to run demos.

It worked pretty well for this. Using nn, I developed a new representation for the order of actions, one that can be used flexibly in text generation. I put together a string-with-slots representation used in templates, one that is much less cumbersome to use than a general abstract syntax representation. And I worked out how a focalizer world (now called a “concept”) can model an actor’s theory about the “real” or “actual” world that is central to an interactive fiction.

That’s not to say that you’d want to pick up this system, though, and start writing games in it. While nn in 2007 had all the basic components of an IF system (a parser, the ability to save an restore games, the ability to model a world), they were not all ready for prime time, because my development work was focused on trying to answer particular research questions.

So, I took the nn code and began working on a new project, Curveship. I wanted to release a system that was developed with other IF authors, other AI researchers, and other teachers of narrative theory and electronic literature in mind. Curveship is getting close to being this system – within a few months, I hope, I will get it to that point, with the help of a group of people, the Curveship crew, who are testing and commenting on pre-release versions.

Concretely, there are three main sorts of differences. First, bugs in nn that my limited use of the system didn’t expose have been fixed – and more will be. Second, there are improved capabilities that didn’t relate to my research goals, but which are important to IF authors. These range from better parsing and clarification (disambiguation) to better ways of formatting text to better capabilities for simulating physical aspects of the world. Finally, I have impeoved the interface, which includes changing the names of some components of the system. What used to be a “plan for narrating” is now “spin.” What I called “existents” (a perfectly nice but abstruse term from narratology) are now, more simply, called “items.” To avoid confusion, I even changed the name of the “Narrator” module, because “narrator” is a narrative function and a parameter that can be set within the system. This module is now called the “Teller.” There have been other name changes and a great deal of refactoring, some writing of docstrings, and other improvements to make the Curveship code more understandable and manipulable to those who want to get into it. The way string-with-slots templates are written has changed, too, as has the way items and actions are created.

The discussion of reply structures, focalizer worlds, and similar aspects of the system in previous publications (such as my dissertation) remains largely applicable to Curveship. But because Curveship is being developed with an eye toward a new group of author/programmers, researchers, and teachers, there have been many changes beyond the parts of nn that implement those core research contributions. Even some of publications and talks about Curveship from recent months have names for components that are now different and mention the old style string-with-slots formalism. That’s one of the reasons I’ve started in on this series of posts.

Worlds, Spin, and the Revolution of Curveship

This is the third in a series of posts about my interactive fiction system, Curveship.

Before I start descending into detail, I’ll explain why I think Curveship is a big deal.

Curveship does the usual work of an interactive fiction system when it comes to simulating a world: There are discrete rooms that make up the fiction’s locations, actors can inhabit and wander around these rooms, and things can sit in them, be taken and carried off or otherwise moved around. Items can change state, so that a lamp, for instance, can be turned on and off. Items can go into or onto other items, if they allow it. None of this is surprising; plenty of interactive fiction development systems already do all of it very well.

Hypertexts don’t do that. Hypertexts, including Web hypertexts but also pieces in HyperCard, Storyspace, Twine, and similar systems, present a structured document in which some phrases are hooked up to other pages. They might have guard fields or other pieces of code, but at their most essential, they are really strange surfaces of text, with phrases connected in an unusual topology.

Nothing’s wrong with hypertext. If you want to create an unusual language surface, to link pages together into a curious structure, it’s clearly the form to use. The play and connection of language can be intriguing and relevant. You can make a compelling literary work in this form, as several people have done.

But interactive fiction systems allow something else. You can put a simulated world underneath the text that people see. This lets you create different types of literary systems, which can be nice: Several people have created interactive fiction systems that are compelling literary pieces and that couldn’t have been realized as hypertexts.

In an important way, Curveship is to interactive fiction what interactive fiction is to hypertext. Just as interactive fiction added a new and significant model – a model of a simulated world – Curveship adds a model of the telling, of the narrating, of the way that the simulated world is represented in language. Curveship adds spin, as in the spinning of a tale and as in Spin Alley.

Curveship can leave actions out of the narrative, can reorder actions in the narrative to create flashbacks and flashforwards and retrograde narration and narration by category, can narrate at greater or lesser length, and can represent several actions in one statement or repeat the narration of a single action several times. The system can tell about what is happening in the simulated world from the perspective of any specified actor, based on that actor’s knowledge and perceptions, or it can narrate from a global perspective. It can tell about what has happened in the past just as easily as it can represent a current action.

The system is able to do this because it models every action that happens in the world, just as existing IF systems model every item. First-order representations of actions differentiate Curveship from other IF systems. And on that of that, a complete text generation system has been built, allowing for grammatical changes that follow from high-level narrative parameters – the spin.

Consider The Odyssey. Why is it interesting? Why has it shaped world culture and remained memorable for thousands of years? Yes, lots of interesting stuff happens in it. But the way it is told is also tremendously compelling – Odysseus listening to the song of his own exploits, shielding his eyes and weeping, being identified as the great hero, and then going on to tell the next part of the story in his own voice. That’s as fascinating a part of The Odyssey as is the encounter with the Cyclops or the slaying of the suitors. And the telling surely becomes more important in contemporary literature. Is Lolita really more interesting because of what happens or because of how it is told? What about Ulysses? To the Lighthouse?

Curveship’s modeling of the telling adds to the significant power that IF already provides by way of a model of a simulated world. Just as IF adds a simulated world to hypertext, Curveship adds control over the telling (that is, it adds spin) to the simulated world.

Those who want to create strange surfaces of text will want to work in hypertext. Those who want to have a simulated world will probably use an existing IF system. For those who are interested in varying the telling, as many great authors have done in oral, written, typed, and word-processed literature, it will be best to use a simulated world and spin: Curveship.

A Lexicon of the Curveship World

This is the second in a series of posts about my interactive fiction system, Curveship.

In writing about Curveship in any detail, I’ll have to use terms such as action, event, and order, which sound ordinary but are used in a special way in the system. Furthermore, I’ll have to use terms such as focalization and narratee, which do not sound ordinary, but have a meaning within narratology (a.k.a. narrative theory) and are important to the way Curveship works. I’m going to define a few of these terms – some I’ll save for later. Rather than sort them alphabetically, I’ll group them by how they figure in the system.

Worlds of Curveship

Actual World. Following Marie-Laure Ryan’s terminology, I consider the main, simulated interactive fiction world to be the “IF actual world,” that is, what is “actual” from the standpoint of the player characters and other actors. I’ve bothered to give this a special name (rather than just calling it the world) because it isn’t the only ball in play in Curveship.

Concept. A concept, formerly called a “focalizer world,” is a particular actor’s theory of the actual world, based on knowledge (put into a fiction file to begin with) and perceptions (gained as the actor moves around and looks at things). Concepts are almost never complete, and they may be wrong. They allow the telling of actions and the description of items to be focalized, that is, based on what a particular actor knows and sees.

What Exists in the World

Item. Basically, any object that has a representation. I could have called them “objects,” but that term means something different in object-oriented programming, even though items do end up being represented as objects. I could have called them “existents,” the term Seymour Chatman and other narratologists use, but that caused gnashing of teeth among some of the people I consulted, including one researcher whose first language wasn’t English. Items must be in one of three categories.

Actor. An item that can take action on its own, due to either code that an IF author has written or a script the author has dropped in. Any item can react, but only an actor can initiate action. Actors are also the only category of item that have concepts.

Cosmos. The special actor that is the root of the item tree. Responsible for earthquakes, power outages, and any occurrence where the author doesn’t want to model the cause as its own actor. The cosmos can also change the plan for narrating, which allows for a connection between the simulated world and the way the telling of this world is done.

Room. A discrete location which has exits leading to other rooms. Rooms are all on the first level of the item tree, directly below cosmos.

Thing. Generally, an inert item. Any item that isn’t a room and doesn’t need to act or have a concept is a thing. Things can react when something is done to them or done in the same room, so that pressing a switch on a lamp can cause the lamp to react by increasing its glow.

Item Tree. A structure representing all of the items in the actual world (or in a concept) and the relationship between them. It is a graph with a designated node (cosmos), directed links from parent to child, and no loops – that is, no item is its own descendant. Hence, a tree.

Parent-Child Relationship. The relationship between an item and an item a level under it, and connected by a link, in the tree. When an actor walks into a room, he or she becomes the child of the room. If the room moves (perhaps it’s an elevator) the actor will move with it. If the lights in the room become brighter, the actor and everything else in the room will be better illuminated. An apple placed in a sack similarly becomes the child of the sack and, for instance, is stolen if the sack is stolen.

Link. The edges (as they are called in graph theory) of the item tree, each one connecting an item to another item and indicating a parent-child relationship. Links are labeled, with the label indicating more about the relationship. If a person is holding a sack with an apple inside and wearing a cloak, the sack and cloak are the children of the person and the apple is the child of the sack. Furthermore, the link between the sack and the person is labeled “of” (indicating a possession) and the link between the cloak and the person is “on” (indicating something being worn). The link between the apple and the sack is “in” (indicating containment). If you have ever tried to use Inform 6 to model a desk that you can put things on (on top of) and in (in a drawer), something which is not very straightforward to do, you will see an advantage to the way Curveship works.

What Happens in the World

Action. A specific but fairly high-level action taken by an actor. An intended command (such as “get lamp”) usually corresponds to a single action. It also usually doesn’t make sense for an action to partly succeed; it either works or doesn’t, although the first components of it may succeed and later ones may fail. The set of actions is open. Authors can easily make up new ones. Actions are what the system narrates, because they are meaningful and high-level.

Event. A lower-level component of action. There are only five, representing different things to be done in the world. Any action is made of one or more of these with appropriate arguments. The five primitive events are sense, impel, misc, modify, and configure. Only the last two change the state of the actual world, modify by changing a feature of an item and configure by changing the item tree. Events are good for simulating the world – unlocking and opening doors, moving actors from room to room, and so on. But because they are so low-level, they are not very good as a basis for narration. We usually do not want to hear that an actor exerted force on a switch, then turned the lamp on, and then increased the glow of the lamp. But it’s nice to be modeling this under the hood, because if the lamp’s battery is dead, an actor might be able to do the first two things but not the third. If the battery is then replaced, the lamp should glow brightly right away, since the switch is in the on position.

Files of Curveship

Fiction File. What others call the “story file” or “game.” It can be a game, of course. Essentially, though, it defines a fictional (and simulated) world.

Spin File. A very short file with a few parameters and perhaps a bit of code, all of which could be included in a fiction file. These parameters determine how the story is told at a fairly high level. Released games probably won’t use spin files, but sets of these may be used in research and teaching dealing with narrative, because they allow different methods of telling to be applied to the same fiction file (or a set of fiction files).

These are the building blocks of the simulation done in Curveship. I should note that Curveship is designed to mainly simulate the physical world, not emotional states or conversations between actors. And, of course, it models the way actions are represented and items are described based on concepts of that world – it narrates in different ways based on parameters and code provided by IF authors. I’ll discuss how it does that in a future post.