First, a couple more small issues, then two more issues which I consider to be more important than simply good polish, but which may for all I know be covered extensively in other articles on writing good IF. (I include them because my collective testing experiences have revealed them to still be prominent issues.)
‘search [npc]’ “You find nothing unexpected.” Did we really just frisk the seven-foot-tall one-eyed pirate, though? My suggestion is that this be disabled by default in the standard library, just as ‘take [npc]’ is (they wouldn’t care for that). Or perhaps someone will be inspired to write a little extension, with this and a few other tweaks mentioned below.
‘taste [npc]’ “You taste nothing unexpected.” You can say that only a joker will see this response, but then it would be such a small change to either the library or an extension of default message tweaks to make your game just that little bit more believable. And it’s a good opportunity for the parser to whip out a witty comeback, too.
(Also make sure ‘push [npc]’ is appropriately dismissed.)
On the topic of tasting, I question whether it’s advisable to allow it by default. It’s pretty rare that tasting is necessary to accomplish something useful, so it seems that it would make more sense to allow tasting in the places where it’s useful/logical, rather than trying to dismiss tasting on all the unsavory objects in your game world. Currently, there are a lot of PCs out there licking dirty floors, toilets, things hanging from high ceilings, live wires etc. and reporting that “It tastes much as they’d expect.” To @rovarsson’s delight, no doubt
Another area that I admit will probably only be revealed by jokers: ‘[verb] me’. Still, many of these sound very odd, and someone could go through the standard library verbs (in our hypothetical extension of message tweaks) and make sure each verb gives a sane response when applied to the acting actor.
It’s also relatively common to find objects that are clearly out of reach, but not all touch-dependent verbs are trapped on the said object.
The meatier matters…
The concept of “guess-the-verb” problems/puzzles is commonly pointed out/complained about in IF. So I know I’m not broaching anything new here, but I’d just like to challenge authors to come at it from the other end. Make a concerted effort to imagine every possible wording that a player might use to accomplish the same logical goal. Certainly cover all standard library verbs that could apply (if something is supposed to ATTACH, the player may very likely try to PUT it ON), but also consider adding a new verb (or synonym for an existing verb) to your game if a puzzle solution would very prominently suggest that wording to a player’s mind. Particularly for newer IF players, they shouldn’t have to be constrained to know and restrict themselves to the standard library verbs.
Adding new verbs has the potential to incur a lot of extra handling on the rest of the game world. My two cents is that it’s better to implement the verb for the sake of accommodating a very rational wording attempt to solve your puzzle, even if in the entire rest of your game you dismiss attempts to use that verb with a message something like “There is no compelling reason to try [verb]ing [the object]” or even “That’s an action that you may only need to use under very certain circumstances.” Surely it’s no secret how frustrating it can be to find out later that you had actually solved the puzzle, but you gave up because the parser didn’t accept your wording.
Distinct, but related: go out of your way to imagine every plausible attempt the player might employ to solve your puzzle. It’s really important to supply non-default fail messages for these actions, because they also have the potential to throw the player entirely off the track when they may have been much closer than they knew. And players like to be encouraged/complimented by trying things that could have worked, if not that the author had carefully crafted the game world to confound every effort except the one that fulfills their puzzle idea.
Consider the inventory the player might have; again review all the verbs defined in the game, and give the player the satisfaction of knowing why their rational attempt didn’t get the job done.
Yeah, I’ve been wrestling with this a lot lately, since my game’s approaching 200k words. When you’ve got that much material built, you REALLY don’t want to add new verbs, because you don’t want to have to think about them VS all existing content.
My main strategy is to make new verbs synonyms for existing verbs. Some might be a little bit of a stretch, but I realise if I’m adding an obscure verb that was suggested by one situation in particular, it’s pretty unlikely to be used elsewhere apropos of nothing, reducing the amount of weirdness were the player to grok that they could type that-weird-word to open a door.
Another strategy is to mostly make the new word a synonym, except in the situation it was created for. So for instance I’ve got PUNCH and KICK both normally going to attack, but in situations where the response would be foolish if you typed one and read something that only made sense for the other – or during a fight where you can actually PUNCH and KICK separately – then I funnel KICK off to its own logic.
The bulk of my custom verbs I defined early enough to incorporate throughout the game world, but like you, when I discover the need for a new verb to accommodate a wording I hadn’t thought of before, with thousands of objects already implemented, I am likely to default to my own example, and say that this action is something that would only be applicable or needful under a certain set of circumstances…
Can verbs be gated by region or room? Meaning they only work in certain places? Check if player is in the Mansion Region, if yes, continue the action, otherwise, say “Appropriate failure message here” and cancel the action.
This would prevent newly added verbs from colliding with the other sections of your game in an unexpected way.
if the location is not enclosed by NeverLandRegion:
say "You think happy thoughts, but it's seriously not happening this time. Maybe you should just grow up and get a job like Tinkerbell says." instead.
I don’t know, I read up and I don’t know if I’ve heard of a game that added enough new grammar to cause slowdowns, unless they’re talking outside a gblorb (or another system) like using z-code which has less room for that stuff?
EDIT: read more closely, poster is talking about verbs added late in the game that will cause havoc with everything else in the world that’s already implemented without those verbs in mind.
In that case, you can make an adjective: a thing can be frobable and add it to your qualifying objects. A foo is a thing. A foo is frobable then check check frobbing: if the noun is not frobable: say "No chance, buddy." instead.
I understand that, but if they gate the usage of the new verbs, they won’t interact with the rest of the game, let alone cause havoc, no? Like, why retroactively make new content play nicely with the old content? Just quarantine it.
Depends how. I tend to use the “check if a thing is [adjective]” gate as I edited above. But it’s kind of the case for scope early and don’t decide the game needs to include time-travel a week before the comp deadline. Been there.
So the issue is player expectations then? You either must allow the verb retroactively, causing much pain, or contrive a plausible narrative reason it wouldn’t be available elsewhere, correct? You don’t receive your mechanics certification in the mail until the end game. Prior to that: “You don’t think you’re certified to repair that.”
I suppose that depends on what plot contrivance is used, how plausible this seems to the player, and whether or not this detail serves something else in the story, whether it helps character development, worldbuilding, or overall themes, beyond simply conveniently boxing in the player. The example I gave was admittedly absurd and patently contrived, but I would imagine folks could do much better than this.
I just feel it’s strange to box yourself in because of pre-existing content. If you have an addition you feel is good enough to add, but not worthwhile to retrofit your entire existing game to do so, then, well, don’t try to? I hate the idea of scrapping it altogether. I guess that says more about me than anything about game design. I’d even consider jumping perspectives to an NPC for a short section before jumping back to the protagonist, neatly delineating skill sets and applicable verbs.
I’ve always struggled with killing my darlings.
P.S. I appreciate the feedback, just currently out of likes. In “like” jail for 4 more hours.
The more I think about the whole thing, it has more to do with whether actions are similar to others.
If the new action is totally and utterly new, it’s easy to add it, and to write a fob off message that will be accurate in almost all cases the action doesn’t apply. And that will satisfy the player.
I think my PUNCH and KICK is a good example of where there’s a real problem. I need a genuine KICK, so I added it, and implemented it (though where I can, I funnel to ATTACK.)
What happens if I implement KICK specifically only once, though? The player finds this early in the game, and says ‘Great, Kick works!’ Then everything else they kick either gives a response as if they hit it with their hand, or a ‘You don’t need to do that.’ Then it can look silly or see-through or cheap.
Now overall, IF players are a forgiving, adaptive lot. So is this the supercrime of the century? Obviously not. It may be right or fine for a game, or your game. For games of a certain age, it’s expected. All I can say it’s not fine for my big brand new game, by me, the Master Of Implementation ™. So if I add a new verb, by golly, I will add it, and that will take some plugging into the huge inventory of existing content.
When I’m playing a game with my tester’s cap on, I do try to LICK PINK ELEPHANT’S TRUNK or BUNGEE JUMP OFF EAGLE’S NEST. When I’m playing a game as just a player, I probably won’t do that… a lot.
It’s just that somewhere, some time, there will be a normal player who decides to enter one of those commands. As a desperate attempt to pry more information from the game, or as a way to get rid of some frustration when stuck.
I know from personal experience that having a game recognise those attempts gives a great feeling of exhilaration. When testing, I like to point out the possibility to the author, so that one player feels that vibe.
I repeat, just to squash any growing suspicions around here, I do not go around LICKing everything in scope when I’m playing IF.