Parser Vs. Hyperlinks?

I am considering an interactive fiction project. The trouble is, I’m not sure whether to use Inform 7 to make a parser-based experience versus using Twine 2 to make a hyperlink based one. Neither of them has all the features I need out of the box, but I’m 90% confident that both of them can have the features I need added in just by making use of variables and such. My question is, from people who are more experienced with this kind of thing, which of the two would be easier to get what I’m looking for?

The features I want from Inform 7 is primarily its movement system. I really like how a parser-based game can give you a real sense of place and exploration as you move from one room to another and see what’s around. In a parser game, you can create a location with three dozen rooms and it’s quick and easy enough to navigate around that it feels satisfying to explore so long as it’s all well-written and interesting. I can simulate this in hyperlink-based Twine by having either a list of available locations to check out or else by making each room a passage and having hyperlink options to go to connecting rooms, but the latter makes it hard to navigate larger spaces since you have to click through lots of links to get from one end to the other rather than just hammering “n” “n” “e” “n” like you can in a parser game with a well-designed layout. The problem with the list of locations option is that it makes things feel disconnected, like each location has no specific position relevant to any of the others. Things like a map where you click on the labeled locations to reach their relevant passage can help, but 1) this requires that I make maps and 2) I still feel like it delivers an overall lesser sense of place and location than parser-based exploration can.

The features I want from Twine 2 is hyperlink-based encounters, especially for conversations, which are very likely going to be the meat of the encounters in my game. To be clear, I’m not designing a dungeon crawl. I don’t have a whole lot of details hammered down yet, but I’m mainly thinking of a small town where you can talk to a lot of people, and at the end you break into a place to steal a thing and maybe shoot the owner in the face. Most of what I’m calling “encounters” are conversations, and I like how Twine 2 handles those: I can write a bunch of dialogue, and when there’s an important decision to be made I can serve up several options to the player. I’m pretty confident that I can code in a similar system into Inform 7, by delivering large text passages in conversation and then listing numbered responses, but stapling Twine 2 onto Inform 7 like this would definitely be a lot harder than just using Twine 2. I’d have to prevent a player from leaving the room without ending the conversation, teach Inform 7 to recognize, in context, what typing “1” means not only for conversations with different people, but for different branch points of each conversation (i.e. a conversation with the same person might have “1” initially mean “have you heard about the smuggler in town?” and then in the next stage of the conversation that same command with that same person means “I’d stay away from Southside if I were you”).

Based on all this, I lean towards parser-based because, while it’s a hassle, I should be able to get all the features I want from Twine into Inform, but not vice-versa. However, I don’t really know either software very well and would appreciate any advice from people who know one or both systems better.

Check out AW Freyr’s “Hybrid Choices” extension for Inform 7. It lets you create numbered choice menus for conversation or anything else, switch between parser and menus based on rules, and you can have choices affect the world state.

inform7.com/extensions/AW%20Frey … index.html

Thank you! This is exactly the sort of thing I hoped I might get in response to this thread.

I generally prefer the feeling of Inform based games, but that might be because I’m old. :wink:

Having said that, I have also been working on a directional navigation system for Twine 2.0 that uses NSEW and in which all the passages are named grid coordinates.

It displays as a little nav-box in the upper-right corner:

Dungeon Crawl.gif

You could add ne/nw/se/sw/up/down as well (which I intend to do eventually). Up down would require passage names of 0x0x0 for depth. Once I’ve developed and tested it more, I’ll be dropping the “Location is 0x0” thing. It’s there for debugging purposes at the moment.

You can see in this screenshot that none of the passages are actually connected. Movement is controlled via the navigation script alone.

Dungeon Crawl_040.png

I’ve included the Twine exported html file attached to this as well, in case you want to look over the source (which is rudimentary and kludgy, but works). It could give you ideas for making your own variation.

Dungeon Crawl.zip (121 KB)

Edit: I added some rudimentary Up/Down code.
Dungeon Crawl With UpDown…zip (121 KB)

(I call it Dungeon Crawl, but you could navigate a town, a house, or whatever in the same way)

Also check out Brain Guzzlers From Beyond, the winner of the 2015 IF Comp, which used this extension to good effect.

I will note that the Inform feature you mention – a movement system organized on a grid – is relatively easy to reimplement in Twine. (Or any other language.)

Where Inform gives you good leverage is the construction of movable objects and a system of verbs for manipulating them. And the parser library, obviously.

And here’s one with some changes that let you have locked/unlocked doors.

Dungeon Crawl with lockunlock.zip (121 KB)

I don’t need a movement system organized on a grid. I need a movement system that can be very rapidly navigated even when there are relatively few direct connections between locations. In order to achieve that in Twine, I’d need to make sure the commands to move from one location to another are always in the exact same place, are as readily accessible as keys on a keyboard, and are as instantaneously responsive as keyboard commands are - no half-second fade while one passage disappears and another is called up, the player can move from place to place as fast as their fingers are capable of hitting the appropriate commands. A parser encourages a player to wander around and see if they can find anything, hyperlinks encourage them to stay put until they’re ready to make a decision. I want walking around town to feel like the first one.

You can always kill the transition with a style sheet addition:

.passage { 
max-width:85%;
transition: none;
-webkit-transition: none;
-moz-transition: none;
}

Then you’d get something more like this:

Dungeon Crawl 2.gif

Though I’ve never felt it any more urgent to move in a parser based game than a hyperlinked game. It’s about the same.

And you can probably use MouseTrap to do keybinding magic: twinery.org/forum/discussion/63 … navigation

PS - The navbox is 10 pixels in from the top and right in every screen… so it should not be moving anywhere. :slight_smile:

I encourage you to check out some of the French ifcomp games. Most of them are inform games that have been heavily modified to provide hyperlink support. You don’t have to speak French to appreciate the structure (although in the I form game Faute de Servo, the commands are color coded buttons that are unlabeled for story purposes, so watch out for that).

Question from rookie: How do you utilize an extension such as Hybrid Choices when it is not included in the Extensions available through the 6M62 menu? Cut and paste?

Thank you, fos1

Download it, open it, click the “Install Extension” button at the top.

I implemented a compass rose in Alice Aforethought (it’s in AXMA which is similar to Twine) just by brute force - copying the compass rose code and links to any page where I needed it.

If you need fast movement in a choice environment, why not set flags on which rooms are visited, and include direct links to visited rooms on every page? In Sugarcube you could do that with a header or a footer, and I’m sure there are other ways besides just copying the link list to every page.

Or File>Install Extension (point at the file).

You also might need to restart Inform to have it show up.

I don’t work with Twine much so I don’t know if this is feasible, but could you have a link for “previously visited rooms” that expanded into a list instead of going to a new passage?

I would assume so. Harlowe has expanding text links.

Thank you for the help on extension installation. I am still more comfortable with TADS but Inform 7 seems to have the publishing flexibility that I find necessary.