I had asked a similar question in the Inform boards before, but this is more of a design than code question. The answers I received in my technical question led to the understanding that Inform doesn’t care about how many rooms are “up” from it. However, I am working in TADs now, and regardless of what system I work in, I am trying to implement a predictable grid system so that I can map rooms not only by their connectors, but by numeric coordinates. I want to do this so that I can create a cubic “map” (I don’t know if I’ll show a visual map to the player, but this would be feasible with the coordinate data available). The map has other uses to me as an author for programmatically generated content.
My questions aren’t about how to do any of that, or if it is a good idea in any specific system mentioned above or otherwise. I am still struggling with the best way to name the new directions that will need to exist so that a player can interact with them.
So, if we envision a cubic grid in 3 dimensions, with the current room at the center, we still have our standard directions “north,” “south”, “east”, etc… however, now I need to introduce new directions “up north”, “down north”, “up southeast” etc… but those names might be confusing, especially in a list of possible exits. Assume that I do need to build my map this way, 1 room to one direction, but having a direction for each cardinal direction, as well as a down or up paring for each cardinal direction. Does anyone have any good ideas for how to name these…
I thought about using pilot lingo, like “10 o’clock high” but, that’s pretty unintuitive to most players, and to myself really while coding. I just don’t know if there is anything better than “up northwest” to represent that…
The Escher Stairwell
exits: up down southeast northwest up-northwest down-southeast
You find yourself at the crossroads of an impossible array of staircases, many heading off in physics-defying directions.
In this room, there are 6 connected rooms in a 3D space. Each room needs a unique direction defined for it. I used the best option I have so far to define variations of “up” and “down”, conjoined with cardinal directions. I’m trying to determine if “up”, “northwest”, and “up-northwest” are going to get confusing for players. Especially if the abbreviations for them are “u”, “nw”, and “unw”. I don’t know that I can think of any better names for them though myself, so I am asking if anyone has any better ideas.
I don’t know that I’ll be putting an Escher stairwell in an actual game… as that would also involve custom logic for the directions such that going up-northwest ends up in a result of you popping out a door that was actually down-southwest of your original point of reference. I didn’t mean to complicate this with the specifics of this example, but rather that just in general, there are always 26 hypothetical directions to go (I’m not including “north-by-northwest” and “up-north-by-northwest”… I’m sticking to 8 cardinal directions, plus the up and down variations, and up and down directly vertical).
The Escher staircase was meant as a hopefully easy to envision use-case, for the directions needed themselves. A more realistic game would have something like this perhaps (and I’ll amend the typical exit listing syntax to be part of the descriptive paragraph of the room, which should help, and is something I want to do anyway in the real thing):
The Stone-arched Breezeway
From up here, you can see the rest of this magnificent castle. A ladder leads down to the courtyard below. Stairs lead down-southeast to the servant's quarters. Stars lead up-northwest to the royal chambers. Another ladder leads up to the lookout tower. A door leads southeast to the library.
In this case I’d say stick with upnorth, upsouth, etc. For simplicity’s sake you could leave out the “triple” directions (like down-south-west) and only include the 18 cardinal and ordinal directions.
Alternately, as most rooms in real life don’t have more than 10 exits, you could just use the built-in directions and mention whether each will go up or down (e.g. “To the southeast is the staircase down to the servants’ quarters.”).
Yeah, in a situation like that I’d strongly recommend simplifying your map, worrying more about user experience and less about precise specification. People tend to have more difficulty mentally mapping when a map makes significant use of non-cardinal directions; I’d expect new non-cardinal directions that are never used in natural speech to be even worse.
(I can think of exceptions - say, if your map is locked to an absolute grid and this is frequently significant for puzzles - but all else being equal, it’s something that you should design to avoid.)
@Draconis: That’s brilliant! So, I think I can provide the ability to use “up-north” or “un”, if a player finds that in the help menu, but during normal gameplay, the user is never presented with “exit: up-north”, but rather “there is a staircase to the north, leading up.” and just “north” or “up” are sufficient player command entries, and if there are more than one “north” or “up”, disambiguate. I think that’s what you mean, but at least that’s what I understood you to mean, and I think that is elegant.
@maga: I indeed wasn’t necessarily doing this for the user experience, but I wanted to make the user experience as painless as I can. I am trying to auto-generate random dungeons, and need a precise coordinate system on a grid to do this in any kind of sensible way from an authoring/programming standpoint. If you are in room x:0,y:0,z:0, then room x:0,y:1,z:1, is going to be the room “up-north” from you, as opposed to room x:0,y:1,z:0, which is “north” from you, and x:0,y:0,z:1, which is “up” from you. This could end up being useful for the user experience if I choose to go down the route of programming a visually displayed map, but really the reason I am doing it is so that I can have rooms check the coordinates of other rooms to decide if it is logical to consider putting a connector between the auto-generated rooms or not.