"Free" moves

I don’t know if this has been discussed before. I searched but didn’t find anything.

I am thinking about a fair way to keep track of the number of moves played in a game. We all want the interpreter to be as helpful as possible (without giving away clues) and I think in some cases the move counter should be corrected when the interpreter “helps”.

I did a quick check with Zork I. In the opening scene, open the mailbox, take the leaflet and drop it. So now the leaflet is on the floor. “put leaflet in mailbox” counts as 1 move, whereas it should be 2 IMO. You have to pick it up first, which is 1 move, and then put in in the mailbox, which is another move.

Some examples that I made up myself.

> go north [opening the gate first] You are now in the hallwayShould be 2 moves.

[code]> cut carpet
What do you want to cut the carpet with?

knife[/code]Should be 1 move

> put the bomb in the disarm unit [first unlocking the disarm unit with the brass key] [opening the disarm unit] Ok, the bomb is now in the disarm unitShould be 3 moves.

Maybe not a big deal. But when you’re in a time critical situation, like with a bomb that goes off in 2 moves the last example would not be fair if it’s only 1 move.

Or this one:

> unlock chest with brass key The chest is now unlocked.I always count this as 1 move but if I think about it, it maybe must be 2 moves. Unless the key is already in the lock.

> Fred, give me the hook Fred hands over the hook.Should actually be 2 moves. You tell Fred to do something and than he does it.

Elaborating a bit, all scheduled events should be ran in such a case. So not only update the move counter, but let the NPCs make an extra move, drain the flashlight’s battery for 1 move etc.

Sorry if this has been discussed before, then I couldn’t find it.

I believe you can manually correct this by having a rule like “Rule for implicitly doing something” or “Rule for persuasion”.

I don’t have much to contribute to your discussion, but I highly recommend you play the (very short) game Nemean Lion:

iplayif.com/?story=http%3A%2F%2F … %2Flion.z5

It’s a joke about implicit actions.

1 Like

The default behaviour in Dialog is to count automatic actions as moves, precisely to prevent loopholes in timed puzzles. But of course, exploiting the system can be a nice meta-puzzle in itself; I remember that I relied on “free” implicit actions to beat Varicella.

Yes, I do the same with XVAN. And there are also meta-like commands that must not be counted as moves, like verbose, score, transcript, save, etc.

I saw that in Zork I, save counts as a move and restore doesn’t. I don’t get the logic behind this.

It may also be a problem of semantics? We could separate the moves (or turns) and the in-game time (the minutes).

A move (or a turn) would be equivalent to a in-world command (so that meta commands like SAVE do not count).

And timed puzzles would only rely on the minutes (an arbitrary name for the in-game time, but not equivalent to real minutes story-wise).

A problem with counting implicit actions is that it should made be clear what counts as an action. If entering a house by a window involves the player jumping to reach it, does the jumping counts as a move, since it is also a standalone action? (Even if it hasn’t been triggered explicitly, only narrated?)

You can generally get people to agree that “GET ALL” should count as one action per object taken, and an implicit take “(first taking the key)” should count as one extra action.

Beyond that, it’s fuzzy. I wouldn’t have thought of calling “FRED, GIVE ME THE KEY” as two actions.

Mostly it serves as a good argument that you shouldn’t write puzzles that require the player to count moves. That concept only exists in the first place because moves (command inputs) are easy for the game to count! If we wanted to be “realistic” then we’d be assigning probable durations to actions, and counting minutes – as Natrium implied. But nobody actually wants to do this.

Well, moves are easy for the player to count as well, assuming that implicit actions are described in a clear (but not necessarily unrealistic) manner.

Consider Freecell, the solitaire card game. Formally, you can only move one card at a time, and this (in combination with a limited number of so called free cells) creates the main constraint that you have to struggle with. But as it turns out, it is often possible to move several cards in one go, by using some of the free cells as a temporary stack. In practice, every computer implementation of Freecell automates such multi-step operations, and as far as I know, everybody who plays the game with physical cards moves stacks of cards at once, when the rules permit.

My point is that players are perfectly capable of dealing with moves that comprise, and count as, several sub-moves. Going east can be a single move, or a three-move (or three-minute) affair if the door is locked. The difference should be apparent from the way the action is narrated.

It seems rash to dismiss timed puzzles in general just because they can, in principle, be implemented in a way that is non-transparent to the player.

I’m down on timed puzzles in general because my first IFComp entry, A Change in the Weather, was a strictly-timed puzzle. And it turned out that you could gain a tempo by using an implicit take. And then I said, “Oh no, does that spoil my puzzle?” And then I said, “Hang on, what the hell. I’m trying to get the player immersed in a setting so that they can think about a challenging situation there. Do I want them to be thinking about the details of the Inform parser? Do I want them to care about the details of the Inform parser? Heck no. That’s a game fail whether they use the implicit take or not.”

And so, ever since then – which is since y’all have known me – I’ve been skeptical of the idea.

My general approach, when I’ve used timed puzzles at all, is either:

(a) Give the player increasingly scary warnings, but actually plenty of time. Like ten turns to figure out one or two critical actions, plus as many extra as you think the player might EXAMINE things.
(b) Pick a few critical actions which will take “time”, and leave all the rest as “free”. Maybe moving from one room to another ticks the clock. If it’s a doomsday device, maybe turning/pushing/pulling any control on the machine ticks the clock. Make that clear, but have the default be “no puzzle time passes”.

1 Like

I agree with zarf re: timed puzzles, and would add that “time is counted in player moves” seems to be one of those parser IF conventions that can be pretty baffling for new players unless it’s telegraphed really hard (including however you’ve decided to handle implicit actions and the like).

1 Like

The standard convention if you set the time in Inform 7 and track it is that each turn ticks a minute off the clock. It’s not counting each specific move the player takes as a turn, but everything done in that minute as a turn. So that’s why PUT LEAFLET IN MAILBOX might seem like two “actions” (picking up the leaflet when not in inventory, and then inserting it into an open mailbox) but for all practical purposes, this is something that can easily be accomplished in under a minute.

Check out the “Variable Time Control” extension by Eric Eve.

“All Things Devours” involved implicit actions being timed as full moves.

Related, are there actions that can be taken, but do not count as turns? Meta-commands (HELP, SAVE, TERSE, etc.) are obvious examples. I wonder about LOOK, on the basis that the player character knows what is in the room, and the command is more to remind the player what is there, as opposed to LOOK AT HAT, which it is reasonable to suppose the player character is taking time to look carefully. Similarly INVENTORY.

What about when nothing happens? I am not familiar with Inform, so do not know how it is handled there. If the player mistypes, say LOK AT HAT, does that count as a turn? What about LOOK AT HAT, but the hat is in another room? Or NORTH, but there is no exit that way. My personal view is in each case the player character has not done anything, so no turn passes.

It gets a bit more murky if there is a locked door to the north. Did the player spend a turn trying to open the door?

In Inform, parser errors do not advance the turn counter or run “every turn” rules. “You can’t see any such thing” is a parser error, but “you can’t go that way” is a full action.

You can customize this stuff. However, the distinction between “that action doesn’t make sense in this situation” and “you tried that action but failed in this situation” isn’t very natural to Inform. It takes a fair amount of work to keep them distinct.

I’m not sure about that one. I think it depends on the situation. Suppose we have a dark maze and the player cannot solve the puzzle to turn on the light but brute-forces his way through the maze by trying all possible directions. Then the “you cannot go that way”s must be counted imo.

In general, I’m not that interested in the actual value of the move counter, it’s how the interpreter calculates the number of moves for timed events. Suppose there are three objects near a fire. When the player enters the location, the objects will burn after 1 move, so he can only pick up one. Now, if “get all” would be counted as one move the puzzle would be useless.

I think the language should offer the option to skip timed events after a move. This way the author can decide to deviate if necessary.

Really I would implement this by having them burn after five turns, with warnings, so the player has time to look around and also examine the objects. And then have an “after taking” rule which causes two objects to burn the moment any one is picked up.

I don’t think anyone mentioned the extension Variable Time Control by Eric Eve? What this topic about is what this extension can help you with.

You can make particular actions take varying amounts of clock time. Behind the scenes, the default is 1 minute = 1 turn. You can make actions take 0 seconds, 5 seconds, etc, but you can also change the amount of clock time that has to pass before a turn passes. And then (with an extra tweak to the extension) you can determine how often every turn rules run in relation to this.

I use this extension in every game of mine. I got in this habit because my first game, Six, is about hide and seek. And I didn’t want the NPCs running away or performing their other actions while you were doing things like examining them or the environment.

I’ve yet to make any use of the seconds count in Variable Time Control. Basically I use it to frequently tell Inform, ‘This turn, don’t run the every turn rules.’

-Wade

I wound up using the seconds count from Variable Time Control in “Tea and Toast,” mostly because I needed to decouple the turn count from the minute count.

There’s a snooze alarm that takes seven minutes, as they usually do in my experience, but you should be able to do more than seven things in the interim. So I cut the seconds per turn to 30, cut the time for examining and looking and things to 5 seconds (so time passes if you’re looking around at a ton of things, but not if you just look at a couple), and then put the time for waiting back up to 60 because if you’re waiting you do want time to pass.

Relevant source code here; there’s also some stray “take no time” commands for things like exceeding the carrying capacity.

There are various messy bits of the code, like some of the processes are keyed to minutes elapsed and some are keyed to turns taken. If you’re doing something that requires precise coordination instead of a loose simulation, I’d recommend taking more care!

1 Like

Sorry, Hanon did suggest the extension already. What I have added is the lyrical waxing.
-Wade

1 Like