{"@context":{"rdf":"http://www.w3.org/1999/02/22-rdf-syntax-ns#","rdfs":"http://www.w3.org/2000/01/rdf-schema#","owl":"http://www.w3.org/2002/07/owl#","foaf":"http://xmlns.com/foaf/0.1/","dc":"http://purl.org/dc/elements/1.1/","dct":"http://purl.org/dc/terms/","sioc":"http://rdfs.org/sioc/types#","blog":"http://vocab.amy.so/blog#","as":"https://www.w3.org/ns/activitystreams#","mf2":"http://microformats.org/profile/","ldp":"http://www.w3.org/ns/ldp#","solid":"http://www.w3.org/ns/solid#","view":"https://terms.rhiaro.co.uk/view#","asext":"https://terms.rhiaro.co.uk/as#","dbp":"http://dbpedia.org/property/","geo":"http://www.w3.org/2003/01/geo/wgs84_pos#","doap":"http://usefulinc.com/ns/doap#","time":"http://www.w3.org/2006/time#"},"@id":"https://rhiaro.co.uk/2012/05/ui-for-if","@type":"as:Article","blog:bloggerid":"tag:blogger.com,1999:blog-18505529.post-8451896821276018090","as:actor":{"@id":"http://www.blogger.com/profile/12227954801080178130"},"as:content":"
This is the first in an upcoming series of posts about my final project for my\r\nMSc by Research. For those who don't know, my programme is Interdisciplinary\r\nCreative Practices, or ICP for short, and my main focuses so far have been on\r\nInteractive Fiction (IF) and the Web. My final project needs a log book.\r\nTraditionally such a thing would be compiled by me at the last minute based on\r\nnotes scattered around my workspace, emails to myself and entries on Google\r\nCalendar and Tasks. It's high time I got a grip on my organisation and did\r\nthis properly, so blog posts tagged "icpLog" will help me keep a proper track\r\nof ongoing thoughts and progress.
\r\nFor my final project, I endeavour to create in a "location-aware Interactive\r\nFiction engine". If at this stage you don't know what IF is, read this nice\r\ndescription by Emily Short.
\r\nHistorically IF is programmed using one of several specialist languages along\r\nwith specialist software packages. The one I am most familiar with is Inform\r\n7, a brilliantly simple but incredibly powerful natural language.. language..\r\nwhich is perfect for non-programmers who want to create IF. I haven't\r\nactually made anything myself with Inform yet (I plan to, in the name of\r\nresearch), but I have read a lot of source code and tutorials.
\r\nSimilarly, IF is traditionally played/read on a user's computer, in their\r\nlocal environment. The open source JavaScript IF interpreter,\r\nParchment, brings playing IF to the\r\nWeb; much more flexible and shareable, and enabling of many possibilities.
\r\nOne such use of Parchment can be seen in Playfic, which\r\nappeared around March this year. Playfic offers a fully in-browser Inform\r\ndevelopment environment for authors, similar to the Inform software the\r\nexperienced would be used to running on their own machine. And of course, an\r\nonline read/play interface for the IF consumers.
\r\nThis interface affords the user the chance to share their work-in-progress\r\nwith the IF community. The source code for all of the games can be viewed,\r\nmaking it really easy for newcomers to learn how to get started, and for\r\nanyone to figure out how a particularly creative experience or interesting\r\nquirk has been achieved.
\r\nOne of the aims of my project when I laid out my ideas last October was to\r\nlower the entry barrier for prospective new IF authors. Having spent several\r\nyears weaving in and out of technical and non-technical environments or groups\r\nof people, it's plain to see that even Inform might be daunting to some.\r\nWhilst it appears like uber high-level natural language to us programmers, for\r\na writer, things like verbose if statements, oddly structured sentences and\r\nrepetition of logic that would be inferred by a human from just a few words,\r\ncan be pretty alien.
\r\nIn other words, the programmer in me looks at Inform source code and sees\r\nprose; no complex syntax to remember, and logical and basic programming\r\nconcepts. The writer in me doesn't see prose; she sees awkwardly formed\r\nstatements and struggles with maintaining the fluidity of a story whilst\r\nattempting interlace it with conditions and behaviours of things.
\r\nI'm sure if they work together, they can figure something out.
\r\nBut more importantly, I'm sure my creatively split personality can offer some\r\nuseful insights when it comes to designing my own online interface for IF\r\nauthoring.
\r\nDuring a few weeks in April this year, I built the first iteration of\r\nPalimpsest, as my project is so named, around the requirements of some folk\r\nfrom the University of Edinburgh's English Literature department.\r\nConcentrating on the 'location-aware' part and ignoring the 'Interactive\r\nFiction' part, the current alpha allows the author to input bodies of texts\r\nand allocate them areas on a map. The user, upon starting a particular\r\n'experience' on their smart mobile device, could wander around a particular\r\narea and have these texts dynamically pushed to them, to read in the\r\nsurroundings intended by the creator. English Lit. are using this to deliver\r\nhistorical and contemporary literary works written or set in Edinburgh, as\r\npart of the celebration of 250 years of Edinburgh literature. There's more\r\nwork to be done for them before it meets all of their specifications, and\r\nit'll be premièred during the summer. I built it on Google AppEngine with\r\nPython and jQuery and at the time of writing anyone can sign in and create an\r\n'experience' for their own city, at\r\nhttp://palimpsest.rhiaro.co.uk.
\r\nIt's time for the project to branch, as I must turn my attention to the IF\r\nside. I will be pondering the source code of Nick Montfort's\r\nCurveship for inspiration about processing user input\r\n(one of my initial ideas was to adapt Curveship itself to add the location-\r\naware aspect and a Web interface, but the complex narrative stuff that\r\nCurveship does goes waaay beyond my needs, and I think that would end up being\r\nmore complicated than starting from scratch).
\r\nI will also be filling my flat with paper sketches of user interfaces for the\r\nauthoring of Palimpsest works. I need ways to model characters (playable and\r\nnon-playable), locations and connections between locations (shouldn't be too\r\nhard, as this will be based on the real world), objects and their properties,\r\nand interactions with objects and characters. I have so far concluded that I\r\nneed a system of actions and consequences; I should be able to apply this to\r\neverything. Most importantly, I need to a user to be able to input this\r\ninformation as if they were writing a story. Obviously there will still be\r\nsome differences; it may be a disjointed story, spread across a series of\r\ninput fields. But there won't be any degree of programming syntax, or\r\nunnatural prose. The system needs to do that work, and help the author to put\r\nthe right information in the right places to allow this. For the\r\nprogrammatically-inclined, we could perhaps consider the writing of a\r\ntraditional story (novel, etc.) as procedural writing, and the writing of a\r\nPalimpsest interactive piece as object-oriented writing. Maybe. We'll see\r\nhow that analogy holds up as the project progresses.
\r\nIn terms of functionality, all that I'm really changing compared to regular IF\r\nis stripping out the directional commands - north, south, east, west, and\r\nalternatives - and replacing them with physical movement. The system will\r\nknow where the rooms in a particular story are on a world map, and the\r\nwonderful HTML5 geolocation API will know where\r\nthe player is (once they've given permission for Palimpsest to track their\r\ndevice). I've already done this. It works. There are varying degrees of\r\naccuracy. If you're in a building, you're looking at between fifty and two\r\nhundred metres of accuracy, depending on your device. Outside, I had it\r\naccurate to three metres, and the average was five to ten.
\r\nNow all I need to do is... everything else. The idea of building an IF engine\r\nfrom scratch is pretty daunting, especially given the huge complexity of\r\nactions people can squeeze out of languages like Inform. Palimpsest will have\r\nnowhere near these capabilities, not at this stage, and I need to remember not\r\nto get hung up on that. I'll probably leave out scoring, and whilst saving\r\nprogress is a must, 'undo' won't be a priority. With Inform you can create\r\nrandom events and complex algorithm-based behaviours of objects and\r\ncharacters. That's not going to happen for Palimpsest this round. I also\r\ncan't shake the nagging inferiority I feel thinking about the usefulness of\r\nthe Inform development environment in letting you visualise paths through your\r\nnarrative to check for bugs and dead ends. My subconscious will be working\r\nhard on a solution to that, but I can't hope too hard for it to be an outcome\r\nof this stage of the project. Based on the actions-consequences idea, it\r\nwould probably be feasible to generate a flow chart of some kind to help an\r\nauthor fish out paths through the narrative that don't work.
\r\nAs anticipated, writing this post has helped my brain spin into ideas mode.\r\nLikely before the day is out, I will post again with some doodles and diagrams\r\nand a more solid idea of how to make this UI work.
\r\nComments, questions and suggestions welcome.
","as:name":"UI for IF","as:published":{"@type":"http://www.w3.org/2001/XMLSchema#datetime","@value":"2012-05-13T12:55:00.000Z"},"as:tag":[{"@id":"https://rhiaro.co.uk/tags/done"},{"@id":"blog:Done"},{"@id":"https://rhiaro.co.uk/tags/geolocation"},{"@id":"https://rhiaro.co.uk/tags/google+app+engine"},{"@id":"https://rhiaro.co.uk/tags/icp"},{"@id":"https://rhiaro.co.uk/tags/icpLog"},{"@id":"https://rhiaro.co.uk/tags/IF"},{"@id":"https://rhiaro.co.uk/tags/interactive+fiction"},{"@id":"https://rhiaro.co.uk/tags/interdisciplinary+creative+practices"},{"@id":"https://rhiaro.co.uk/tags/MSc+by+Research"},{"@id":"https://rhiaro.co.uk/tags/MSc+project"},{"@id":"https://rhiaro.co.uk/tags/msc"},{"@id":"https://rhiaro.co.uk/tags/Palimpsest"},{"@id":"https://rhiaro.co.uk/tags/python"},{"@id":"https://rhiaro.co.uk/tags/palimpsest"},{"@id":"https://rhiaro.co.uk/tags/icplog"},{"@id":"https://rhiaro.co.uk/tags/msc+project"},{"@id":"https://rhiaro.co.uk/tags/if"},{"@id":"https://rhiaro.co.uk/tags/msc+by+research"}],"as:updated":{"@type":"http://www.w3.org/2001/XMLSchema#datetime","@value":"2013-04-01T00:11:42.503Z"}}