Curveship released

Curveship, my interactive fiction system that also supports interactive narrating, is now available in a development version (0.5). Curveship is a Python framework.

Here’s the announcement I posed on my blog:

And the site for the system, including description, documentation, and download links:



I look eagerly forward to all the splendid games and stories that will be created with Curveship.

If that was sarcasm, it somewhat missed the point. Being a Python framework means it can be integrated into other software without you even noticing it. Something that the other IF systems do not provide, nor attempt to.

Was it sarcastic? I was wondering, too.

Integration (which is awesome) aside, I’m just interested, in a pure interactive theory sense, in how much can be made of the road this tool is going down. I can’t say that I’m convinced that it’s the right road but I’m sure glad there is somebody on it. It doesn’t make sense to me not to want to see pathways that I am not personally following (I favour the ‘smoke & mirrors’ approach to narrative, myself) explored. I am just not that sure of myself that I can dismiss alternate data sets, a priori.

So much on my plate, but I’m just going to have to look into this at some point, as I take interactive theory fairly seriously and I think I need to see if this tool has the ability to challenge my ideas about it.

In any case, congratulations on the release, Nick!


What do I have to do to run one of the example stories on a Mac?

As this question probably reveals, I don’t know anything about Python, so I won’t be able to do anything with this anytime soon, but I look forward to seeing what others do/have done with it.

Mac OS X comes with Python pre-installed by default. What I don’t know is whether Curveship can run with the version shipped by Apple and requires a more recent one.

If you’re really interested in this, see to get a general idea.

My sincere regrets if my previous post looked sarcastic. It wasn’t my intention in the least.

I’ve read a lot about what Nick has been revealing about Curveship the past two years or so and have been really excited about the new ideas it implements and the possibilities it promises. I’ve simply been waiting for this, that’s all.

So, my hooray was nothing but an expression of enthusiasm (though a much too naive expression, I now realize) and a perfectly well-meant wish for the success of Curveship. I really do look forward to the kind of IF that may be done with this tool, and I hate to think that anyone may have been discouraged or offended by that post.

I am also non-sarcastically excited about this!

The README file explains everything you need to do to run Curveship on Mac, Linux, or Windows. From the github page for the system, you can view the README before you download Curveship:

On Mac and Linux, it’s all fairly easy because Python is pre-installed. Any recent 2.X version of Python will work.

Windows is more difficult; you’ll need to install Python, either set your path up or provide the full pathname for “python”, and use a “” where you use a “/” on Mac and Linux. I and others have gotten it working on systems from Windows XP to Windows 7, however.

In all cases, you’ll need to use the Terminal/Command Prompt. The full instructions for all three platforms, including all of this, are in the README.


I’m curious if there’s an editor highlighting file of any kind available for the strings-with-slots syntax?

George, I don’t have anything to do syntax highlighting, but that’s a good idea.

You can diagnose many problems with a Curveship fiction file using static checking tools such as pylint or by simply running the fiction file to see if it successfully sets up the world or if it crashes. But there is nothing right now that checks the syntax of templates. A validator as well as and syntax coloring would be nice to add as development continues.


I’m really confused about this thing. Is this meant to be an alternative to Inform 7? I saw the Artmaking example code. But what this looks like is a little bit of TADS (in terms of assigning values to properties) and a little bit like Inform 7 in terms of the Pythonic indentation. I also looked at the Lost One possible narrative and this seems really unwieldy to read from a play-through experience.

So color me confused. What is this Curveship thing doing that Inform or TADS currently can’t do? I see that it says “Curveship includes a text generator and has the ability to produce different texts depending upon how high-level narrative parameters are set.” This apparently means I create templated contexts. But why is that a desirable way to construct interactive fiction? What’s gained by this approach?

Nick’s dissertation is the best vehicle for understanding where Curveship is coming from and what it’s trying to do: … iction.pdf


Yeah, I read all that. You can get it from the publications page of the main site. While it sounds like an interesting academic thing based on the paper, I’m looking at the actual output – meaning the logic you use as an author and what you experience as a player. That’s the part I’m having trouble understanding in terms of how or what Curveship is practically supposed to provide that other systems currently cannot. I can generate “narrative variation” now in Inform 7 and TADS 3. It basically looks like this system just formalizes a bit the concept of a narrative engine.

The paper does say this: “This project has not yet resulted in a system that is simple to use for teaching about narrative or one that is easy for IF developers to use, and certainly has not yielded a system that can be carefully evaluated in either of these capacities. However, the project has built the foundation for the further development of educational and expressive systems. The basic implementation allows for a range of narrative variation that will be useful for students and teachers as well as IF authors.”

What I don’t get is why this Curveship approach will be more effective tool for creating those “educational and expressive systems.” I’m hoping it’s capable of being explained without having to read a dissertation on the subject. :slight_smile: A lot of work and thought clearly went into this so I’m just curious what potential interactive fiction authors see in this system. Specifically, I’d be curious why this system couldn’t have been done as some sort of MegaExtension to, say, Inform 7 or TADS 3 particularly since I can see the basis of this stuff in both authorhing systems.

Probably to achieve a better use of resources more targeted toward the goal. In fact, that’s almost always the reason for new programming languages. Since a good programming language will be Turing-complete, there will be nothing it can’t do, given enough code (i.e. loading a ‘MegaExtension’ on Inform 7, which I try to avoid because of: yup, use of resources). Therefore the only reason to switch programming languages ever is to avail yourself of another programming language that organises its resources more efficiently for your goal.

Stating that what can be done in one language can also be done in another language, is a tautology. It is always going to be true as long as you are comparing two Turing-complete languages. Therefore, it doesn’t tell you anything meaningful about whether a language is better than or necessary compared to another.

That being said, I don’t actually know enough about Curveship yet to know whether it actually does marshal its resources in a preferable way to i7. I’m just saying that the fact that you could achieve the same thing with Inform doesn’t tell you anything except that Inform 7 is Turing-complete.


This is, I think, partly the problem with text adventure development. Explanations are not given in terms of the authors and reasons they would care.

Most authors (I would guess) are not going to care about Turing-completeness nor should they.

They are going to care about practical things. What can this system allow me to do (in practical terms!) that will allow me to tell a better story? That will allow me to craft a better gaming experience?

I, as a game author, just spent a lot of time looking at Inform 7 and TADS 3 and learning them.

Why should I now invest time in Curveship, particularly when I look at the output or Curveship (which looks really ugly) and when I look at the programming language of Curveship (which means I now have to learn Python and then, possibly, any specifics that Curveship takes with Python)? What does Curveship get me as an author that will allow me to provide a more fulfilling experience to the audience I want to reach?

I didn’t find this information in the dissertation or any of the various papers on the main site as well. Which is why I’m curious what relevance Curveship has to text adventure authors? That’s probably the only way that Curveship is going to be tried out so that it can improve. But if most authors don’t see any value add (beyond some nebulous “use of resources”) then Curveship is probably going to languish.

But, then again, let’s test that out. The first post was Februrary of 2011. A relatively short amount of time ago. But in that time, have authors been enticed enough to try it out? To see how it all works? Any experiential feedback? (After all, I presume that’s why the original poster wanted everyone to know about it, so they’d try it out and give feedback.)

I don’t have any such feedback because I haven’t tried it out … and that’s because I can’t quite understand why I would want to, given the output I’ve seen and the input I’ve seen.

From what I have seen of it, and from what I know of Nick Montfort’s literary interests, I believe that Curveship is primarily aimed at fictions that explore style variations. Think of Raymond Queneau’s Exercices de style as the paradigmatic example of this in static fiction.

If you want to write such interactive fiction, you will want to use a language that has stylistic elements among its primitives. Inform 7, for instance, ask you to conceptualise your game in terms of objects, actions, activities, and rules; but it has no primitives related to style. Curveship does.

If my impression of Curveship is right, it means to stimulate people to write a kind of IF that has not been written before; and a kind of IF that is probably not going to be mainstream, even within the world of interactive fiction. (In the same way that Queneau is hardly meainstream, even in the world of high literature.) It is a niche product for people who want to write avant garde games that revolve around stylistic variations.

(If my impression is wrong, Nick should come here and tell us. :wink: )

I agree with Victor. Besides the Queneau-like stuff, the ability to vary viewpoint and sentence structure on the fly seems like the sort of thing that would be very interesting in stories/games where you could switch between characters at will, and also for some aspects of procedural text generation.

Why haven’t you seen any posts from me about Curveship, when it seems suitable to my interests? Well, I don’t know Python, don’t have time to learn new systems right now, and think that what I really need to do if I’m going to do any IF is to work on getting some decent prose written. I suspect that Nick will probably be the main person exploring Curveship and its possibilities for a little while, and that seems fine to me.

Curveship is interesting, but it’s just not ready for use by IF developers (and the website pretty much admits it). I think the programmer was trying to draw in anyone who had a high degree of interest in the academic theories and Python, not so much saying “Hey, it’s here for everyone to use.” But your point about no-one really using it and yet defending it like it’s the invention of bread is spot on.

Conversely, why wouldn’t I defend something that people are judging without trying to write a game with it? Maybe boosting it without having done so is a bit questionable, but dissing it on the same basis is far worse.