Archive for February, 2011|Monthly archive page

going for Spring


Warning: serious rambling ahead.

For a while I’ve been kicking around a 3D mud idea, but certain problems seemed intractable. Sure, I could write graphical building tools and incorporate maps into the client, but the more I explored that the more I felt a deep disconnect between that and the experience I wanted in the text game itself. I had to ask myself if I wanted Godwars 2 with a z layer, and somewhat to my own surprise, the answer was…not really. What I did want was a more dynamic space than what you’d get with a classic room-based mud.

Some muds base their room layouts on coordinates (Dead Souls I think does this as well as the in-development Lithmeria), other muds such as Maiden Desmodus use pathfinding algorithms and landmarks to make navigation easier. The old Legends of Karinth, as well as many other muds, had a dynamic wilderness system in addition to a room-based layout.

What do I mean by dynamic space exactly? I’m talking about characters scaling buildings and cliffs, racing across rooftops, running rapids in a river, jumping off a waterfall…you could certainly simulate this with a 3D coordinate space, or you could write specific systems for what you wanted — rooftops code, or river-running code — or you could even create all of these spaces with a room-based layout.

But to step back even further for a moment — what is the text experience I want to create? My ideal is something between an open world game, and a path-driven game (think of a gamebook or a classic cRPG). In an open world game there’s always something else to explore, new territory to cross. In a path-driven game — let’s call it a directed game — the choices are constrained but each choice gets more weight and narrative and interactive impact.

At first glance this looks like a dynamic wilderness system plus a room-based layout. But when you’re in the room-based world you don’t really gain the advantages of the wilderness space, and vice-versa.

Not to say it wasn’t fun in Karinth, it was. But my thesis here will be that wilderness plus rooms doesn’t offer as many dynamic possibilities as a more integrated approach, and that a full 3D coordinate system the player interacts with directly provides a text experience different from what I’m aiming for.

First a little summary of how most muds handle it. The space of room-based muds is defined by rooms/nodes and exits. Rooms commonly have a sector/terrain type and an indoor/outdoor flag. Some systems use internal room coordinates, dynamic furniture, portals within the room (somewhat distinct from exits), allow missile combat between rooms, define an air/sky space above rooms, and so on.

As you move through the world, you get a room description (or not if you’ve turned room descriptions off in your configuration) and (sometimes) a list of exits, you choose an exit, get the next room description, and so on.

Karinth’s dynamic wilderness used an ASCII map that basically substituted for the room description, only it was a much lower scale view. The game generated the wilderness map from a large graphic map (reading the pixels); traditional room-based zones were placed on the map (much like Godwars 2 places dungeons on its world map, though those dungeons aren’t really room-based).

Two things stand out from this summary for me. First, that once a player has read a room description a couple of time, they’re unlikely to read it again. At that point rooms are purely containers to define the space (with a caveat for dynamic descriptions, which I’ll address in a moment). Second, once this happens, the player’s main interaction with the room is to use it to know where they are.

Of course this is blindingly obvious. But allow me to talk like an idiot for a while (if I haven’t been already). Disregarding coordinate-based muds for a moment, are rooms the only way to know where they are?

What is ‘where’ in a mud anyway? Where can mean a lot of things. It can be where you are in relation to something you’re hunting, or something hunting you. It can be on the way to a destination, or it can be a somewhere you run to or through while trying to escape. It can be a location in a quest or a safe haven where you can rest without fear of attack, a place of quiet work or a gathering spot.

It so happens that rooms are a simple and flexible way to make this work. Coordinate systems extend this concept and add a lot of functionality, at the price of some interface hurdles and other technical challenges. Rooms on a coordinate grid is a third possibility. But is there another way to do it?

Going back to an open world + a directed world. How could you abstract the space in a mud in such a way to create the environment where that experience would develop? I think you could use four elements.

  • spaces
  • surfaces
  • paths
  • features

Spaces are containers of any size, arranged in a tree. These aren’t rooms as we know them in muds — I don’t know of any room systems where you can examine the outside of a room, for example. They’re more like a basic thing in a mush; the base thing in Godwars 2 also works similarly I believe, as a container you can put things into (and examine from the outside). I’m not calling them things or containers because I don’t want to pin them down in such a way; a space could be a treasure chest, a house, an ocean, or an atmosphere just as easily.

Surfaces are 2D surfaces (in the mathematical sense) related to spaces, such that they don’t exist on their own. A surface always is in or on a space, in other words. A surface would be a ground or wall plane, for example.

Paths connect spaces, and usually lie on a surface.

Finally, features are interactive or dynamic elements that are not necessarily spaces, though they may be spaces themselves, and relate to paths, surfaces, and spaces. For example, a path might cross a chasm. The chasm could be modeled as a space itself, but often it would be more convenient to make it a feature of the path.

So, why bother? What can you do with this model that is harder to do with rooms or coordinates?

Consider the ideal again — open world plus directed paths — in light of this example: A group of players want to go explore a ruined castle they’ve heard of up in the mountains. They find a path to the mountains and set out.

Now, if they’re not moving through rooms, or coordinates, what are they seeing? Back to dynamic descriptions. The game, using the properties of the path, the characters, the space and the surface the path relates to, its features, etcetera, describes the experience of travel. The path has a distance which determines the amount of RL time this process takes. It’s like a pen and paper game where the DM leads a party through encounters and choices.

In other words, there are no room descriptions, but periodic messages that describe the experience. However, this seems to create a problem related to the discussion above — how do the players know where they are? Fortunately the answer is quite simple. Based on how far along the path they’ve traveled, where they are is a slice of the path at that moment, much like the description you see in Godwars 2 at any one moment as your character is traveling.

If that’s the case, though, isn’t this just a very circumscribed coordinate system? What makes a path better for this experience?

I think the advantage is that the path is especially created as a directed experience for the players. The encounters, the messages, can all be tailored for this experience as well. Of course, you could accomplish much the same thing in a coordinate system by adding paths to it — but what is the interesting part here? The path or the rest of the coordinates? I would argue the path.

But, that ignores the open world I was talking about. Indeed, straying off the path often is just as interesting! Laying out many, many paths from the ‘current path’ at every point of that path doesn’t seem ideal.

This is where spaces take over. In our example, the players are on the path, now in a forest (a space). A couple of characters have the idea of exploring…what happens?

The forest space now takes on some of the functionality of a path. It provides encounters, messages, and choices as the players explore. Whereas on a path the player doesn’t have to worry about direction (always either going forward or back), in the open space the players do need to make navigational choices presented by the space. However there are naturally other paths in the game world, and what happens is the other paths ‘pull’ the players towards them. So, the forest is a possibility space; once you stray from the current path, the forest presents multiple choices that lead you in the direction of other paths.

So our characters wandering in the forest come to a steep cliff wall. Here is a surface. The cliff could be a space of its own, but in this example it’s more likely that it’s a surface within the space of the forest. This surface has properties of its own — the difficulty of climbing it, what players may find on it, and so forth.

The cliff also brings up the question — once the players climb it, where are they? How far are they from the original path? How much time would it take to return? Could they return by some other way, not climbing down the cliff if it’s too dangerous?

Ultimately this question is asking, are spaces, surfaces, and paths actually related in space in a logical way? How would players map this ‘experience’ so it wouldn’t be blind wandering every time they wanted to enter the forest? Certainly it would be a frustrating experience if space wasn’t somewhat predictable.

The answer is that the elements are related in 3D space, but the player doesn’t interact with the coordinates at all. Their framework is basically time and spatial relations (how long does it take to go from this to that and in what direction, that is, a vector) and choice (what do I go to, and how). So in the case of descending the cliff, the players really are wanting to go back to the path from which they came, and so the game would offer them the option of finding another way around the surface, taking time and spatial relations into account.

By completely abstracting the 3D world, yet maintaining it in the underlying simulation, the player gets the dynamic movement of an open world and the directed experience more similar to a classic room-based layout. The game stresses what’s important — time, spatial relation, and choice — while not bothering the player with micromanaging coordinates.

It should be clear that the text experience you get here probably won’t be appealing to many players used to room-based layouts, but I feel that it could attract a different group of players with its ‘directed freedom’.

So, where to go from here? With any luck, a prototype, using Pants for networking.