Investigate door. Your eyes are drawn again to the marks on the small door, and you squint, taking a tentative step forward. A small cloud of powder rises around your foot, and a floorboard creaks. The creak is low, and to you, sounds welcoming. Like the house is inviting you in. Encouraged by this, you continue. You have to watch out for the things cluttering the floor, and step carefully around an upturned plastic chair. That obviously wasn't part of the original décor, and despite the heavy coating of dust, you assume it must have been left by the documentary crew. Your foot clacks against something heavy. Look at floor. The dust makes everything the same dark grey, but there are distinct shapes that you can see. Several small plastic chairs are visible, laying on their sides or with their legs pointing into the air. A standing lamp with a wide shade has fallen over at the foot of the stairs, to your left. There's a knee- hight rectangular box against a wall to your right, with what looks like a padlock hanging from the front, and beside it lie pieces of a large and once- ornate vase. At your feet is something long and narrow, and a glimmer of metal peeks through the dust. When your foot made contact, it felt pretty solid. You kick it again to roll it over, and dust peels away to reveal a brassy candlestick holder. Take candlestick holder. You pick up the object, about half the length of your forearm. The metal is cool, but surprisingly not cold. Feeling like you need a souvenir, you tuck it into your coat pocket, and continue to pick your way across the hall. Inventory. In your coat pockets you have the candlestick holder, half a bar of Dairy Milk, and the keys to your flat. In your trouser pocket is your mobile phone, which is turned off so your friends won't disturb you, and some change. Investigate door. The small door is in front of you, and to your left is the sturdy looking bannister that runs up the side of the staircase. You could touch the bannister and the wall to your right at the same time, if you stretched out your arms. It's harder to see because you're no longer in direct line of the light from the entrance (which you left open), but you lean to inspect the front of the door. Cobweb trails curl around your finger tips as you run your hand down the dark wood. You can feel carvings on the surface, and blow and swipe at the dusty layer until the patterns are no longer so obscured. You suppress a splutter at the thick and itchy air you're breathing. Some of the shapes carved into the door feel like cogs, but there's something else as well. Something winding, with a shape more organic. You only wish you could see all of the details. Your wandering hand finds a wooden protrusion at waist height, and you try to turn the handle. It moves stiffly, but the door itself doesn't budge. Carefully, you lean your shoulder against it and push harder, but to no avail. _ [What do you do next? Comment!]
Interactive-Bliction: > Investigate door.
This is the first in an upcoming series of posts about my final project for my MSc by Research. For those who don't know, my programme is Interdisciplinary Creative Practices, or ICP for short, and my main focuses so far have been on Interactive Fiction (IF) and the Web. My final project needs a log book. Traditionally such a thing would be compiled by me at the last minute based on notes scattered around my workspace, emails to myself and entries on Google Calendar and Tasks. It's high time I got a grip on my organisation and did this properly, so blog posts tagged "icpLog" will help me keep a proper track of ongoing thoughts and progress. For my final project, I endeavour to create in a "location-aware Interactive Fiction engine". If at this stage you don't know what IF is, read this nice description by Emily Short. Historically IF is programmed using one of several specialist languages along with specialist software packages. The one I am most familiar with is Inform 7, a brilliantly simple but incredibly powerful natural language.. language.. which is perfect for non-programmers who want to create IF. I haven't actually made anything myself with Inform yet (I plan to, in the name of research), but I have read a lot of source code and tutorials. Similarly, IF is traditionally played/read on a user's computer, in their local environment. The open source JavaScript IF interpreter, Parchment, brings playing IF to the Web; much more flexible and shareable, and enabling of many possibilities. One such use of Parchment can be seen in Playfic, which appeared around March this year. Playfic offers a fully in-browser Inform development environment for authors, similar to the Inform software the experienced would be used to running on their own machine. And of course, an online read/play interface for the IF consumers. This interface affords the user the chance to share their work-in-progress with the IF community. The source code for all of the games can be viewed, making it really easy for newcomers to learn how to get started, and for anyone to figure out how a particularly creative experience or interesting quirk has been achieved. One of the aims of my project when I laid out my ideas last October was to lower the entry barrier for prospective new IF authors. Having spent several years weaving in and out of technical and non-technical environments or groups of people, it's plain to see that even Inform might be daunting to some. Whilst it appears like uber high-level natural language to us programmers, for a writer, things like verbose if statements, oddly structured sentences and repetition of logic that would be inferred by a human from just a few words, can be pretty alien. In other words, the programmer in me looks at Inform source code and sees prose; no complex syntax to remember, and logical and basic programming concepts. The writer in me doesn't see prose; she sees awkwardly formed statements and struggles with maintaining the fluidity of a story whilst attempting interlace it with conditions and behaviours of things. I'm sure if they work together, they can figure something out. But more importantly, I'm sure my creatively split personality can offer some useful insights when it comes to designing my own online interface for IF authoring. During a few weeks in April this year, I built the first iteration of Palimpsest, as my project is so named, around the requirements of some folk from the University of Edinburgh's English Literature department. Concentrating on the 'location-aware' part and ignoring the 'Interactive Fiction' part, the current alpha allows the author to input bodies of texts and allocate them areas on a map. The user, upon starting a particular 'experience' on their smart mobile device, could wander around a particular area and have these texts dynamically pushed to them, to read in the surroundings intended by the creator. English Lit. are using this to deliver historical and contemporary literary works written or set in Edinburgh, as part of the celebration of 250 years of Edinburgh literature. There's more work to be done for them before it meets all of their specifications, and it'll be premièred during the summer. I built it on Google AppEngine with Python and jQuery and at the time of writing anyone can sign in and create an 'experience' for their own city, at http://palimpsest.rhiaro.co.uk. It's time for the project to branch, as I must turn my attention to the IF side. I will be pondering the source code of Nick Montfort's Curveship for inspiration about processing user input (one of my initial ideas was to adapt Curveship itself to add the location- aware aspect and a Web interface, but the complex narrative stuff that Curveship does goes waaay beyond my needs, and I think that would end up being more complicated than starting from scratch). I will also be filling my flat with paper sketches of user interfaces for the authoring of Palimpsest works. I need ways to model characters (playable and non-playable), locations and connections between locations (shouldn't be too hard, as this will be based on the real world), objects and their properties, and interactions with objects and characters. I have so far concluded that I need a system of actions and consequences; I should be able to apply this to everything. Most importantly, I need to a user to be able to input this information as if they were writing a story. Obviously there will still be some differences; it may be a disjointed story, spread across a series of input fields. But there won't be any degree of programming syntax, or unnatural prose. The system needs to do that work, and help the author to put the right information in the right places to allow this. For the programmatically-inclined, we could perhaps consider the writing of a traditional story (novel, etc.) as procedural writing, and the writing of a Palimpsest interactive piece as object-oriented writing. Maybe. We'll see how that analogy holds up as the project progresses. In terms of functionality, all that I'm really changing compared to regular IF is stripping out the directional commands - north, south, east, west, and alternatives - and replacing them with physical movement. The system will know where the rooms in a particular story are on a world map, and the wonderful HTML5 geolocation API will know where the player is (once they've given permission for Palimpsest to track their device). I've already done this. It works. There are varying degrees of accuracy. If you're in a building, you're looking at between fifty and two hundred metres of accuracy, depending on your device. Outside, I had it accurate to three metres, and the average was five to ten. Now all I need to do is... everything else. The idea of building an IF engine from scratch is pretty daunting, especially given the huge complexity of actions people can squeeze out of languages like Inform. Palimpsest will have nowhere near these capabilities, not at this stage, and I need to remember not to get hung up on that. I'll probably leave out scoring, and whilst saving progress is a must, 'undo' won't be a priority. With Inform you can create random events and complex algorithm-based behaviours of objects and characters. That's not going to happen for Palimpsest this round. I also can't shake the nagging inferiority I feel thinking about the usefulness of the Inform development environment in letting you visualise paths through your narrative to check for bugs and dead ends. My subconscious will be working hard on a solution to that, but I can't hope too hard for it to be an outcome of this stage of the project. Based on the actions-consequences idea, it would probably be feasible to generate a flow chart of some kind to help an author fish out paths through the narrative that don't work. As anticipated, writing this post has helped my brain spin into ideas mode. Likely before the day is out, I will post again with some doodles and diagrams and a more solid idea of how to make this UI work. Comments, questions and suggestions welcome.
By sheer coincidence, I find myself neck-deep in creating a custom Interactive Fiction engine during a year in which all kinds of new engines for authoring and enjoying interactive narrative are popping up. Many of these by established programming and literary experts in the IF community. It feels like every week Emily Short posts a review of something new. Most of the ones I've seen recently are more of a Choose Your Own Adventure format than parser-based. Nonetheless, there is a lot I can learn about world modelling and code-free authoring from these systems. Not all of them are open to the public for creating though. All of them seem to be open to Emily Short, however, and she is doing a great job of describing and reviewing her experiences. It occurred to me a while ago that creating the interface for authoring pieces for Palimpsest is potentially more interesting and important than examining the reader experience when it's all done. Readers are much more fickle, and those who spend time writing and creating are by definition the committed and passionate. I'm not saying the readers aren't. But a solid interface for authoring is going to make it much more likely that good experiences for readers are to be created. If I rush through the design and build of the software itself so that I can focus on filling it with content then quizzing readers about the immersiveness of their experiences - as was my original plan there's a good chance I won't spend nearly enough time testing with authors (as I'll be doing the authoring) and will miss the opportunity to allow people to create immersive or particularly engaging experiences, jeopardising the outcomes of the user study stuff in the end anyway. I only have about two months left to work on this in the context of my MSc. Whilst I need something substantial to fill my final report with, I'm certain I'll be continuing to develop this in the future, and I'll only end up having to redo bits from scratch if I cut corners the first time. I also have to think about what I want to get out of my MSc, and how I want to use the opportunities I have studying in an art department compared to what would be expected of me studying in a computing department. I jumped on the idea of 'user study stuff' because I know how to do this in terms of software, and I know how to write a lot about it. Not that I don't find the immersion thing interesting, but overall I think it would be more valuable to both myself and any eventual users of Palimpsest if I produced documentation of detailed musings about the perhaps unfinished or forever- ongoing development of a custom engine and authoring interface for Interactive Fiction, rather than gloss over that to fill my report with lots of nice statistics and quotes and analyses about reader experiences that are ultimately invalid anyway. And I can do this for an 'art' project, where the journey is equally, if not more, important than the outcomes. Where for a 'computing' project, the documentation of the journey has in my experience generally been intended to be a build up to an overarching theoretical or practical conclusion. So next up, look out for a discussion of the various engines for different flavours of interactive narrative that have been popping up / I've been noticing recently, coming soon to a blog near you! (This one. This is the blog it'll be coming to. Not any old blog near you).
Shifting focus (from readers to authors)