Advanced graphics for Inform 7

Interactive fiction’s basic spatial model, with its emphasis on discrete container-spaces, more or less does away with theexperience of travel. The player zips instantaneously between rooms, and while this works pretty well in most indoor spaces, there can be a certain sense of loss, especially when the “room” represents a wide field, a vast hall, or a long street. The character of these spaces depends in large part on the ways in which we move through them–the sense of space & distance, passing time, shifting vistas & perspective, and the people, plants, and things we might interact with while we’re advancing. IF’s instamovement sucks this experiential element out of travel, and thus robs IF authors of a powerful tool for presenting fictional worlds.

I’ve been thinking about ways to bring the experience of travel into IF, and particularly of how to do so with minimal changes to existing conventions. The experiment I’m posting today makes no change at all to the underlying spatial model: There are three rooms, each representing a segment of street in an imaginary city. When the player types walk to <a location>, however, the game doesn’t move him on immediately. Instead, short messages are meted out in real time, describing the changing space, people met on the street, etc. After a few of these messages are displayed, the player is moved into the next room, and another set of messages appropriate to that room are displayed. The process continues until the player arrives at the destination. Click here to play through the example.

As a technique, I think it works reasonably well; I hope that the rather dull text of the example doesn’t detract too much. Though I’ve presented the example using only text, it would work nicely using a graphical map that indicated the real-time steps through animation; a moving dot or icon, for example (this isn’t quite as difficult as it might sound!) Of course, there are potentially a number of  things that would need to be further worked out or refined, depending on how you wanted to use this in an actual game. How to deal with randomized environmental messages, for example, or NPC movement…

Advertisements

Comments on: "IF Gameplay Experiment: Experiential Movement" (21)

  1. Cool demo! It inspires me to look more closely at the real-time extensions for I7.

    I’ve played muds for a long time and the techniques you mention are fairly common in certain games (though the ‘loading ellipse’ is not something I’ve seen before, I think it works though). NPCs and ambient messages usually are handled straightforwardly; usually there’s a brief time where a NPC action can affect the moving PC (for example, if the NPC takes a swing at one). Those actions don’t typically stop the movement.

    If you really want to see an interesting take on text game movement, find a telnet client (or better yet, a mud client — Mushclient or Mudlet on Windows/Linux, Atlantis or Mudlet on mac are good options) — and find the mud God Wars 2, which is a fully coordinate based mud with procedurally generated descriptions.

    • Thanks for the tips on MUDs and NPC movement. I may have to check out a MUD one of these days…I have no experience with them whatsoever.

      I’m looking at having ambient messages that operate on real-time as well, so that if you’re standing still in a single room for a while, a message is increasingly likely to pop up. I was also thinking of having NPCs moving in real-time, so that they could enter and leave the room while the player does nothing at all. Pulling all that together might be interesting…

  2. This is nice, but thinking about the original problem I think maybe ye auld space bar may work just as well as real-time stuff for IF. A New Life does a good job of this — there are several map connections that give you several pieces of the journey separated by “push space,” and I think it gives a nice sense of the, well, space. (And I believe that game was specifically praised for giving a sense of a large space with a small number of locations.)

    • Thanks for the tip on A New Life; I hadn’t heard of it before.

      The space bar is certainly an option, and one I considered, but it’s completely modal: you enter the new movement mode and can only press the button until you’re done. What I’m going for using real-time is the sense that you can do anything you like while moving–if something mentioned in the passing descriptions interests you, you can immediately type X MAN or TALK TO WOMAN IN RED. The example fails to make this very clear, since I didn’t bother implementing any of the scenery or passers-by, but that’s the idea.

      I suppose you could do something similar with keypresses–if the player hits anything but the spacebar, you could display the prompt and accept line input as normal. But I’m interested in exploring the kind of flavor that out-of-turn events might bring to a game (whether atmospheric text, NPCs that don’t wait for your turn to move, etc.)

      • Mm, that’s an interesting point. The model I’m thinking of doesn’t do that. Couldn’t you actually just hack it up to the return key by having a scene during which the “I beg your pardon” error advanced the text? You’d have to do something about the prompt, though.

        A New Life is definitely worth playing, though it’s definitely strange in some respects. It gives the impression of a big world partly through some great backstory and partially through what seem like some total red herrings and dead ends, even in the clues. (At least I’ve read some clue chains to the end and still had no idea what to do.) Well, the author himself has said, “An entire major branch of the game is unfinishable due to a bug, which is redeemed only by the omission of hints and clues that would help players find that branch.” So there you go.

        I haven’t actually finished it, but I mean to some day — combining the hints, the walkthrough, and a bunch of stuff I figured out myself, I think I can.

      • (Sorry–this one somehow went into the spam bucket.)

        matt w: Mm, that’s an interesting point. The model I’m thinking of doesn’t do that. Couldn’t you actually just hack it up to the return key by having a scene during which the “I beg your pardon” error advanced the text? You’d have to do something about the prompt, though.

        You could hook messages up to the Return key during “walk mode”, but then a naked Return would need to act differently from what it does the rest of the time… (to my mind, the recent trend toward having Return trigger the look command is the right way to go, so I’d have Return sometimes producing a room description and other times producing a snippet of “experiential” text.)

        I’ve added A New Life to my queue. I’m also trying to work myself up to downloading a MUD client, per George’s suggestion, but every time I’ve checked into MUDs in the past, there’s seemed to be way too much to do to get rolling…

      • a naked Return would need to act differently from what it does the rest of the time…

        That’s what I was thinking; something like, and I’m sure this has multiple syntax errors:

        Walking-somewhere is a recurring scene. Walking-somewhere begins when the player walks to. Walking-somewhere ends when the location is the current travel direction.
        
        Rule for printing a parser error during walking-somewhere when the latest parser error is the I beg your pardon error: try walking-further.
        

        Where walking-further is the activity that moves you along your current path. You’d also have to have something that interrupts the scene when you do something besides keeping going. And of course something that let the player know that hitting return meant “keep going,” as well as a way of dealing with the prompt.

        (I think I got spamfiltered for exceeding my link quota — there’s a link to an interview with Muniz in SPAG on the word “said.”)

      • Whoa, I put in fake “code” tags and it actually formatted it as code!

      • My objection to using Return to advance the texts is that it makes the UI inconsistent:


        >
        I beg your pardon?

        >GO NORTH
        You set out on the long, hard road to Scotland…

        >
        You pass a nice warm inn.

        >X INN
        You stop walking to gaze longingly at the cozy inn. None of this rain in there! But you really should keep moving.

        >
        I beg your pardon?

        That’s a bit of a mess. It might be somewhat better if you remapped the “I beg your pardon” error to LOOK (as the example does), but even then I’m not sure it’s ideal…

  3. To me, it felt a bit stressful – like doing an action game with only text and you only have three seconds to read the text, while knowing that the grue is likely to eat you in two if you aren’t reading fast enough.

    It is certainly possible, I feel, to experience a sense of travelling in a space within the setting of a novel. I am not sure if, with the example given here, the real-time idea lends itself well to chunks of text (unless they are mere nibbles like “a parrot flies by”).

    Possibly, the urgency I feel may be one part UI matters (such as to understand what button to press) and one part insufficient abilities to read english on-screen as fast as in a book (it is not my native language).

    • Thanks, this is excellent feedback. (Note, though, that there are no special buttons to press at all–the command line is open to any command you like while walking. When the command is entered, the PC will stop walking and attempt to carry out the command. Maybe the timed text display needs some tutorial text the first time it’s invoked or so.)

      Anyway, there is a lot of variability in speed between readers. I tested this on a couple of people before posting, and then extended the length of the beats even a bit further. They were native English speakers, though, and I didn’t even consider nonnative speakers. If I were going to deploy this in a real game, I think I’d want have an unobtrusive way to shorten or lengthen the “beats” between real-time printed texts–maybe a graphical slider that would appear whenever the game is in “travel” mode. Do you think that would help reduce the sense of urgency?

      The variability in reading speeds may be the best argument for ditching real-time and going with a keypress model as advocated by matt w above. Perhaps real-time is best reserved for moments when we want a sense of urgency. (“Whew, that text game made me frantic!”–I like the sound of that!)

      I think, unfortunately, that the comparison with the novel doesn’t overlay very well on IF. Novels don’t have to work hard to display texts in experiential order–the way it’s written is simply the way you experience the text. Whereas in IF, texts are deployed 1) in relatively short segments–a paragraph or two–by both convention and reader preference; and 2) in very different orderings depending on the player’s actions. Moreover, IF usually has a much stronger unity of viewpoint than “static” fiction: You see things through the eyes of the player character, and there is a kind of disconnect when the game needs to do the kinds of collapsing of time and space that are routine in a novel.

      So, I think it is hard to convey a sense of distance and movement through space in IF without using some kind of technique for slowing down time, as it were. Timed text display may not be the answer (it’s certainly not the only answer), but it is worth experimenting with, at the least. I’d love to hear ideas for improving the real-time UI, or other ideas for “extending time” that depart entirely from the ones that we’ve already mentioned here (i.e., timed text display, modal keypress-separated text display, true coordinate based movement).

  4. Thanks for the reply. I am not aware of being a non-native speaker most of the time, but in this case it felt as if I was a bit rusty in the speed-reading department.

    I think a slider may be an option. I think it was the fact that I saw the “ticking” that made it a bit more stressful. The other option, spacebar when you are finished reading feels more like sauntering blissfully rather than walking at a brisk pace.

    Keeping real-time to the actual, frantic rescue of the last monkey on the ship before the pirates sink it, is perhaps better. It is indeed a question of what feeling you want to convey.

    I see your point on the differences of IF versus fiction. I think I am too much the linear writer when I think of IF in terms of narrative, although I write and think things in scences.

    I’ve been mulling on the issue of space travel (in IF, not in reality!) so this was an interesting example and experience. In literature the travel between stars often is “insta-travel” even if it actually spans 500 years and as many lightyears. How to convey the longer travel, even if it only was half a year? Maybe setting out the time? “In the year of the Rabbit, earthtime 2511, you finally arrive at Guelph Street.”

    Time marking works well enough in novels but it feels like it is dependent on a narrator, unless you put it into the spaceship display or hearing the church bell tolling, i.e within the world. That, in some measure conveys the passing of time without being overly frantic.

    • Well, your English is extremely good and I wouldn’t know you weren’t a native if you hadn’t said so…still, I can believe that even with excellent command over a language, you might not be able to read it as rapidly as a native speaker!

      Interesting that the ellipsis “ticker” was the most anxiety-inducing aspect: I really viewed it as a placeholder for what would be happening in a graphics window (an icon representing the player moving over a map of the area). There are definitely other solutions that could be employed in a text-only situation; perhaps you could have no indication at all, though when I tested that I felt that it wasn’t clear enough to the player what was happening.

      I agree that time-marking can work well in IF, especially if you’re able to start a new chapter to mark the break. But I see that as largely a distinct issue from the sense of movement. As you suggest, travel at the scale of light-years is probably best left to a time-marked “OK, you’re there”–unless, of course, you’re willing to make the travel itself part of the gameplay (e.g., Heliopause).

  5. Whoops, I just forgot to say the thing that was actually relevant, which is that I think the speed-of-reading thing is a real issue; I was watching the dots tick by and thinking “I wish this was going faster.” Might’ve been different if I’d had to type in real time, but everything stops when you start typing, doesn’t it?

    • matt w: everything stops when you start typing, doesn’t it?

      Not when you start typing, no–only when you press Return. If I end up expanding this and doing something with it, I’d probably have some actions (such as examine) insert themselves into the real-time pulse, whereas for other actions it would make more sense for the player to stop walking before attempting the action.

      Your experience with the speed is similar to mine (as I think I commented above, the speed was slowed to a few clicks slower than the slowest test reader’s pace). Juxtaposed with Jax’s experience, it’s pretty clear that one-size-fits-all doesn’t work. Giving the player control over the speed, whether via a graphical slider or, say, a pair of function keys repurposed to act as speed modifiers (thanks to the new line input terminators functionality).

      Or I could drop real-time altogether and explore a hybrid keypress/line input model, letting the player press space to continue or press any other key to start typing line input (I think Ron Newcomb has an extension to do this)…

  6. Just as another datapoint in your speed calibration: I am a native speaker, I read fairly quickly, and I found the ellipsis ticker stress-inducing. I would finish reading the text, then watch the ticker count down and feel like there was something I was supposed to be doing, but I didn’t know what. So I agree that the specific UI is problematic.

    But I really appreciate that you cooked up this experiment. I’m also very interested in how people experience space (in real life, but also in games), and I think it’s something that IF has a unique viewpoint on. Keep ’em coming. 🙂

    • Lea: I am a native speaker, I read fairly quickly, and I found the ellipsis ticker stress-inducing. I would finish reading the text, then watch the ticker count down and feel like there was something I was supposed to be doing, but I didn’t know what.

      Ah, so maybe the main problem is the ticker itself, rather than the speed of the text! I included the ticker because text that appears independently of direct input is not generally expected in IF, and I wanted to give some indication that the game was not “locked up”. But maybe a relatively more rapid text display that simply omitted the ticker would work; after all, there’s always scrollback if you miss something. If anyone is still following this thread, I’ve updated the example so that you can type “PERAMBULATE TO LOW STREET” and see this UI implemented. (“WALK TO LOW STREET” retains the original behavior.)

      Jax: I like having the sense that the IF-world is moving along even when I stand and wait but too much of it would get me anxious that I may miss something vital. Yes, this sense of looseness–that we aren’t totally locked into the turn system–is what I like too. But I was just playing around with the MUD that George mentioned above (my first MUD experience), and I definitely felt at times that there were too many text events shuttling by in quick succession. This would be easier to control in single-player IF, but it’s definitely something to watch out for.

      I have some ideas for implementing travel messages in a non-real-time way in relation to a graphical map. That will be significantly more work to put together, but I may post it as a future experiment.

  7. I hadn’t tried the Hoist sail… game as I hadn’t before. I thought the full title was “… for the Menopause and Home” – but no middle-aged women in space, sorry… 😀 Good game, however and a nice inspiration.

    It has a different set of challenges, how to visualize outer space; eventually it became abstract, as if moving on a chessboard.

    However, back to the topic – I think the real-time experiment is worth more investigation. Some real-time strategy games (Distant Worlds comes to mind as I just read about it) do have a pause button, rendering them turn-based at will.

    I wonder if a real-time IF with a pause button function would work or if that idea is pointless? I like having the sense that the IF-world is moving along even when I stand and wait but too much of it would get me anxious that I may miss something vital. For me, the impression is enough – like the first time I encountered the thief in Colossal Caves.

    On what level do we want the real-time (impression or actual) to function? Sorry, I am probably posing more questions than answers…

  8. Irfon-Kim Ahmad said:

    It’s an interesting experiment, but I found that because I wasn’t acting to move myself from place to place through those subspaces, it actually reduced my sense of place rather than enhanced it. Specifically, it made me feel like the two locations were separated by a number of other locations whose spatial relationship was unclear and which I moved through on rails, like trying to track the precise layout and packing of a haunted house coaster ride in the dark. Also, I really wonder how something of this sort would play in an actual game where your focus was on the game rather than on the travel mechanic. I spend a huge amount of time in games moving from room to room after I’ve already explored them, looking for things, trying interactions, etc. Having movement take that much time would drive me crazy. At that point I’m not trying to experience the space anymore, I’m trying to rapidly accomplish a task.

    • @Irfon-Kim Because I wasn’t acting to move myself from place to place through those subspaces, it actually reduced my sense of place rather than enhanced it. Specifically, it made me feel like the two locations were separated by a number of other locations whose spatial relationship was unclear…

      The writing is possibly to blame for the unclear spatial relationships: more cues could be included to make it clearer where the PC is and which way he’s headed. I wonder if it really is that big an issue, though–no one else has mentioned this, and MUDs seem to spend even less time cueing when they do this sort of thing.

      Anyway, this also sounds like another vote for using the spacebar-to-proceed method suggested above by matt w and used in A New Life. I liked that well enough in A New Life, and while what I am doing here is a bit different from that game, the effect is similar enough that I feel comfortable with it.

      @Irfon-Kim I really wonder how something of this sort would play in an actual game…I spend a huge amount of time in games moving from room to room after I’ve already explored them, looking for things, trying interactions, etc. Having movement take that much time would drive me crazy.

      Do you really like running around to rooms you’ve already visited accomplishing tasks? Many games would probably do well to reduce that kind of interaction…

      Anyway, this is a relatively simple design issue–how an author approaches it would depend on the game. It would be easy enough to use these messages only the first time the player travels through a room, if that was what was wanted, or use fewer of them once a space has been explored–or require a long chain of travel messages each time, to emphasize the fact that distance is not collapsible. (Note also that the travel messages are intended for long distances, not moving between rooms.)

      By the way, one of the thrusts of the wider experiential approach I’m fumbling toward is the minimization of the descriptions–descriptions in general, not just room descriptions–in favor of smaller bits of serially presented text. In the demo, the travel texts are all restatements or more specific variations of the material presented in the room descriptions for the same rooms. Based on what you’ve said here, this will probably never satisfy you. It may not end up satisfying me either, but that’s why it’s called experimentation!

  9. […] it in. Something else this kind of thing is good for, though, is clocks. Since I’ve been thinking a little bit about timed events in IF lately, I thought I’d throw together a quick demo of an an analog clock face with sweep […]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: