Search Results for: seltani

Making navigation work

I've been playing a bunch of mobile games this spring (for no reason except that I played a lot of PC games over the winter) and I keep thinking about navigation.

Here's a navigation scheme which is common in casual first-person adventures: you always face forward. In every room, there's some number of exits, plus one invisible exit behind you. So you can go forward in various directions (unless you're at a dead end), and you can go back (unless you're at the start). If you bang the "back" button enough times you'll always return to the start room.

I don't know if this scheme has a common name; I'll call it forward-and-back. Examples that I've played recently: The Frostrune, Agent A, Facility 47.

(I'm distinguishing forward-and-back from the common scheme of third-person adventures, where the room contains several exits but they're all visible and the character avatar walks from one to another. That's different; it has no sense of "forward" or "back", although it may have a sense of "left and right".)

Forward-and-back has some obvious advantages. The player always has the same orientation in every room, so the game only needs one image of each room. (Important for a low-budget game where the backgrounds are hand-illustrated rather than rendered from a 3D model.) If the player gets lost, they can smack "back" button until they're not.

The scheme doesn't really support complex 3D environments, or puzzles based on 3D environments. You can't move your viewpoint around to understand 3D relations within a room, and 3D relations between rooms are usually obscure. (The "forward" direction is usually different from one room to the next!) So the scheme has limitations, but okay, every scheme has limitations.

But after playing a bunch of forward-and-back games, I have a complaint. I always feel lost. Or, no, "lost" is wrong. I always know where I am. I have a mental map (a tree, of course). I usually remember what's behind me and what rooms are ahead. But moving around is a somewhat laborious process. These games always involve lots of running back and forth, and the running around takes effort; it doesn't feel automatic.

Compare this to the parser IF navigation scheme. IF compass directions take a lot of crap ("artificial", "unintuitive" -- here's the most recent of many threads on the subject). But, by dooley, if I want to get across Hadean Lands I type "N <enter> N <enter> W <enter> W <enter> W <enter> W <enter> S <enter>" faster than I can think. (Even in a game like HL which supports "GO TO GARDEN", I usually use the compass directions.) Thus, when I'm working on a puzzle, I'm always working on the puzzle. Even if I have to run around, I have no sense of being interrupted by the busy-work of navigation.

What's the difference? Why do six clicks in a graphical adventure feel like more work than six keyboard inputs in a text adventure?

My current theory (certainly overgeneralized): the forward-and-back scheme doesn't give you enough context to think about long journeys.

For the journeys in HL (and other parser IF), I plot out the entire course before I start typing. I enter the commands without reading the responses, or reading just enough to verify that I'm on the right track. (An unexpectedly locked door will stop me, but I might overrun by a few commands before my fingers stop.) But in the forward-and-back games, I can't do this. I enter a room, look around, pick out the right door, click it, and repeat. I can't click-click-click across the game world.

Of course the game designers want to give me context. They post signs; they make buildings visible in the distance. But this is rarely consistent, and it usually only signposts the next room -- not the destination of my journey. If I'm standing at a fork in the road, I have to visualize the world map, think about the next room, and then remember what the path to it looks like. That's the extra step.

Okay, that's a hypothesis. Let's test it against some other game schemas.

In the classical first-person adventure, all movement is "forwards", because you can turn around within a room. The original Myst had clunky slide-show turns, but the genre soon upgraded to 360-panning views (Myst 3) and then to fully 3D worlds.

Now, running around these adventure games is never trivial. There's always a lot of clicking (or holding the "run" button). It can take time. But it doesn't require much thinking, because (once you've learned the map!) you just orient yourself and go. The game gives you the context to look around, to build the entire world map in your head. You see the fountain across the lawn, but you recall that the clock tower is visible down the fountain path, so it's ahead and on the left, so... and the next several steps are clear.

(I am, of course, speaking from the privilege of my own head! I have excellent spatial perception and visualization skills. So this whole analysis may be bunk to you, but I have to work this out for myself first...)

Here's Submachine 1. This is a first-person view, but most of the navigation is up-down-left-right rather than forward-and-back. The world falls into a regular grid (or a few regular grids joined by "ahead" doors). Result: easy navigation! I can click-click-click around the world.

(Then the author makes the later Submachine games really big -- scores of rooms -- which makes the navigation harder again. But at least the difficulty buys me more game.)

In Seltani, my hypertext MMO/MUD, I struggled to make Myst-like physical environments accessible in text. It almost worked -- but traversing large Ages is laborious, even for me. Even the worlds I created! I enter a room, look around, pick the right hyperlink...

Isn't this where we came in? Navigating in Seltani feels exactly like navigating a forward-and-back graphical game -- at least to me. I can learn an area well enough to click the links faster, but it never gets fast; I can never click-click-click through the world. And I think the problem is the same: not enough context, no way to visualize the entire space. It's the feeling of trying to cook dinner without my glasses.

Here's a map of the area described above. Better, right? If I ever redo Seltani, I'll add clickable maps to all my Ages.

Finally, an odd case. Vignettes is a puzzle game with no physical space at all. You "explore" by transforming objects using Escherian perspective tricks.

I played a bit. Then I put the game down and said "Nice concept, but the navigation is terrible!" Is there navigation? Well, there's a map, as we see above. The map shows known, nearby transformations: from the fire hydrant, we can reach the trashcan and the pillcase.

But again: not enough context. The game challenges us to find every transformation, but the map never shows us the whole world -- not even the known world. Missing links are shown as question marks, but only the nearby ones. If the local zone is complete (as above), how do we run across the world to a new one? The map gives us no help. It's not even a clickable map; we have to redo every transformation to explore, even the known ones.

(Added frustration: one-way links. If you're trying to move across the map, you can fall down a chute and land back where you started.) (And even more: the chest metaphor lets you jump instantly across the world, but only to a region that you've completely mined out! It's useless for reaching incomplete regions, the ones you need to reach to finish the game.)

(For all this complaining, I did pick Vignettes back up and finish it. The map is small enough to be playable despite its faults. But I nearly had to draw a paper map to finish -- the unforgivable sin of a mobile game.)

So what qualities make a game truly navigable? I say:

  • the game must let you understand the entire shape of the world;
  • the game must let you apply that knowledge to move across chunks of the world without stopping to think.

There are plenty of strategies for each point. A large-scale map with "click here to jump" buttons will always solve the problem, but it's not the only possibility. The designer may not want jumping; they may want to preserve the experience of continuous movement. Or they may not have the resources to implement the jump button. (At worst, it can require implementing all your lock-and-puzzle logic twice, which is a minefield of potential game bugs. Ask me about Hadean Lands...)

A large-scale map without interactivity will help if the player can connect map features to game-world features. (This is where my Seltani district map falls short; map symbols don't match up well to text.)

(A player who draws a map is certain to understand the shape of the world! But asking the player to draw a map is pretty much unjustifiable if the game has any graphical capability at all. Grumble at these modern times or embrace them, as you like, but that's where we are.)

In a graphical environment, being able to see from one area to another is good; being able to look around and see the world from many angles is also good. Both together give the player a great deal of context. Regular grids, top-down views, and consistent viewing angles all help the player make sense of the world.

And finally, all these concerns apply even to completely abstract maps which have nothing to do with physical space. A limited horizon and inconsistent directions will leave a player feeling lost, even in a skill tree or a branching plot diagram.

Posted in Zarf on Games | Tagged , , , , , , , , , , | 4 Comments

Indiecade happened and it didn't kill me

We showed off Seltani at Indiecade! To lots of people. Lots and lots. Not everybody was interested -- it was, after all, a text game in a hall crowded with flashing lights and VR headsets -- but plenty of people thought it was worth a look. Some were Myst fans (or even Myst Online fans); some were old MUD users; some were familiar with Twine but had never seen a multiplayer Twine-like.

I gave out stacks of postcards with this map I did of the Seltani District (the game's initial hub area). It had the URL on the back, obviously. (Note to self: next time I reprint the postcard, boldface the URL.)

In a wiser and more organized world I would have a story to tell about Indiecade, but it's not, I don't, and I'm moderately exhausted in a hotel as I write this. So you get lists.

People I met or re-met (in no order): Tory Hoke (of Sub-Q Magazine), Squinky, Zak S, Rich Lemarchand, Tablesaw, Sam Barlow (Her Story won the big festival jury prize), Cat Manning, one of the Chaosmos designers (I have lost which one), Zoe Quinn, Naomi Clark, Mark Marino, Matt Weise, Patrick Smith (Vectorpark), Jim Munroe, Kyle Seeley, Michael Mateas, Michael Carriere, and a lot of others who I am failing to bring to mind because it was a packed weekend.

Games I recognized, played, or intend to check out: Emily Is Away, Desolus, Kairo, Nevermind, Museum of Simulation Technology, Darknet, Metamorphabet, Pygmalion's Challenge, Pavilion, Walden, The Meadow, Line Wobbler, Memories of a Broken Dimension, Thumper, Consentacle, Red and Pleasant Land. This too is an incomplete list. Very, very incomplete. I am not knocking your game if it's not mentioned here.

Bonus points to Sam Barlow for trying to get me to play Consentacle. I declined. It's not you, Sam, it's me.

I am grateful to everybody who came up and introduced yourselves to me. Or re-introduced yourselves to me -- I'm bad at faces. (Have I told the story of how I've met Chris Klimas three times and each time thought it was the first?) I had interesting conversations with writers, teachers, musicians, artists, and (obviously) gamers and game designers. I collected a centimeter-thick stack of business cards (which helped me write this post, at minimum). I had a gelato.

Special thanks again to Carl Muckenhoupt (of Baf's Guide, fondly remembered) who volunteered to help me out with the Seltani demo for hours and hours.

Oh, and I visited the Museum of Jurassic Technology! That was... a trip. Describing the Museum is probably the least useful thing one can do about it, so I won't.


After I wrote the above, as I waited in the airport for my flight home, I saw this post from one of the Indiecade organizers:

Implicit in my work with IndieCade was a belief that conferences—the talks, the panels and the interstitial moments of community—are vehicles for change. Looking back at the last six years, I no longer believe this is a meaningful way to sustainably support marginalized communities. And so I’ve made the decision to step down from my conference co-chair role [...]

[...] For me, a big motivation for volunteering my time to co-chair the IndieCade conference has been giving marginalized voices a platform to share their work. Events like IndieCade and GDC’s diversity track give these developers and critics a platform to share their work, but I fear these events are not providing sustainable, long-term benefit to those outside academia and game development companies.

[...] But within marginalized communities of gamemakers, outside the academic and game development ecosystems, it is unfair to assume everyone can afford to take on the opportunity costs and financial burden of attending a conference. Even with the free conference pass given to most speakers, travel, lodging and food can easily eat up $1,000 or more for a weekend event. Over the last couple of years, IndieCade has made efforts to provide some financial assistance to conference speakers who need it, but it has been a token gesture at best [...]

(--John Sharp, Conferences and sustainable diversity)

(I've selected just a few lines from his post. Read the whole thing.)

That had a wee bit of resonance for me, let me tell you.

Obviously I am not "marginalized" in most senses. I'm a straight white guy with a CS degree and a software industry background. I have savings to fund my attempt at an indie career. But still, this is exactly the stuff I think about. I'm not in academia; I do not work for a game company; I have not achieved sustainability. Zarfhome Software has never made rent for me for more than a couple of months in any given year.

I submitted Seltani to Indiecade on a whim. (A whim with a $100 submission fee!) When it was accepted, I did the calculation: will this trip be worth it? It's a business decision. Crudely, I was gambling that the contacts and handshakes and business cards I collected would add up to more than the cost of travel, hotel, prep work, and the time I took from other tasks. (Which is, yeah, over $1000.)

You can't measure that outcome on the spot. The payoff is in future projects and potential jobs. I'd like to be optimistic about this, but here's a conference organizer saying he's not. He thinks I wasted that grand. (And, again, I'm one of the folks who can afford to lose it. Plenty of people can't.)

As I said on Twitter -- the most valuable "networking" I did this weekend may have been going up to a Boston compatriot and saying "Hey, your company does iOS work, right? I might need some of that next year." Not game work, just pay-rent work. And I didn't have to go to Indiecade to talk to him; I see him around Boston all the time.

So this is all depressing in various ways. I can still be optimistic, but it's a nervous optimism. Going out to dinner with IF people was fantastic, but what did we talk about? Sustainability. Money. Jobs. Trying to figure out what we're doing with our lives.

(Also community tensions within IF and IF-adjacent groups, which is not the same issue but touches on it. There's been some arguments recently about the role of IFComp in the modern indie-dev world. When IFComp started in 1995, nobody was asking "Should I enter my game in this competition or sell it on my web site for money?" That just wasn't a question on anybody's radar. Things have changed.)

John Sharp's article goes on to talk about positive possible directions. It's not a surrender post. He likes IndieXchange, the pre-Indiecade biz-dev event, which I also liked and found valuable. (It didn't turn me into an instant business success, but there were good talks on marketing and on the dirty details of outsourcing audio for your game.) (I might have to outsource audio for a game someday, right? I can't get away with banging the cheese grater forever.)

There may be more possible paths in the future. I hope so.

And look! I've signed up for GDC in March! The last GDC I went to was in 2012, and that gamble did not pay off. I hung out with friends, it was fun, but was the benefit worth that $700 Summits-and-Tutorials pass? Plus plane and hotel? I think it's safe to say "heck no."

But here I am taking another spin of the wheel. I think the odds are tilted my way now. I've got the more modest Indie-Summit pass -- not that this saves much compared to travel costs. Mostly, it's that I've met more people and done more work, so I'll have a wider base of contact. (I'm bad at meeting people, but I can tell that four years of putting myself out there have slowly accumulated some results. See lists above!) I'll have finished Flashpaper by March -- I'd better have finished it by March -- so I'll have a game to promote.

Maybe I'm stupid, but this is the point in my life when I have to be.

Posted in Zarfplan | Tagged , , , , , , , | Leave a comment

What Zarf is up to, autumn edition

Yes, I've been running quiet for the past couple of months. I've been working away on various projects. But soon I will enter a season of furious public activity! While also still working away, because the projects aren't done yet.

First, as I recently posted, I will be at IndieCade to show off Seltani. That's Oct 23-25 in Los Angeles. Extra thanks to Carl Muckenhoupt (Baf of the fondly-remembered Baf's Guide) who will be helping me demo Seltani that weekend.

There's also an IF meetup on Saturday night at the IndieCade Night Games festival. I'll be attending that too.

The WordPlay festival of narrative games and IF is back in Toronto on Nov 7th. I'll be there, along with other stalwarts of the IF scene including Emily Short, Sam Barlow, Christine Love, and (our blog-host) Jason McIntosh.

(Is "stalwarts" an okay thing to call people? I don't always know.)

Let me also mention the Boston IF meetups (at MIT) on Oct 12 and Nov 11. Emily Short will be visiting for the November meeting.


Now the more exciting report: projects in progress.

I showed off a prototype of The Flashpaper War at Boston FIG a couple weeks back. That went great! My table didn't draw enormous crowds -- the perils of demoing a couple of meek ipads amid the hall's obstreperous beeping and flashing. But people kept sitting down and trying it... and when they tried it, they generally sat and read/played through several pages of interactive text. Amid all the beeping and flashing! So that's a good sign.

I must admit that Flashpaper is still only a prototype. (Although it's a much more polished prototype than it was before FIG!) The web page says "Coming later this year," and I intend to stick to that, but there's a lot of writing and adjusting to do before it's ready to go.

You may have seen that the new Apple TV is about to ship, and it will support third-party apps. I'm very excited about this; I've been working through the dev tools to see how it works. (Summary: very similar to iOS. No surprise there.)

I've just finished up a draft of Pocket Storm for Apple TV. Is this not the perfect fit? Push button -- soothing rainstorm audio in your living room. Or cricketsong and distant thunder, if you prefer. If all goes well, Pocket Storm will be among the first wave of apps available when the new TV box goes on sale.

(If you already own Pocket Storm for iOS, fear not -- you'll be able to download the Apple TV version for free! One purchase covers both platforms.)

(I know, "Pocket Storm" isn't the best name for a set-top box app. I couldn't think of anything better, I'm afraid. "Living Room Storm" is all wrong.)

So what else would make a good Apple TV app? I'm thinking that Hadean Lands is probably not ideal. The UI is not built for text input, and while you could attach a Bluetooth keyboard, most users won't. So parser-based IF is probably not going to fly. (Flashpaper, on the other hand... we'll see.)

I'm also taking a look at Meanwhile. I'll have to see how the UI works with a remote control, and of course I'll have to consult with Jason Shiga about it. But it could be sweet.

That's all for now. Keep an eye on this blog for things shipping. I'm eager to get to the shipping part.

Posted in Zarfplan | Tagged , , , , , , , , , , , | 2 Comments

Seltani at IndieCade 2015

A very quick note to say that Seltani has been selected as an IndieCade festival nominee!

(Among many other recent indie wave-makers such as Her Story, Kerbal Space Program, Plug & Play, and Prune.)

This means I will be in Los Angeles for the IndieCade festival. (October 23 to 25.) I will be showing off Seltani. Showing off a MUD in the middle of a modern games festival! I don't even know what that means!

(Well, I've demoed Seltani in public before, so I have an idea what it means. But never on this scale.)

I am proud, humbled, and not a little freaked out. Further details to follow.

Posted in Zarfplan | Tagged , , , , | Leave a comment

Various world models in IF

Another question from the tweetzone: "What are the significant differences for object/rooms + hypertext/choice vs parser + web?"

Here's (more of) that strand(s) of conversation:

I want tools to create a hypertext based game that still has a room and object model for the engine. Any suggestions? (@KalevTait)

I've done it (in Glulx) but the game design space is poorly understood. (As compared to parser+object model.) (@zarfeblong)

this just means it needs more research (@emshort)

What are the significant differences for object/rooms + hypertext/choice vs parser + web? Maybe I’ve misunderstood. (@jurieongames)

Emily's further responses:

parser + web = you still type. world model + choice = you're selecting what to do from options based on model (@emshort)

Oh, and I guess choice-based games tend to come from a CYOA, paragraph-based design approach? (@jurieongames)

often. even if they don't, enumerating all the options that would exist with a parser gives you a too-long list (@emshort)

so you need then to build a hierarchical interface or else have a smaller tighter verb set, for instance (@emshort)

I agree with Emily here (as usual), but I want to back up and talk about ways I've approach IF design.

Parser IF is a well-explored field, which started with Adventure and expanded through generations of... Adventure imitators. That's not a criticism, that's history. The MIT gang tried to make another game like Adventure; so did Scott Adams, albeit with more limited resources; so did other groups. Then in the 90s, many hobbyists tried to make more games like the Infocom set (etc), and built tools to accomplish that. What rooms are, what objects are, what the world model is, what interactions mean -- all go back to Adventure in a very direct line. I'll assert that 75% of the game mechanics in today's parser IF can be found in Adventure... in rudimentary form, sure, but present. And 75% of the rest can be found in Zork.

That's the form I grew up playing, and then writing. Not the only form, but the closest to my heart. But -- when I build a different kind of game, I'm not trying to approximate parser IF in a different-shaped bottle.


Like I said up top, I've created a hypertext game with a room and object model. That's Bigger Than You Think, a game that I wrote for the 2012 Yuletide fanfic exchange. This has a hybrid UI: you can click on links or type (single) words at a command prompt. It has rooms and an inventory.

(I'm going to assume that you've played BTYT, at least a little bit. If you haven't, hit the link and flip through a few moves.)

BTYT is not a parser game turned hyperlinky. I didn't design it that way and the underlying assumptions don't match the Adventure model. It's much more like a CYOA game-book with added inventory features.

Let's look at rooms. BTYT seems to offer a classic Adventure-style layout: each "page" is a location, and you have a choice of exits, each of which leads to a new location.

You'll quickly notice, however, that there's never a choice to "go back where you came from". Nor is there a sense of stopping to take action in a given location. A page is really an event, part of the story of an exploration into a cave. (The narration of the event includes entering and looking around.) You are always moving towards an endpoint; you cannot explore at will, except by using the "start over" option.

So the model is really The Cave of Time, the first of the "Choose Your Own Adventure" gamebook series. That book offered the notion that each page was a physical location in a cave -- but it didn't really stick to it, because pages in a book just don't represent Adventure rooms very well. Pages want to be sequenced events. (Later books in the series entirely discarded the idea of representing a physical maze. Our common notion of "CYOA game" is all about branching events, not branching tunnels.)

What about inventory? If you poke down certain branches of BTYT, you can find some objects to take -- a crowbar, a rope; "medium-sized dry goods" in the Adventure vein. But again, these are not manipulable objects in an Adventure-style world model. You can't put them down or try different actions with each one. Instead, they become an extra set of CYOA-style options -- available to try in each scene, until you find the right situation for each one.

(Note that the game header lists the current movement choices on the left, and the current inventory choices on the right.)

Paper gamebooks can't easily offer an inventory in this way. It's the experimental facet of BTYT. But it's not an Adventure-style inventory. I designed it to fit in with the CYOA model; it's what a gamebook choice-list would look like if it could be dynamic.


Seltani takes yet a third approach. Seltani is a hypertext environment inspired by Myst Online. The Myst games tend towards richly detailed environments but a sparse inventory system. You are expected to spend your time exploring the world, and then manipulating pieces of it "in place". You don't typically apply arbitrary tools to arbitrary targets.

Therefore, I wanted to create a choice-based system in which nodes are typically locations. You'll stop in a location to examine many of its parts, and perhaps pull some levers or turn some knobs. This required a multi-window UI: an environment window which describes what's around you, a detail window which describes the particular item you're paying attention to, and a history window in which events (and environmental changes) scroll by.

Note that this is different from the Adventure UI, where everything happens in a "history window". In parser IF, looking and examining are actions -- the response is a description at that moment. If you LOOK twice in a row, the world may have changed. Seltani's descriptive windows, in contrast, are always current.

(Some parser IF has tried permanent LOOK or INVENTORY panes. The Scott Adams games of the early 80s worked this way, for example; Beyond Zork also offered such a mode. However, these experiments have not caught on in the parser-IF community.)

Seltani has something like a world model, although it's very flat. It's got worlds, locations within a world, and that's about it. The built-in infrastructure is mostly about the portals between worlds rather than world contents.

Significantly, Seltani doesn't have objects or an inventory system. Why not? Well, say it did. What would you do with objects? "Actions" in this UI are hyperlinks which either examine or manipulate the world. If you carried a sword from the Living Room to the Kitchen, and a "sword" hyperlink were (somewhere) available, you could reasonably expect to examine the sword. But that's all! There's no way to express dropping the sword or smashing a window with it.

I avoided this problem in BTYT by discarding the idea of "examine". In that game, a "sword" hyperlink always means "take the sword" (when you first discover it) or "use the sword on something here" (if you're carrying it). I restricted the design to have at most one whackable target per location -- and you never drop anything except in its final use-location. Furthermore, BTYT is made of simple objects which do not require close inspection. So a single-link inventory works okay. But Myst games are full of detail; the BTYT model would never have worked for Seltani.

This is not to say the Seltani model can't be extended that way. The engine supports an extra "world pane" which remains visible throughout a world. The world designer could put an inventory list there. (Or, equivalently, tag an inventory list onto every location description in the world.) You'd have to decide what it meant to click on an inventory link in each location -- essentially inventing your own world model.

What you can't do is carry "objects" from one world to another. Seltani assumes that worlds are independent. It's hard enough rigging up one Age without figuring out how to respond to artifacts from every other Age!

(No, worlds aren't necessarily independent. You can build two Ages which are interconnected and share data. But that gets beyond this scope of this post.)

I should also note that the Seltani model can be extended in the other direction, too. You can build CYOA-style (or Twine-style) worlds, where nodes are treated as events rather than locations. To do this, you have to avoid relying on the event window. You also have to also lock out Seltani's multiplayer features, since a group of chatting players are implicitly presenting events in a location.


I've talked about two of my choice-based game designs, and how I try to craft each one so that the game and the UI match up.

One sometimes sees attempts at "hybrid" UIs -- trying to present a text game with both command-line and menu-based interfaces. You won't be surprised to hear that I have no patience for such experiments. I'd ask myself: does the game's experience depend on the parser interface? If it does, it's required! And if not, get rid of it! -- it's a waste of your time and the player's.

(But what about BTYT? I'll tell you straight up: the command-line interface on that game adds nothing. I should have gotten rid of it. I left it in to support MUD play via ClubFloyd, which is a very minor use case -- it should not have influenced me.) (Anyhow, the right approach would be to update Floyd to support hyperlink input. The RemGlk library makes this possible.)

The same goes for attempts to "port" parser games to a choice-based UI. I have nothing against remakes of a game. (Coloratura, for one example, is a parser game that was remade by the author in Twine.) But this is a design process, akin to translating a book into a movie or vice versa. You can't slap a new UI system onto a game and expect it to be "the same game but now accessible to more people".


I intended to wrap this post up by responding to Jon Ingold's post: Parser as Prototype: why choice-based games are more interesting.

My reaction is "how fundamentally wrong-headed". But if I try to support that, I will need so many qualifiers that I'll fly into the weeds and sink. I mean:

  • The post is from a year and a half ago, which is decades in Internet Time
  • Jon recently commented "Def not talking about approximating a parser game. Rather, parser was a step one to being able to design choice games this way" (@joningold)
  • Jon's design process is his process and I'm not going to step on it
  • The post is about the Sorcery! game series, and I haven't even played those
  • I don't assert that parser IF is some golden standard which other models need to approximate (much less measure up to)

So there's no fundamental disagreement -- rather, I think the post is weirdly framed to make an apology which doesn't need to be made.

I have played a lot of 80 Days. I can confidently say that it's not an approximation of a parser game. 80 Days is its own kind of IF, and its interface fits it very well. It doesn't have a "world model" in the sense of a space to manipulate objects. Its world model is, you know, a model of the world -- big and round and covered with cities -- and your inventory is meaningful in the space of planning your trip.

Note the word "planning". Much of the gameplay of 80 Days involves collecting, buying, or selling objects. But they are not used in the way that, say, Hadean Lands uses objects -- as mysteries whose places in the world come as crucial discoveries. Rather, their value is cumulative and largely predictable. When you buy a didjeridoo, you know where it's most profitable to sell it. If you miss that stop, well, you can probably sell it elsewhere -- and there are other ways to get cash anyhow. Other objects act as bonuses in the mini-game of learning new routes; but again, there are lots of ways to learn routes, and your piece of shortbread is never going to spell the difference between success and failure.


While I was finishing this post, the XYZZY Award finalists were announced. As it happens, Hadean Lands and 80 Days were each nominated for five awards.

It would be meretricious to explain that this will be settled by battle royale of alchemical Kaiju versus Victorian steam-mecha, as piloted by myself and Meg Jayanth. Mostly because With Those We Love Alive was nominated for eight awards, so you have to amend the battle with Porpentine and Brenda Neotenomie drawing mystical runes all over both of us, which makes it all confusing and hard to film.

I will instead wish good fortune to all the nominees, including the above-mentioned and also Kevin Gold, Sean M. Shore, A.D. Jansen, michael lutz, kaleidofish, Sam Ashwell, Steph Cherrywell, Emily Short, Lynnea Glasser, C.E.J. Pacian, Jason Dyer, Ade McT, Carolyn VanEseltine, Simon Christiansen, Mæja Stefánsson, Graham Nelson, Juhana Leinonen, Jim Munroe, Chris Klimas, Nicky Case, Kateri -- whew! I hope I didn't screw that list up.

Tagged , , , , , , , , , , , | 3 Comments

Zarfplan: June is getting there

Happy Canada Day (and pretend I said that in French). 82 out of 90 rooms complete.

I'm not really measuring progress in rooms any more. There were only a few days this month that I'd mark as "wrote some rooms". June was mostly spent on underlying mechanisms which are not located in specific rooms; they're spread through the game. I don't want to get spoilery at this late date, but I have implemented large swaths of code for:

  • dragons
  • human figures
  • shadows
  • doors that change state
  • progressive starting conditions
  • ritual environments
  • looking through magical lenses at all sorts of things
  • the alternative to sheets of paper
  • the problem of trying to create two doses of some potion when I've only implemented one
  • a cigarette lighter

The cigarette lighter was a late addition. Some rituals require you to set stuff on fire. There's a couple of fire sources in the game, and you can light a bit of wood and carry that around, so it's all workable. But carrying around flaming bits of wood turned out to be annoying. They burn out. You have to get more. It felt like an imposition. So yesterday morning I said "Why doesn't this chem lab have handy butane lighters, anyhow? Real labs do."

(I don't call it a "butane lighter", or a "cigarette lighter" either, but a pocket flame source is a pocket flame source. Perhaps you have fond memories of So Far.)

So I can't put the nail in the room-list this month, but I have checked off lots of the game's remaining tasks. I am still fairly confident that I will have a complete, testable game at the end of July. That could slip partway into August, because every task list has a "last 90%" that trails off into infinity. But the game is filling out fast, and it feels like I finished half of the remaining job last month.

I am excited. And nervous.

Again, there's a chunk of work to do after the "complete game" milestone. I'll need to polish the iOS interface and build its eccentricities. (I'm thinking a tappable encyclopedia of rituals, which updates as you discover them. That will save a lot of "RECALL TARNISH RITUAL" commands. And then there's the tappable map, of course.) So August at least is scheduled for that stuff. But I will have beta-test reports coming in as I do the iOS work, so I can parallelize.

Other June news:

For the first anniversary of Seltani, I posted a little puzzle Age called Salvanas. (That link will take you straight into the game world, although you'll have to sign in to solve everything.) No story, just a collection of Myst-style puzzles -- only in text, of course. Statistics indicate that only seven people have completed it to date! Surely this can be improved.

I also got my butt in gear and posted the source code for nearly all of my Inform games. I've always had the source for Hunter, Shade, and Heliopause on my web site; I've now added Dreamhold, Spider and Web, So Far, and several others. (All are under a "for educational/academic interest" license rather than an open-source license.) If you're curious about Inform 7 source code -- or Inform 6, or actually Inform 5 for the oldest ones -- dive on in.

I've been taking a look at new distribution platforms. If you saw Shade on itch.io for pay-what-you-want, would you pay a dollar? I could set that up. There's also the Humble Store, although that's got an application process and their developer FAQ is a bit thin.

And finally, the 2014 Interactive Fiction Competition is open! Gaze in awe at the brand-new web site, built and run by our blog-host Jmac. Sign-ups and prize donations are now being accepted.

See you at the end of July. With a little luck, I will be into the final stage of development by then.

Posted in Zarfplan | Tagged , , , , , , | Leave a comment

Purposes of archiving

This was a big week for IF events -- Spring Thing ended and ShuffleComp voting started. There were unexpected wrinkles in both of them, but I want to discuss the less dramatic one.

ShuffleComp is a music-themed game-jam-like event. I won't do the whole spiel; basically you get a song list and you're supposed to write a short game inspired by one of the songs. I didn't enter, but Jmac did, and he got all electrified about the idea of using Seltani. (Which is... do you read this blog? It's my multiplayer text Myst MUD project from last year.)

So Jmac implemented his idea, and that was great until he re-read the rules and saw:

The only restriction on platforms is that the game you submit must be playable as-is, not reliant on being hosted on a specific server or website. (This doesn't forbid hosting elsewhere - but if your game breaks if hosted on the IF Archive or played offline, that's a problem.)

Our topic for today is: why is the IF Archive, and how does that role change as IF changes?

(Spoiler: I do not have tidy answers. Best I can do is pare the questions into neat slices.)

(Footnote: The ShuffleComp organizer wound up disqualifying Jmac's game, with apologies all round and no ill will. Jmac has posted his game link on his own web site. You should jump into Seltani and try it.)


That ShuffleComp rule implies (and supports) a particular view of how games are to be managed. People write games; the organizer collects them; the organizer posts them as a big zip file; players download them and play them; the Archive saves them forever. There may be additional affordances for online play, but the big zip file is fundamental.

This set of assumptions is neither universal nor arbitrary. Various events and competitions in the IF world have different rules and models. But they generally represent the general consensus agreements of the IF community, which include "long-term archiving is good" and "players should be able to save playable copies of games".

...Except of course "the IF community" covers a lot more ground than it used to. The IF Archive accepts Twine games, but the Twine community has no general consensus that all their games should be uploaded to the Archive. (Some authors do, the majority don't.) There are hosting sites for Twine games (e.g. philome.la) but I don't know if they are operated with the same assumptions of long-term archiving.

These are technical issues as well as cultural issues. Or, I should say, cultural issues define technical issues. IF games in my world can nearly always be distributed as simple files -- one game, one file. Why? Because I wanted a way for people to upload IF games with graphics to the IF Archive! A single-file format fit the way we did things in the 90s, so I wrote up the Blorb spec. That let us keep doing things that way. But Twine came out of a different community.

(Okay, Twine came from Chris Klimas who was also in our community in the 90s. Nonetheless -- different goals, different needs.)

Obviously, Seltani also breaks the one-downloadable-file assumption. Let's not get into the question of whether Jmac's game needed to be built in Seltani. Assume that in the future, more IF will come along that undermines our archiving assumptions. We can imagine many possible reasons:

  • Inherently multiplayer games
  • Games that draw on real-time Internet data (Twitter, current news headlines, etc)
  • ARG-style games that are hosted on social media services for reasons of authenticity
  • "Living" games, where only one "live" copy exists and is passed from player to player
  • Games built in proprietary web services
  • Commercial games, where the author does not want free copies distributed
  • Games that run afoul of parochial laws
  • ...?

These are not hypotheticals in the IF world. Consider Blueful, Winterstrike, Naked Shades, the whole Versu story, etc.

The question is, how do we support our desire to save stuff without stifling or rejecting IF in these categories?


Archiving covers many needs, so let's split that up as well.

  • Long-term preservation: you want to play a game years after the original web site has vanished.
  • Short-term offline use: you want to download a game and play it without direct Internet access.
  • Medium-term reference: you are writing a web page about IF games (i.e. your games, or a specific competition) and you want to link to the games without hosting your own copies.
  • Discoverability: having all games on the same web site makes it easier to find things.
  • Academic study: you want to learn how a game was constructed.

We should note that the IF community (and IF Archive) are not equally interested in all of these things. The Archive is famously terrible for search -- or it was, until IFDB came along. (And IFDB can index games anywhere, so it does not directly boost the "all games on the same server" goal.)

Also, while we're fans of archiving games, there's no broad agreement to archive source code. Future academics may be more interested in source files than in game files, but most game authors don't upload it. (I have posted source for some of my games, but on my web site rather than the Archive.)

(Ironically, Twine is more accessible in this way, because Twine games are constructed in Javascript. They always contain their own source.)

Here, too, culture influences goals. And vice versa. It's not a stretch to say that the IF community-as-we-know-it is the Archive; we're the people who have this shared history. But also: by clinging to this shared history, we are conservative. (In all senses.) We are biased against completely new solutions, because they don't fit our models.

So we come back to the topic: how do we proceed?

The immediate answer is, as usual, save something. Save some files. Seltani has an export facility, so you can get the "source code" of your Age. It's not playable (since I never got around to an import facility) but it may make an academic happy someday.

Besides, I will write that import facility someday. Then it will be easier to try out Seltani worlds offline. Not easy, because the software is a hassle to set up -- but if my server dies someday, somebody else could reinstate some part of it.

This demonstrates the next answer, which is that if you're designing an IF system... think about this stuff. There are no requirements, but there are questions. Does it make sense to export source? Does it make sense to build a single-file package of a game? Can you document your format? (You've already thought about whether you can be open-source; that question hovers around every software design project.)

I will say, from the perspective of having done this for twenty years -- the history is important. I can talk about the games I wrote in 1995 and people can play them. Twine was invented five years ago and didn't start to boom for a couple of years after that. In 2030, the early history of Twine will be important! People will want to know what was going down! That history is part of what you are building today; don't neglect it.

Okay end of lecture.

I expect that IF events will continue to say either "must be archivable" (like ShuffleComp) or "is your game archivable?" (like IFComp). All the reasons above apply. Maybe we'll even make more of a swing towards releasing game source code.

I encourage people to chime in on this. Which of the above goals of archiving are important to you? Or did I miss some? What games have come out that slid past the IF community because they didn't fit our way of thinking?


(See also previous post: Everything I know about digital preservation.)

Tagged , , , , | 6 Comments

The first Seltani Age jam!

Seltani has more or less graduated to beta status. (Fanfare, applause...) Note that I've dropped the "dev"; you can now reach the server at its permanent home, http://seltani.net/.

To celebrate this, I am declaring an Age Jam! Stop by, build an Age, show it off. It doesn't have to be a prize-winner. In fact there will be no prizes. This is an opportunity to try the tools and get some feedback.

I'm not going to get formal about the rules, but I do want to have some fun with it. Therefore, a schedule!

  • Sunday, Nov 10, 1 pm Eastern time: Opening ceremony in the Seltani district plaza. I announce the theme: "Remaining Light".

(The plaza is in the Seltani district. Sign in, link into the Cavern, follow the path along the shoreline and then head right at the fork. Can't miss it.)

(The theme is just for inspiration. Interpret it however you want.)

  • Nov 10-23: Work on your Age! (Or Ages; multiple entries is cool.) When it's ready, add it to the bookshelf in the Seltani plaza. Or if you want to go for the dramatic reveal, wait and add it on...

  • Sunday, Nov 24, 1 pm Eastern time: Wrap-up. Meet back in the plaza, start visiting Ages. We can have group tours over the course of the afternoon, and then hang out and discuss what we've seen.

(I know that the meeting time is not ideal for everybody in every time zone. I have schedule restrictions too, so I just picked a time. If you can't be at either ceremony or both, I apologize -- follow along on the blog or the forums.)

I will be around these on-line areas (including Seltani itself) to answer questions during the two-week period. Hope to see you there.


Update: the entries! We have three. More may be offered; at least one Writer said he was working on something but not finished.

  • Vashmursë (by Pavitra) -- a nifty timed-exploration idea.
  • Télos (by Sandor) -- exploration.
  • Xical (by me) -- a small puzzle.

These links will add a page directly to your linking booklet, if you are signed into Seltani. If not, you'll have to sign in first.

Tagged , , , , , , , | 3 Comments

RealMyst update news

Twenty years ago yesterday, Myst showed up on store shelves for the first time. Not a bad start to an era.

Myst-related news has been thin recently, but Cyan took the anniversary opportunity to announce that they're working on a new update of the classic game: RealMyst Masterpiece Edition. Their news post includes three preview screenshots.

Myst has been ported and reimplemented a bunch of times. If you've lost track, here's a very incomplete history:

  • 1993: Original game ("slideshow-style"), on CD-ROM
  • 2000: Myst Masterpiece Edition (same style, but higher-res renderings)
  • 2000: RealMyst (3D environment, free movement, added "epilogue" Rime Age)
  • 2009: Myst for iOS
  • 2012: RealMyst for iOS (using the Unity engine)

This new version presumably also uses Unity, building on the work they did last year. However, it will target desktop machines (Mac/Win) and look much nicer. As is Cyan's recent habit, they will offer an option of free movement or fixed-node navigation. (See additional notes in a Facebook post.)

I confess that I can only get so excited about yet another Myst re-release. Better news: Cyan has continued to drop hints about an upcoming Kickstarter project -- unrelated to the Myst series, and possibly appearing in the next few weeks. (No primary source here, but see this forum thread.)

Finally, I'll note that the Starry Expanse people gave a nice demo at Mysterium in August. This is the fan "RealRiven" project that's been in progress for several years now. They released a tech demo last year, showing one of Riven's islands. They now say they have all of the islands in progress, although at early stages yet. A long video of their talk is up on youtube; jump to 08:30 to see some juice.

And finally... did I already do "finally"? This'll be "one more Myst-related thing", then. My Seltani project continues to move along. I've added three small Ages in the past month: Caelios, Fleuven, and the Endless Cave.

All three rely on the same sort of procedural text-generation that I've been using in IF for years. (In fact, the Endless Cave is a direct port of the "maze" area from Hunter in Darkness.) If you're curious how these tricks are accomplished, look at the Ways of Printing documentation page on the Seltani wiki, and then the Endless Cave source code.

Tagged , , , , , | 14 Comments

Zarfplan: August report

The holiday weekend is over, so it's September by anybody's definition. Where are we?

I got one of the lead-weight puzzles hammered into shape. (Not a pun, it's not a hammering puzzle.) I implemented the alchemical effects that deal with the lead weight -- and some other lead objects lying around, of course, because you gotta acknowledge consistency. I put in some common verbs ("free", "release", "unfasten") which I've been meaning to do for months. I dealt with several irritating map-navigation cases.

Not done: the other major lead-weight puzzle; the puzzle elements outside the starship; more map quirks. Since that's roughly equivalent in scope to what I did this month -- and half of what I described as "remaining major puzzle items" last month -- I'm happy to say that September should cover them.

Once again this is a short update, but you get a September milestone out of it, at least.

My non-HL milestone for the month was presenting Seltani at a Myst fan convention (at the beginning of August) and then to the rest of the Internet. You can read the introductory talk on my web site, if you haven't already. Try it out! Ages are being added nigh-daily, at this point.

I haven't been working on Seltani intensively -- that was May and June -- but I've been bumping the features and bug fixes forward, with the help of the first wave of dedicated users. (Thanks, users!) I will continue to push on it in combination with all my other crazy projects, because I believe in it.

And I will see you all at the end of the month.

Posted in Zarfplan | Tagged , , , , , , , | Leave a comment

Seltani: an introduction

Last month I mentioned Seltani, my multiplayer hypertext Myst fan project.

Here's a detailed introduction to Seltani, with lots of screenshots.

(This is a version of a talk I gave a few weeks ago at Mysterium, the Myst fan convention. The original talk is available on youtube.)

Tagged , , , , , , , | Leave a comment

Zarfplan: Seltani, or what I did in June

Up front, here: what I did in June was not work on Hadean Lands. The secret project ate my soul and my life.

This will happen sometimes. I spent a bunch of 2011 working on Meanwhile and other early iOS projects. In 2012 and 2013 I have made steady progress on HL but not daily steady progress, and this is because I am balancing the usual large number of things. In June I got obsessed and the balance went sideways. In July I will drag it back.

(I could make myself look better by pointing out that this idea clobbered me in February, and I managed to put off starting it until May. Okay, that doesn't make me look good, exactly...)

Shall I leave the post with that? No, that would be tacky. If I'm going to foist you off with this "secret project" excuse, I should pull back the curtain and give you a look. Behold -- (shwoooosshh) Project Seltani.

Seltani is interactive fiction -- but not traditional, parser-based IF like HL. It's... sort of the love child of a text MUD and a CYOA engine, conceived in the stairwell at a Myst fan convention...

This metaphor, it has failed. Let me start over.

I'm not a hardcore MUD person, but I've been on a few, starting with the classic TinyMUD at CMU. The TinyMUD family are social text environments. They were supposed to be like interactive fiction, but multi-player and real-time.

It never exactly worked that way. I've never been on a MUD that had a real, Infocom-quality (or Inform-quality) parser. It's not a technical problem -- zog knows all these parser libraries were cobbled together by the same sort of hacker geeks. It's a design problem. In good parser IF, everything the parser tells you is tuned to the particular game -- that's how you learn how to play the game. Even though most of the IF commands are pretty standardized, there's always some give-and-take. You type "WEIGH ANCHOR", and the game responds "I don't know that command," or (in a pirate game) "You're not on a boat!" So you learn. Even a simple response like "What do you want to unscrew the screw with?" points at a potential puzzle -- and if the game doesn't ask that, you probably aren't looking for a screwdriver.

This whole model falls down in MUDs, because MUDs are (in general) extensible by multiple authors. Every area in a MUD could have different potential actions. So there's no way to learn them. TinyMUD's model was to have different actions for every object. Even a simple command like "push" wouldn't be recognized if it was applied to a random bit of scenery.

That was frustrating. I did a little bit of MUD building, but it wasn't really up to what I wanted. And that stayed in the back of my head for twenty years.

Second angle: Twine. This is a hypertext-style game system -- that is, choose-your-own-adventure -- which has gotten a lot of attention recently. (Credit to indie designer Anna Anthropy for getting that ball rolling, and old-time IF guy Chris Klimas for the Twine engine.) It's got a really smooth learning curve. Twine isn't a programming language optimized for text games (like Inform); rather, Twine is a wiki optimized for text games. You write passages of text, and link them together. It's a very simple model that gets the job done.

I'm a programmer and code doesn't scare me, but I can see how a wiki is way more approachable than a compiler. So I started thinking: does it make sense to build a multi-person, wiki-style text world?

Third angle: Myst Online. I don't post much about it here, but I used to be active in Cyan's abortive attempt at a Myst MMO. It sorta-launched several times from 2003 to 2007, and now hangs on as a free service kept alive for the fans.

Fans being fans, there's an ongoing effort to mod in new content. It's a very slow effort, because 3D modelling is an infinite abyss, and (obviously) the codebase is getting antiquated. People have built some cool stuff, but it's still a trickle, and there are way more ideas than there are finished areas.

So now I start thinking: does it make sense to built a multi-person, wiki-style, easily-extensible, all-text Myst fan MUD? Project? Thing? I know that people want to build worlds, and some of them are programmers but some aren't. And there are plenty of MUDs out there, but they all seem to be bogged down in this half-baked command-line model; they're hard to play and they're really awkward to build in. And there are plenty of Twine games out there, but only a few of them have any notion of multi-player, and those aren't the sort of hang-out-with-your-friends social environment that MUDs provide.

There must be something at the intersection, I thought. I could see it; and nobody was doing it.

Reader, I had to do it.

Seltani is not yet public. (Although you'll see the teaser page at http://seltani.net/, and you can find the source code on my Github page if you really want.)

The engine, and my first few worlds, have had some very limited testing. I struggled to finish the world-building interface by the end of June, so that I could push it out the door... and I did, but I haven't finished writing the documentation yet. Hopefully this week I can invite in a few alpha world-builders, and then the server will crash a lot and I will rend my garments and howl at Jupiter's moons. After that...

I think this is important. It's a new style of MUD, it's never been seriously tried -- as far as I know -- and I think it could turn big very quickly. Or not! If I were reliably right about things turning big on the Internet, I'd have a gold-plated sofa. But I need to try it.

In the meantime, July will be back to HL progress, as well as the April secret project (which has not advanced beyond its last milestone, argh). I will certainly lose some time to fixing Seltani bugs; this is inevitable. But life will go on.

Posted in Zarfplan | Tagged , , , , , , , | 5 Comments