Wednesday, August 1, 2012

turn theory

(This post actually has some cross-system theory- almost making it worthwhile to post to the JC blog- but most of it will be Hugo-specific enough that I'm just going to keep it here.)

In getting newconverse working, I had to make some small changes to both the roodylib and newconverse versions of SpeakTo. One thing I noticed was that in the regular library, variations of the command >HELLO (CHARACTER) do not take up a turn (I changed this for roodylib).

Whether or not a verb routine returns true determines whether a turn passes (if a turn passes, the turn counter increases, PrintStatusLine is run again, and event code is executed). It seems like the philosophy behind turns is that ineffectual commands shouldn't take up any game time, but important commands should. Like, the entirety of verbstub, I believe, returns false, as Hugo makes the assumption that >YELL-ing or >SLEEP-ing will just provide some snide answer and that is that. >HELLO (CHARACTER) does have a pretty meaningless default response, but the command does still set the speaking global, which seems pretty important.

This system presents several points of confusion, including:
  • Any time you have to stop an action with a before rule, the "can't do" message will take up a turn while the regular action doesn't. Consistency cries! (maybe these are instances where verb routines should be replaced completely with something that always returns true)
  • What's the best way to distinguish between an ineffectual command and a useful one? From the player's perspective, it can be pretty unclear.
Some people contend that verbs like >LOOK and >EXAMINE shouldn't take up a turn, either. It's an interesting idea but might be more trouble than it's worth.

Still, what is turn-worthy is one of those things I imagine Hugo inherited from Inform. Now that I'm much more comfortable with the idea of suggesting improvements for the library, it's worth nothing that, hey, if we think we can design a more consistent system, there's nothing stopping us. In the meantime, we can continue to tune the responses one verb routine at a time.


  1. I think the risk involved in not returning true from verb routines for "ineffectual commands" is breaking mimesis for players who might be trying the command in a serious context.

    I understand the philosophy behind the distinction, but it's hard to put into practice. I think any response that is obviously just the parser being cute can safely not take up a turn. If the message leaves any room for the player to think that anything happened at all in the fictional world -- even if the game state is unaltered -- then a turn should pass. I also think that LOOK and EXAMINE definitely need to take a turn, because they are not really meta commands used by the player to gather more information about the game world, even if that is the way that the commands have become abused. Looking and examining are actions that the player character takes in the fictional world, just like any other commands.

    That said, it looks like some of the verbstub routines do return true. Some do, and some don't. Kent must have understood that commands like SMELL and THROW AT and JUMP have a real fictional presence, because those are three of the verbstubs that do return true.

    1. Huh, yeah, I missed that some of those verbstub routines *do* return true. Good to know!