Threads about NSEW/compass alternatives

Before you say this, I’d really recommend you try playing a game that disables the NEWS abbreviations and requires you to type NORTH, SOUTH, EAST, WEST every time - there was one of those I think in this year’s ParserComp, and it was excruciating. When the player is typing PUT ACORN IN CAGE, they’re trying to solve a puzzle and their brain might not be that much ahead of their fingers, which makes the length of the command less of a barrier (in fact it can help build anticipation about whether the command will work); when they’re trying to get from point A to point B to solve a puzzle, their brain is already well ahead of their fingers and further slowdown is going to feel especially treacly.

I understand that alternative travel modes might be less laborious than that, and I certainly understand that compass durations aren’t intuitive for lots of folks. But ease and speed of entering commands should 100% be a consideration when designing an alternative, if only to avoid compass-comfortable players feeling like you’ve imposed a massive downgrade on them (though I think there are benefits for other kinds of players too).

3 Likes

Speaking as someone who interacts with a computer exclusively via the keyboard and who is constantly dealing with interfaces where keyboard input clearly took a backseat to mouse/touchscreen optimizations at best and was sacrificed entirely on the altar of the touchscreen and mouse at worst, I can tell you those extra keystrokes add up infuriatingly quickly.

Of course, the real power of a

goto [shortNameOfVisitedLocation]

command Isn’t in moving between adjacent map locations, but in quickly backtracking without having to pause at each step to check which direction to go or needing to memorize the map so well you can quickly input n, n, e, s, ne, nw to get to some distant location.

As for put acorn in cage, well, assuming the acorn and the cage are the only a word and c word in scope respectively, tab completion could easily save 5-7 keystrokes while also reducing time wasted due to typos, and while that isn’t much for a single command, those save keystrokes really add up across an hours long gaming session, and they become more significant with something like

turn screwdriver in ignition

or

put chrysanthemum in terra cotta pot

where the latter is part of a puzzle where you have to put multiple flowers into multiple pots in a certain order, so put flower in pot wouldn’t work.

Still, I feel like the more common commands one can reduce to a single letter or even a single keystroke, the better.

And there’s an interesting design challenge: Start with the standard set of single letter commands and expand it to a list of 26, one for each letter of the English Alphabet and then make a game that uses those 26 commands and nothing else. Optional challenges would include making every command mnemonic, grouping commands on the keyboard in some logical manner(bonus if the game is programmed so the command layout is the same regardless of keyboard layout), or making them as confusing as possible(bonus points if this is a hard mode with the option to play with the mnemonic or clustered layout).

1 Like

Maybe that’s true of some players, but I definitely like parser IF, I type reasonably but not ridiculously fast (100-120 wpm) and I hate HATE HATE excessive typing in parsers. I’m always looking for the shortest synonym to use for any given object, etc. and I have absolutely quit some parser games because they have long annoying names with no synonyms.

There definitely are players who prefer the immersion (?) of typing everything out: Sam Barlow once tweeted something along the lines of if you’ve ever typed X instead of EXAMINE you’re not a real parser player, and he seemed (?) to be serious and he got a bunch of replies of people agreeing with him who also seemed to be serious.

But I suspect there are nearly as many of us who feel exactly the opposite. So if you ignore the amount of typing your game requires, you do so at the risk of alienating at least some players. It is definitely NOT irrelevant to some of us.

5 Likes

I agree with both of these—avoiding excessive typing is a priority for me, BUT having to do a long string of commands to navigate from one end of the map to another—often checking which way to go next at every juncture, as Jeffery said—is something I find incredibly tedious. So typing “building” and being teleported there would be way preferable to me than having to enter all those single-letter commands in a row.

3 Likes

I wish I could type at 100 wpm… Sadly, my slow fingers can only manage about 50 wpm… or at least, that’s what I get if I set a 1 minute timer on my echo and then just type into a blank text file a passage I have memorized by rote since I’m not aware of any proper typing tutoring software for Linux, much less that work with a screen reader.

Of course, another way to address the excessive typing issue would be an interpreter that has built in voice recognition, though I’m not sure voice recognition tech is really reliable enough for a smooth gaming experience.

2 Likes

It could be, potentially, since (usually) both parser and choice IF has a specific, preset list of possible words that can be used. A voice recognition system that was limited to those words could do a reasonable job.

The problem is, most off-the-shelf systems don’t let you do that sort of limiting yourself.

I was just about to say this WASD on my keyboard would be very confusing. And it’s of course why many modern “action” games allow key binding in the settings. Which is mechanically possible, I guess, as long as you have no other 1 word commands (“L” for look, for example). The problem I struggle with is then how do you communicate the direction to the player through writing

I think one of the most underused (EDIT - Inform 7) extensions of all time (and I think most are underused!) is Automap by Mark Tilford.

People will write hundreds of posts about maps, compasses and neuroscience, but they seemingly will not add this extension to their Inform game. In about fifteen IFComps, I don’t think I’ve encountered a game that used it.

It builds an ASCII map on the fly in the status window. If a player doesn’t like it, they can turn it off. Or you could ask them, at the start, if they want it.

I see no update for Inform 10 so maybe it got stuck at 6M62? (extensions/Mark Tilford at 9.3 · i7/extensions · GitHub) Anyway, I use this extension in both Leadlight Gamma and my WIP as the core automapper, then I create the graphics on top using Glimmr.

…I feel like GO TO could be most systematically useful in a big game, but there are few completed examples to cite. In a big game is also where it’s hardest to program. You invite the potential combinatorial explosion of all your room names dueling with each other. If you allow the player to GO TO things or people as well, you invite the inventory of your game. My game is big and I have both problems, but I mitigate the danger by having things corralled by chapter. (I think all of @aschultz 's games allow you to go to anything? I’d be curious to hear if you use that facility when playing them.)

I still find it’s an effort to program GO TO well. However I feel I’ve covered almost everything… Graphic automap. Exit lister. Compass rose. Prose describes exits. And you can GO TO anything.

-Wade

4 Likes

More games could probably use GO TO, but it only works if the granularity of movement isn’t important. Which, in my opinion, it should be, if there’s a granular movement system at all.

As you destroy the castle in Eat Me, you have to keep finding new routes through the map. GO TO would trivialize/eliminate that gameplay element. And in The Bat, things change in different rooms as you’re passing through, which you’re meant to notice as you pass through. GO TO is such a goal-oriented mechanic that it skips the journey – and any surprises you might find along the way.

I’ll admit I haven’t given much thought to Automap. It seems like it would just entrench the compass graphically. There’s probably a way to use it that I haven’t considered though…

3 Likes

“It seems like it would just entrench the compass graphically.”

Huh, now I’m curious, if you don’t mind: how would you feel (hypothetically) about a map in Eat Me if the commands weren’t compass directions? If you went dungeon, undercroft, armory instead of n, n, e?

And what about, say, shipboard directions: fore/aft/starboard/port? Or the Discworld’s hubwards/rimwards turnwise/widdershins?

Because I feel like what I learned from doing that Sugarlawn visualization (it’s a force-directed graph, you can grab the dots and drag it around) is that I want some form (any form) of directions in the game so that I can lay it out spatially in my head. I don’t want to have to take a tangle of connections like the initial form of that graph and untangle it into something that’s easy for me to understand.

But I don’t particularly care what they’re called, and if there was (hypothetically) tab-completion in interpreters or games I might not mind typing du\<tab\>, un\<tab\>, ar\<tab\> instead of n, n, e.

It’s the untangling the web of connections that feels like the hardest thing to me about not having compass directions. It’s kind of like not knowing where to start when mapping an IF piece: do you start in the middle of the paper and hope it doesn’t run you off one edge? Or start on an edge and hope it only goes in the one direction? Only worse, because if all you have is connections then if you guess wrong you find you have a twisted mess and it’s more work to straighten out (again, at least for me) than just drawing an arrow and continuing on another piece of paper.

3 Likes

That’s what I would prefer. Not shipboard directions, though. That’s the wrong flavor for the story. But typing out whole words like “undercroft” would be too cumbersome, which is why I didn’t implement a system like that to begin with.

I almost never draw maps for parser games, so facilitating map-drawing isn’t high on my own priority list as a designer. Eat Me comes with a map anyway.

1 Like

I’ve been on enough cruises to know that people really hate shipboard directions.

A: Which way is port?
B: It’s the left when you’re facing the front of the ship.
A: Which way is the front?

2 Likes

Regarding goto and very large maps, one compromise would be to only allow it for major locations, similar to how using fly outside of battle in Pokemon only lets you fly to each city’s Pokemon center, the player’s front door, or the front door of the Pokemon League. Of course, depending on the game, you might want a fast travel teleport distinct from goto.

As for worlds that are actively evolving without the player’s direct involvement, one option would be to, instead of having goto act as a teleport, it path finds to the destination and if anything interesting happens along the way or a path has been blocked, the game stops to tell you what’s happening. Of course, path finding isn’t the easiest thing to code and detecting when to break a path is another challenge, and that’s on top of giving every room a human parseable unique identifier.

Still, some of this seems like things you’d think would be available as an extension if not standard library to some of the major IF frameworks.

As for shipboard directions, it makes sense if the PC is supposed to be a navel officer, a pirate, or some other seafaring occupation, but it is presumably very counterintuitive to anyone who isn’t on a boat regularly.

1 Like

Yeah, the shipboard directions and Discworld directions were examples of “non-compass” directions that might be evocative in one particular context, not a serious suggestion of “you should use these in a game.”

1 Like

Miss Gosling (Dialog game in IFComp) has a nice GO TO feature. I don’t know if the author shared the source? It’s nice not to have to walk up a spiral staircase.

As for what Wade mentioned?

I like using GO TO a lot. It’s really useful. I’ll give a rundown of where it best applies. There are test cases to check so the player can’t cheat their way out, of course. But I found nailing down these test cases helped me solidify the story and map a lot. And as Wade said, the bigger the map is, the more necessary it feels, and the harder it is to test.

In Inform there is a way to track if two rooms are connected. The “Van Helsing” example is one such way, but if there is a teleporter or elevator, you need to tweak a few things. Instead of rooms being “adjacent” you check if they are “goto-adjacent,” which may be defined differently. Also, you need a tree to check all possible rooms you can go to from where you are, and an additional “goto-checked-this-time” flag so running through the map doesn’t loop infinitely.

My code below is a bit awkward–there should probably be “the goto rules are a room-based rulebook.” The main things to check are

  1. trivial check for visiting your own room
  2. check for if you are stuck for some reason (e.g. in a trap-net or final fight or if the player is in a chase and you the programmer don’t want to account for that)
  3. is there any reason we can’t go to room X?
  4. is there any reason we can’t go from your room? (sort of like 2 but room specific. We can define a rule for each room.)

GO TO (thing) is also a useful stub. We just look for the room the thing is, then GO TO (room). And of course GO TO [any visited room] in Inform helps make sure no weird errors are found.

In any case, you’ll want to write a lot of test cases, maybe even one for each room pair. It seems trivial but you never know which will go wrong

As for individual games?

Ailihphilia: you have no restrictions on where to go until the end. GO TO is disabled for the final fight.
Shuffling Around/A Roiling Original: rooms are divided by region. I didn’t use full searching code, just assigned a progress number to a room. If you are in zone 3, you can’t go back to zone 2. There are also trap/puzzle rooms defined with a flag. In this case, “does the player mean going to a room in the same region” cuts down on ambiguity.
Problems Compound/Very Vile Fairy File: Both have a start/middlegame/ending feature where you can’t reach the start from the middle or middle from the end. I like having these checks early so that the traversing algorithm doesn’t have to work as hard.
Under They Thunder: this is very tricky as you have a teleporter. I forget if I did so. But I remember there were a lot of test cases. Teleporters make this tricky.

goto code for beef beans grief greens etc.

Note: the definition of “moot” is “in permanent-offstage-room” – in other words we know we are done with it.

chapter gotoing

section gotoing

gotoing is an action applying to one visible thing.

understand the command "gi" as something new.
understand the command "gr" as something new.
understand the command "gt" as something new.
understand the command "goto" as something new.
understand the command "go to" as something new.

understand "go to [any visited room]" as gotoing.
understand "goto [any visited room]" as gotoing.
understand "gt [any visited room]" as gotoing.
understand "gr [any visited room]" as gotoing.
understand "go [any visited room]" as gotoing.

does the player mean gotoing a room (called rm):
	if rm is location of player, it is unlikely;
	if rm is visited, it is very likely;
	if rm is available-from-here, it is likely;

carry out gotoing:
	move player to noun;

check gotoing (this is the prevent bad game-specific gotos rule):
	abide by the flag reflexive goto rule;
	abide by the stuck-right-now rule;
	abide by the flag bad goto from rule;
	abide by the flag bad goto to rule;
	if noun is not available-from-here, say "You can't walk to [noun] from here." instead;

section gotothinging

definition: a thing (called th) is known-to-player:
	if th is in Temp-Offstage-Room, yes;
	if th is off-stage, no;
	if location of th is unvisited, no;
	if th is not a backdrop and location of th is visited, yes;
	yes;

gotothinging is an action applying to one visible thing.

does the player mean gotothinging a thing (called th):
	if location of th is unvisited, it is very unlikely;
	if th is moot, it is unlikely;
	if th is carried by the player, it is unlikely;
	if th is not in location of player, it is likely.

understand "go to [any known-to-player thing]" as gotothinging.
understand "goto [any known-to-player thing]" as gotothinging.
understand "gt [any known-to-player thing]" as gotothinging.
understand "gi [any known-to-player thing]" as gotothinging.
understand "go [any known-to-player thing]" as gotothinging.

carry out gotothinging:
	if noun is off-stage, say "Unfortunately, you tried to go to something that wasn't introduced to the game world yet." instead; [shouldn't be necessary, but just in case... we want to avoid weird errors, for now, until things have been tested. ??]
	let Q be location of noun;
	if Q is Temp-Offstage-Room, say "Right now [the noun] is temporarily unavailable." instead;
	if noun is moot, say "Unfortunately, you tried to go to something that has been dealt with. Okay, it's fortunate you dealt with [the noun], but [b]GT[r] doesn't know where to go." instead;
	if debug-state is true, say "DEBUG: [noun] is in [Q], so gotoing there.";
	try gotoing Q instead;

For seeing more algorithmically if rooms are connected

to reset-go-check:
now all rooms are not go-checked;

definition: a room (called rm) is overall-gotoable:
reset-go-check;
if rm is gotoable, yes;
no;

definition: a room (called rm) is gotoable:
if rm is location of player, no;
now rm is go-checked;
repeat with R2 running through rooms:
unless R2 and rm are game-adjacent, next; [game-adjacent = adjacent with conditions, like a troll blocking an exit]
if R2 is go-checked, next;
if R2 is gotoable, yes;
no;

This code feels like it could be done better. It’s not impossible, but it’s also not trivial.

2 Likes

Source will be available after the comp, but this part is actually just core Dialog! It’s one of the nice bits in the standard library.

3 Likes

Cardinal directions bringing to mind an actual compass is a new thought for me. To me, cardinal directions are “where is the sun/mountain/river”, and the knowledge that this is an east/west street. They’re part of the grain of the world like “uphill” and “downhill”. So I don’t find it strange for a person in a fantasy world to be navigating by cardinal directions. After all, cardinal directions predate compasses by presumably tens of thousands of years, and plausibly predate Homo sapiens.

Maybe games need to do a better job relating cardinal directions to the kind of landmarks that people living in a particular location naturally orient to, because it can definitely feel artificial to start talking about compass directions when the character has no plausible way to have become oriented in the first place.

It’s interesting to note that many cultures that use cardinal directions heavily don’t use the sun, or its magnetic equivalent, as the point of reference. For instance, island-dwellers are likely to use a down-to-the-sea axis and an along-the-shore axis. Similar systems can apply to valleys, and of course mountains and rivers are natural points of reference. Games could lean on this more heavily for sure. For instance, E/W confusion could be resolved by setting the game on a slight E/W slope and treating U/D as E/W.

In the case of Eat Me, perhaps an alternative system of orientation, maybe oriented to the gate and relying on forward/backward/in/out in the dungeon could have been practical?

2 Likes

One fun example of this: the Akkadian terms for “north”, “south”, “east”, and “west” literally mean “the north wind”, “the south wind”, “the mountains”, and “the Amorites” (people who lived to the west of Mesopotamia).

1 Like

To be clear, if a game offers compass-based navigation, then I have no qualms about allowing abbreviations of those. (I also don’t have any qualms about other common abbreviations, like X for EXAMINE.)

What I intended to convey was that the amount of typing should not be a consideration when deciding whether a game should rely exclusively on compass-based navigation (irrespective of whether it allows the user to abbreviate the compass directions). Maybe that wasn’t the intent of the bullet-point list, but I thought it was.

1 Like

I think my own association is fueled by games like Brain Guzzlers from Beyond, which relate compass directions to a literal compass. Since I never know my directional orientation in real life without looking at a compass, that also feeds into my perception.

With Eat Me, I decided at the outset to use some old-school design purely because it’s “expected” by the IFComp audience. So the compass directions are baked into the game. You’ve got rooms designated as “east cell” and “west cell,” etc. Changing the navigation would entail changing the map. Too hard at this point, but my experience with Eat Me certainly informed The Bat.

1 Like