The Future of IF

It’s definitely not a universal goal. I enjoy absurdity and artifice.

Blood & Laurels does have a pretty directed narrative, in contrast with the story structures in some of the previous Versu projects. Within each scene, there are a lot of different ways the conversation can flow and relationships can develop; but the scene itself sets context and stakes, and there are set number of ways the scene can end. (And yeah, I’m also sorry it wasn’t more widely available; the iPad-only decision was not mine.)

There are specific things that I want to accomplish with these mechanisms. I want characters to feel like they have a rich interior life and appear responsive to a range of player behavior. I want to allow the player to be able to form and execute social intentions, and feel that they’re directing the story through the way they treat the characters. Not every interactive story has any use for those features, and I write a lot of things that explore other kinds of territory. But there are some stories I think I am only going to be able to tell with a good social engine and associated game design.

I always felt Versu would have been the best Inform extension, giving NPCs motivation to potentially talk based on mood and move if they want, to or away from other characters and the player.

That’s a great way of saying it, thanks Emily. It’s helpful to get the perspective of someone who has experimented with these ideas already.

Finding ways to test such a complex system is a whole topic in itself.

That’s one of the major issues for me … telling a coherent and satisfying story (within the range the author intended) vs things like player freedom, a responsive world and lifelike NPCs. I’m interested in how a drama manager could be used to keep the story on track (as opposed to creating a story out of nothing in a sandbox environment – which is also interesting, but a separate problem).

Any thoughts on what a game with that middle ground would look like?

One approach might be to have internal goals the game heads towards, which the game engine uses to influence NPC behaviour, trigger events and generally keep things on track. Player actions that conflict with the current goals are restricted, e.g. killing a character who is essential to the plot. Similar to what an IF author would normally do, but in an automated way.

This isn’t IF, but whenever I think of the “story driven sandbox” I immediately think of Dead Rising.

You have the ability to run around and explore on your own. You can pick up and weaponize basically every item you encounter. You can just spend a few hours running around delightedly bashing zombies with potted plants, if you want. Or, you can follow the missions and try to complete the objectives, get the achievements etc. If you play the objectives, you get a proper story out of it (with multiple endings, depending on various key choices), but if you skip the objectives, you still run into some fun mini-quests (saving survivors/NPCs) and can enjoy yourself finding easter eggs. It was simple to pick up but incredibly hard to master/get perfect. It had a tremendous amount of replay value for me based on that.

YMMV but that’s the model that comes to mind.

Well, as I mentioned, I think it would depend a lot on each game. Every story is going to have its own goals. I don’t have an ideal vision of what NPCs should look like that I want to see appear in a game, and I am quite happy with NPCs like Tudor-Adolphus.

I suppose what I mean about finding a middle-ground between scripted and autonomous NPCs is that, if you have a game that involves meaningful interaction with NPCs and for some reason it’s vital that this interaction should feel natural (like in Galatea), then it would be nice for them not to repeat any dialogue, for instance. To be able to have the game assess the conversation’s mood and context and give the NPC something fresh to say. This basically amounts to extra polish, nothing more, but those little details are the gaps that players can look through to see the game’s mechanics if the gaps aren’t filled in.

At the same time, sometimes I like dialogue to repeat. If I missed information the first time. If it’s written well and I want to read it again. “Unnatural” or “artificial” game mechanics aren’t automatically a bad thing.

I wrote some stuff on related questions here (in a comment on Emily Short’s blog) and here. Basically I think that lifelike NPCs don’t go at all well with lock-and-key type interactions. Interaction with lifelike NPCs will be unpredictable, so we’d need a game that stays fun even after unpredictable stuff happens. One idea I had for this was a sort of onrushing plot where you can hop around the peripheries and push the NPCs into all sorts of unpredictable microstory interactions, but the overall plot arc is going to keep going (and generate new stuff) unless you do something very big to derail it.

Another thing is the Scribblenauts model–fairly easy puzzles that can be fun to solve in wacky ways.

I plan to moan about it for a while longer now, but let me make it clear that the moaning is not directed at you. It’s directed at the people who did make that decision, and who I’m sure had very good reasons for it. Regardless of the reasons, though, I still didn’t get to buy and play the game. So I’ll keep griping.

With a system like that, I’m surprised you can tell your stories at all. Seems that characters have a way of creating their own stories and run rampant from you. Which some find appealing. I don’t.

My current theory goes like this:

Do not build a “general” social engine. That will take forever/doesn’t work. Instead, figure out what your story is about and then tightly model a few specific forms of social interaction that are thematically and narratively relevant to that context. (In Blood & Laurels, we notionally had the capacity to do lots of things, but focused on sex, murder, and loyalty/betrayal, because those were relevant to the story tropes. We skipped familial relationships pretty much entirely.) Make those few things as mechanically robust as possible.

Make your scene outcomes depend on world states that can be triggered by your social mechanics. This is like other types of multiple-solution puzzle design, only instead of saying “this box may be smashed open if the player is holding any long heavy object”, we might say “this scene ends with a character quitting their job if the player has made them feel inferior” or something along those lines.

At that point, we’re talking about something that has the same localized surprise value you get in Counterfeit Monkey, just shifted into the social domain: instead of coming up with a sequence of letter transformations that I hadn’t anticipated, you might come up with some sequence of social maneuvers that etc. But everything that happens is still within a pretty confined action system.

This sounds like what I was trying to describe, except I didn’t explain myself as well.

I don’t know the story behind the availability of Blood & Laurels, but I hope it’s released to a wider audience someday, even if it takes a few years.

That does seem like a much more sensible goal - both in terms of actual implementation and satisfying results.

Mind you, the comparison you make with Counterfeit Monkey is curious - there can’t possibly be a letter combination that will surprise you, because every result is hardcoded by you. Whereas you don’t hardcode every single interaction in a Versu game; you set the parameters and let things happen. Within the limits and constraints you explained, but they just happen.

But that’s not actually true. The system has a supply of objects, and it has rules about how you can transform objects. And while I’ve tried to anticipate enough to provide all the objects you’ll need, that doesn’t mean I’ll necessarily know what exact transformation chain you might use to accomplish a particular outcome – especially since many of the puzzles respond to object qualities rather than individual specific objects.

Counterfeit Monkey was accomplished, from what I understand, by literally using a script to search for all possible dictionary words (ie, you take a list of objects that are in the game, and you try each transformation in the game to see which transformations are possible – recursively) that can be generated in the game; then every single word in that list of possible items is implemented.

There’s been a lot of fascinating talk about NPC to NPC and NPC to PC interaction but I’m also curious about PC to PC interaction. Is multiplayer an area that IF has explored much before? It certainly seems like a potential future growth area. I assume we’d need significantly different tools than say Inform or Twine… And what would multiplayer IF even look like I wonder.

Ah, I see. So similarly you hardcode your characters and then let them loose - there’s no chance that a character will do something that wasn’t hardcoded from the beginning, though who/what they do that to, and whether it includes existing scenery (like the pond), can be a surprise in the specifics.

I do think I understand better. Thanks for taking the time to explain it to my thick ol’ heid!

The best example of this I can think of is any text MMORTS games. These don’t really focus on story though. If you’re wondering what games I’m talking about, think “Mafia Wars” or “SimCountry”.

There are MUDs, which are their own thing with a long design history about which I know less than I should. Then there are two systems designed for multiplayer IF by members of this community, Guncho (parser IF programmed in Inform) and Seltani (hypertext IF but with a room model). I wrote a game for Seltani this year, and I have some posts about that.

Not really. Tads allows you to write netcode (either low level sockets or higher level HTTP handling) and thus you can implement multiplayer games in it (you could write them P2P even, so that players connect to each other without a central server.)

However, no one has ever done so yet. You would need to come up with a new world model that can accommodate multiple player characters.

Aetheria Game Engine (AGE) supports multiplayer:

Note that it moved to github from googlecode