Two new extensions for player happiness

Tentative release of two major new I7 extensions are now up on my website:

Neutral Library Messages extracts unwanted personality from the parser and standardizes the default messages to be more consistent and more helpful. I’ve been posting about this here.

Player Experience Upgrade compiles ten extensions focused on improving various aspects of player experience (including Neutral Library Messages), addressing many of the common complaints we’re all so familiar with (“Why can’t I just type ‘go to kitchen?’” “But it just told me I could see such a thing!” “I tried to climb the stairs and it made fun of me.” “It’s all like, ‘I can’t get ye flask.’”) Targeted especially at new authors, the extension is a one-click download that makes things better out of the box.

These will show up on the I7 extensions page eventually, but I wanted to soft-release them here and see if any obvious bugs can be sorted out first. Particularly if you have a pending project with a Skein of commands that you can easily plug Player Experience Upgrade into and check for naughty behavior, I would appreciate the feedback.

The (self-centered and overly ambitious) goal of this extension is for every new Inform 7 project to use it. Many authors will of course disagree with my assumptions about how things should work, want more customization, etc., but in general I’d be interested in hearing reasons of all sorts as to why you would NOT include this extension or one like it with your next Inform game.

(Note: here’s a list of the extensions included in the omnibus package and their versions. Most of these have undergone significant upgrades recently, which will also be arriving on the I7 Extensions page soon.)

Version 3 of Approaches by Emily Short
Version 13 of Smarter Parser by Aaron Reed
Version 7 of Poor Man’s Mistype by Aaron Reed
Version 5 of Numbered Disambiguation Choices by Aaron Reed
Version 3 of Default Messages by Ron Newcomb
Version 1 of Neutral Library Messages by Aaron Reed
Version 7 of Remembering by Aaron Reed
Version 5 of Extended Grammar by Aaron Reed
Version 4 of Punctuation Removal by Emily Short
Version 11 of Small Kindnesses by Aaron Reed

Neutral Library Messages makes me very very happy. Thank you :slight_smile:

I think Punctuation Removal is installed with Inform. That’s what the TOC in Windows says, anyway.

On trying it out … I’m not sure I care for the italic in the output. It looks forced to me. I think maybe the square brackets would be okay if it weren’t for the italic. I would suggest perhaps offering user options for switching off the italic, the brackets, or both.

Simply including Neutral Library Messages in a minimal game overruns the .z5 size limit.

Is there any straightforward way to let the user edit the table, substituting their own output strings for yours in a few places if they feel the need to do so? I’d love to be able to write:

Use the library-message-text "He was already wide awake" in the row of the library-action waking up action in the Table of custom library messages.

That’s wordy, but it’s unambiguous, and would have uses other than changing voice and tense.


While I like the idea of this mod, I don’t like that your Neutral Library Messages has been included with it. I’m already using Custom Library Messages by Ron Newcomb to customize my default messages, which includes first person perspective (because it suits my story), so your Neutral Library Messages would mess up my story. If it weren’t included, I’d love to use this collection of extensions.

I’m working on my first Inform game at the moment, and having reviewed the contents of all of the extensions of happiness, I can say that there is only one that I would wish to use for this particular game, and that I’m already using it (numbered disambiguation choices).

My quick perspective on Inform is that there are a couple of broad programming approaches going on that an author has to think about - additive and subtractive. You have to add extensions to add to the base functions (additive - duh!), but to be comprehensive in creating your particular game experience, you also have to review nearly all the content that already exists, then either modify it for your game, or sculpt it away (subtractive).

I’ve been finding that the subtractive work is the harder work. Your book ( Aaron) has helped me a lot in zooming in on areas I need to cut away, disable or replace with my game, that would be much harder to find all spread out through the Inform manual.

So I see a pack adding this much functionality as significantly increasing the subtractive work. It would make me feel like I have to comprehensively test all of the contents of these new extensions and vet them all against this game. And that’s not something I want to do – unless I need and want all that functionality.

If this pack was a default, obviously it would be adding a mass of unnecessary code, increasing the game size and potentially setting up more circumstances which could create unforeseen bugs or conflicts.

I wouldn’t mind the pack being presented as something optionally available to help new authors to adventure games, but I wouldn’t want to see it as a default for all the reasons I have described. I also think it’s starting to add too many things that I think should be up to the author’s discretion about what is right for their game.

  • Wade

Great work. I’ll have to review each extension separately to see whether I would want to use it, though.

(For instance, although I like the basic idea of Extended Grammar, I’d have to think long and hard whether I really want “melt” to lead to to “burn”; or “steal” to “take”; or “raise” and “lower” as “pull” and “push” respectively. There’s a lot of room for wrong interpretation of the player’s commands there.)

But this is certainly something I’ll come back to for my next piece.

Thanks for the comments, everyone.

@Jim: Check out the Player Experience documentation-- most of the features you ask for are already included. Punctuation Removal is included with Inform, but not activated, so I suppose you’re right-- I don’t need to actually duplicate it within the extension, just add a line including it.

On the italics: I have mixed feelings about this, too. It does tend to draw more attention to the parser than normal. But on the other hand I like that it makes it more clear what text is from the author and what text is from the engine. I’m up in the air about what this should look like by default. But for now it’s easy to set this to whatever you want (towards the top of the documentation).

@whoiscraig: I hope to eventually make NLM compatible with CLM-- it’s more work than it might at first appear, so I’ve left that out for now. I’m interested to see how many people are using CLM these days to change the person/tense of their game?

@Victor: Nearly all of those come from Emily Short’s old I6 NewbieGrammar, and were apparently taken from real verbs people tried in an online Zork. I am extremely sympathetic to the idea of removing superfluous verbs from the library altogether, but if they’re there they might as well respond to the words people are using to try to do them.

@severedhand: Thanks for these detailed thoughts. My general feeling is that if the library is already a giant mass of special cases functionality (the Standard Rules have what, over 500 individual rules?) adding about fifty more to significantly improve the player’s experience is a worthwhile trade-off, especially if they’re well-labelled enough to always identify exactly where they’re coming from with the RULES command (which isn’t always true for the Standard Rules)-- althoughI’m aware the non-rules based stuff like new grammar lines isn’t as easy to track down. These have already been extensively tested and my goal is to make them as well-tested and reliable as anything that comes with the standard library.

The concern that something here will interfere with your own code is definitely legit. But as far as “needing and wanting the functionality,” I feel like to a certain extent this is the wrong way to think about this extension. It really provides no new functionality at all for authors— it just gives players more ways to express the same things to interact with your story.

A lot of my impetus to form this compilation package was a recent experience where a friend wrote a new IF for a graduate art class here, and the class critiqued it. I would estimate more than half the time was spent talking about minor interface difficulties-- “I couldn’t tell what direction to go in, I kept typing GO OUT from this one room and it didn’t work, I tried some things like WHERE AM I and it never understood my commands.” It was frustrating because most of these problems have been fixed by various extensions over the years, except those extensions are not being used by new authors. If my friend added the one line to include Player Experience Upgrade (not that it existed yet at the time), more of the class could have experienced his story, and we could have spent the whole class (or at least more of it) talking about the content of my friend’s piece, not the interface.

For actions, the clm table can be amended. Look up table amendments in the standard manual. For messages in which the action is “–” blank, table continuations need be used. (As well the latest version (3) of Default Messages.)

(@Aaron: I also use the CLM extension in my WIP… unsurprisingly.)

I’m curious as to why this is. I think Aaron said he surgically removed the original library messages, so in theory NLM shouldn’t take up much space at all. But I experienced the same problem when I tried it - it pushed my WIP from z8 to Glulx. Can anyone tell me why?

Memory usage is why I probably wouldn’t use a package like this. But I’m the kind of programmer who would take it as a suggestion rather than a pre-made solution - I intend to look it over and decide which features to steal for my own work (giving credit where it’s due, of course!) :wink:

Before I make any more complaints, I want to say that these extensions are totally awesome and I’m so glad they’re coming out now. Just want to make that clear. :slight_smile:

Okay, so this looks like a couple of bugs:

[code]Include Player Experience Upgrade by Aaron Reed.

The Living Room is a room. The Dining Room is west of Living Room. There is a pretzel in Living Room.

test me with “z/w/x pretzel”[/code]

First of all, the pretzel doesn’t get marked as “seen” until the end of the first turn, which is why I put a “z” at the beginning of the test script.

Secondly, the final command has this output:

Note that the “the” comes before “at” - it should come afterwards if a room is not proper-named.

Hello! I’ve been experimenting with Player Experience Upgrade, and when I type in a word the parser doesn’t understand I get this:

You don’t need to use the word "
*** Run-time problem P39: Attempt to say a snippet value which is currently invalid: words 0 to 0.

" in that way.

Otherwise seems like a nice addition. At some point shortly I’ll probably be testing my WIP with gamers who may have no idea what IF is, so I’ll let you know the results. Thanks!

Dustin, are you using any other extensions? Do you have the latest release of Inform? On my system with 6G60, I don’t get that error.

capmikee, both of those are now fixed in 1/110309, now uploaded; thanks. Sorry I didn’t get what you were trying to say earlier with the proper/improper named rooms!

The original messages are actually not being nerfed in this version, because some of the original library messages related to list-making did not seem to work when copy-and-pasted over. I’m not sure exactly what’s causing this and it seems like a headache to figure out. Apparently removing all the original messages only saves a relatively small amount of memory, at any rate.

But to play devil’s advocate… is it such a bad thing that your project is now Glulx? What are the downsides, these days? Can you give me a compelling reason for working in a 30 year old VM as opposed to a 10 year old one?

Mobile play? Web-playability in an interpreter other than Quixe, which is great but sometimes hangs up for a little bit on my old computer? (I didn’t wind up finishing any of the glulx games during the comp partly because of Parchment vs. Quixe issues, though I had the bad luck to start with the glulx game that crashed Quixe and the one that slowed down severely in every interpreter.)

Anyway, if you’ve got an extension you want all authors to use, I don’t think it’s a good idea to brush off concerns about busting through z-machine limits; if some people will want to release on z-machine, that’s their business, and a universal extension ought to accommodate them. Maybe it’d be a good idea to release more and less memory-intensive packages.

[For the very little it’s worth, I wouldn’t use this extension on my demo project or any real project built on the same machinery – it doesn’t implement any rooms or physical objects, and only accepts keyword input, so I think most of the extension would be moot. Typo Correction might be nice.]

What he said.

A rant:

I hate when we do this: The Living Room is a room. The Dining Room is west of Living Room. There is a pretzel in Living Room.
instead of this: The living room is a room. The dining room is west of the living room. There is a pretzel in the living room.
because it leads to messy code that produces this:

instead of this:

exclamation point!

And another thing! A thing has some text called the favored preposition. The favored preposition of something is usually "in".
Grr, and stuff!

Maybe its the newbie in me coming out, but I didn’t realise there was any difference.