Any idea how to implement this?

Note:I haven’t slept last night, so blame any grammatical mistakes on fatigue :slight_smile:
Is there any game or system that deals with navigating a world map without rooms? Say, if a game was set in interstellar space (or something), creating hundreds of rooms named “Cosmic Dust and Emptiness” is not viable. And using coordinates seems a bit overkill. Any suggestions?

PS. I do realise most authors won’t need this but still, just in case.

I believe the standard recommendation is

Looks good. I wish the source was available, but whatever.

Essentially you’d need to build it like a simulator - one room with coordinates. If you navigate somewhere interesting, and say … land on a planet, only then you’d move a player (or the whole ship for that matter) to a different room.

If you don’t mean a game with space ships, you could always define your own new directions different from NSEW up/down so you could simulate multi-dimensional travel…you could have a time travel dimension that was traversable using directions such as AFTER and BEFORE. Or you could bewilder the player with a compass that includes directions that fold them into the fourth dimension of a hypercube.

And don’t shun rooms. You can decorate them to represent anything you like. One room can represent a million light years if you want.

CYOA systems can in general implement space without rooms pretty easily, I guess.

In general it’s going to depend on how you want things to actually work. Assuming you’re using a parser: If you want the player to float around in Cosmic Dust and Emptiness until they reach a specified coordinate point, then you’ll need coordinates. If you want the player to float in the Cosmic Dust unless they enter a specific series of commands, you could just have one room labeled “Cosmic Dust” and keep some list of the navigation commands the player has entered, moving the player to another room when they’ve entered the right sequence. If nothing interesting happens in the Cosmic Dust, then don’t implement the Cosmic Dust at all and have the player use “fly to Aldebaran” or whatever. Etc.

If you do decide to go for coordinates, you might have a look at this Inform 7 6G60 code for inspiration (and some of the ensuing discussion). I’ve never put that in a full-fledged game, though.

Also checkout out Hoist Sail for the Heliopause and Home.

I wasn’t thinking of discarding rooms altogether. Let’s say there’s a game in which a player has to wander around a SINGLE playground looking for something. With the room approach, you’ll have to break the playground in a grid which seems a bit unnatural (“Leftmost bit of playground” “Upper right bit of playground” “Centerish rightish bit of playground”).

I thought it might get unwieldy, but then I don’t have another idea anyway. And thanks for that link.

Well, you could give all these rooms the printed name “Playground”. And it needn’t necessarily be a grid. Though for this particular application I might suggest something like the Castle of the Red Prince approach, where whenever you want to interact with something you go to it. The Stately Gardens example in Writing with Inform (6G60 at least) does something like this.

I guess I’ll code a template for a Room like construct using 2D coordinate system, a primitive collision detection, etc.
Now I know what DavidC meant by “bleeding from my eyes and ears”:

I think Shade demonstrates quite handily that that need not be the case.

The example I’d throw out is not Heliopause, but Hunter in Darkness. I implemented a multi-thousand-room maze with one (source code) room.

The first question you run into is: how are these rooms distinguished to the player? You can display coordinates, or use a generative text system to create random descriptions for each room, or pseudorandom descriptions. (Hunter uses seeded deterministic generation, because the player is expected to revisit rooms while exploring. Heliopause uses random descriptions, because the player isn’t.)

The second question: can the player mark rooms? In Hunter, the player can drop objects in a room, so I need code to sweep objects offstage and back on as appropriate. In Heliopause this isn’t an issue.

(The zeroth question is “Will this gimmick make your game better?” but only you can answer that.)

Don’t think quite so literally like a map. If you don’t want it to seem like a map, you could do locations like “Near the Slide” “The Dreaded Swingset” “Monkeying on the Monkey Bars”. There are also extensions you can use so the player can type GO TO SLIDE and not worry about compass directions.

You can also tinker with scope so that the player can see and examine and talk to (but not touch or physically interact with) features and people in other rooms, which lends to the “open space” feeling while using standard rooms.

This is the entire problem. I was just playing LoZ: Oracle of Ages (again) and this is exactly what I thought- How can you help player navigate (and help authors create a navigable) world map in IF this effortlessly? One idea was to use somekind of ASCII art based map like Rouge in a corner of screen for reference but that basically kills the spirit of IF. Actually printing out current coordinates destroys the immersion (“Your position is X= 50 and Y= 35 with origin at upper left corner of the field”. Yuck). Making multiple rooms with procedurally generated descs is fine but looks like bad code. After all, it’s the same playground; it should be a single room. Navigable rooms are no good either: nothing practically changes if you move one single step west (unless you put your foot on a switch or something).

I just thought my system should offer something that others don’t. Maybe I got too much ambitious.

ASCII art might not be a bad idea, actually, if it’s a significant part of the game.

Weeelll, to me, typing “w” and “n” when you are actually seeing a map just feels a bit unnatural; like typing “kill grunt with pistol” while playing Halo. I’m fiddling around with ncurses library, maybe something will work out.