A problem of compass directions

To make an earlier point explicit: typing “forest”, “stream”, “clearing” hundreds of times would be very annoying.

3 Likes

That’s one advantage choice narratives have - you can make weird directions and interactions clickable.

You can also re-define new directions (in I7 at least) but that can end up being more trouble if you want the player to go CLOCKWISE or SUNWARD, for example.

It may be an artifact of Adventure, but I do think the reason it sticks around is because it works.

If I were in an unfamiliar building in real life, I’d probably get directions like “turn right, fourth door on the left, up the stairs, then turn right again”. I could follow that easily, and reverse it without any active thought.

But that reversal, for me at least, depends on a lot of deeply-ingrained instincts that don’t work in a text-based game—or even a graphical game that doesn’t give me full, FPS-style navigational control. It would take me at least a few seconds of actively thinking about it to turn that into “turn left, down the stairs, fourth door on the right”. If you’re like me, it probably took you a few seconds to realize that’s wrong: it should be turn left, down the stairs, turn right, fourth door on the left.

By comparison, “west, north, west, up, east” reverses trivially to “west, down, east, south, east”. I can visualize the Trizbort-style grid in my head without any issue.

Landmark-based navigation is all well and good, but in my experience, it’s only really intuitive for very linear maps. Let’s suppose I wanted to modify Adventure’s early game: you go downstream, then into the forest, then toward a clearing. How do you get back to the stream now? Maybe I went south along the stream, west into the forest, north into the clearing, so going east should take me back to the end of the road, but I would have no way of knowing those relative directions until I was close enough to see the road and the building again.

Tl;dr I believe compass-based navigation has stuck around, not because nobody’s ever tried an alternative, but because it makes it less taxing for players to navigate and easier for them to build a mental map. In real life we have various biological systems that make it easy to keep our bearings (e.g. it’s trivial to face the direction we entered a room through even if we’ve done other things since then); the convention of using compass directions is a way of replicating that, even if we don’t always use those absolute directions in real life.

6 Likes

After building a lot of choice-based exploration in Seltani, I decided that the clickable exits (in room descriptions) were also annoying. The next idea is a clickable map for each area, but I never got that far.

2 Likes

It is difficult to find a good alternative to compass directions entirely. In a cave it is almost a necessity. The same for large buildings and structures. Most structures are fixed in place and it works. What about structures and imaginary places that change their orientation? For example, shipboard directions, ie. POSH, port over starboard home. Or a place like Hogwarts that have movable staircases and necessary rooms that play hide and seek? Also, sunward mentioned in an earlier post. Sand Dancer? You have to provide clues that account for the changing direction of the Sun.

I just do not like clickable options in IF. For me, they remove the immersion and abstract thinking that parser games provide.

3 Likes

This notion of natural directions sounds amazing. I’m sure it can get cumbersome after a while, but just having the extra choice to GO TO RIVER (alongside the compass directions, of course) is just too cool to ignore.

I am very curious about how such a thing can get implemented… My guess (for Inform 7) is one has to define a new action (eg HEADING TOWARDS) applying to a room.

Perhaps one can also define a similar action to “any thing” and then find the room that thing is enclosed.

Thus, both > GO TO OASIS and > GO TOWARDS COCONUT TREE will find the quickest way towards the Oasis, the room enclosing the coconut tree, and then advance the player one step towards it.

Am I guessing correctly?

2 Likes

Example 306 in the Inform Recipe Book has some code that you can use to get started with this:

http://inform7.com/book/WI_17_10.html#e89

1 Like

In Inform 7, Emily Short’s Approaches extension gives you the support for this for rooms. Though not one step at a time – it tries to complete the journey to the destination, and reports how you got there, if you get there, or how you got to where you ended up if you don’t. After reading such a report, you could use compass directions to get to the inbetween places if you wanted.

You can extrapolate from Approaches to create the same action for things that aren’t rooms (e.g. coconut tree) though speaking from experience, this is a lot more work. There are usually way more non-rooms in the game than rooms. It hugely multiplies the number of ‘go to’ phrases the player can use and then you need to program carefully to make sure the game tries to take smart, logical journeys instead of dumb, illogical ones.

-Wade

2 Likes

That’s the idea behind Distant Movement, which tries to make the process of navigating to a place as seamless as possible (while you’re moving toward something, you can press enter with no command to keep going, or type a command to do something else instead).

1 Like

There are games that does not uses compass with somewhat success. I would recommend The lost legends of Redwall: Escape the Gloomer.

If you have a manageable environment, where you don’t need to orientate yourself, you can build that just using “doors” or capturing the action going into any object in Inform 7.

Imagine a fork where there’s an upper trail and a lower trail. The location has both objects lower trail and upper trail. Both can be examined, and in both you can enter, where you being teleported to the proper next location. Maybe it could be a little tedious to program, but it is a proper way to do compasless IF, using only the verb GO TO.

Also… I remember this hot debate, some time ago:

But I still in my opinion, the compass is unbeatable as an interface: Recently I’m playing the last CROCODRACULA, and the Ryan’s port shamelessly states the exists as this

NORTH SOUTH EAST INSIDE.

At the end of every description.

It is a commodity. It is easy to learn, and easy to get the bearings. It is easy to use. It is only rock and roll, and I like it.

3 Likes

I thought GO TO was considered harmful?

I’ll show myself out.

7 Likes

No. No?

The context is this famous paper from 1968.

4 Likes

Even GO TO pales beside the mighty and mind-boggling COME FROM statement.
(Fun fact: COME FROM was implemented in one version of the INTERCAL programming language, and one of INTERCAL’s authors is Don Woods of Adventure fame.)

8 Likes

And then you realize that

Several recent languages have adopted an Intercal-like, asynchronous computed COME-FROM concept. Only they refer to it with funny terms like “exception handling”.
— Hans Mulder

This tangent is not entirely off topic. Compass directions provide a sort of immediate structural clarity, to help the reader visualize the map of the game, just like loops and if-statements in source code help the reader grasp the flow of the program. Named exits are like gotos (or pointers), wildly leading from one point of the map to another.

And yet, a good writer can provide the same kind of clarity in the prose itself, without resorting to compass directions, just like a careful programmer can produce perfectly readable assembly code. And conversely, a badly designed game map with compass directions can be hard to visualize, just like a badly written program in a high-level language can be horrendously difficult to follow, even if there is no goto in sight.

3 Likes

I was waiting for an opportunity to mention Donald Knuth’s “Structured programming with go to statements” from 1974.

A while ago I was toying with the notion of implementing a dystopian language. One keyword was GOWHERE, which takes a 16-letter string (as part of an interpreted language) jumps to the first literal match in the source code (GOBACKWHERE would provide a backtrack, for symmetry).

OMG, I’m sooooo out of that state of mind to remember those kind of jokes XDDD so long time. Funny joke!

I can imagine a time travelling IF:

I COME FROM…

A land downunder?

2 Likes