Aug 062020

How is the world represented? Where does the player exist? For traditional Multi-User Dungeon games and their descendants, this question has a simple answer: the room! And there really isn’t anything wrong with this answer. You can represent all sorts of environments and systems with this construct. But let’s examine the traditional room… and why we decided it wasn’t suited to our needs.

The Room

The traditional room is just a thing that contains other things. It has a description, so you can read it and determine whether you’re in a coffee shop or a dungeon cell. You get an easy-to-read list of other things in the room with you, whether furniture or other players. And you usually have a list of exits or other commands you can type to move to other rooms, and in this way, you traverse the game world. It’s generally understood that, with the exception of long-range player communication, the list of objects you can interact with at any given time is restricted to the list of objects in the room with you.

This has a lot of advantages. It’s worked for years, as anyone reading this is likely to know well. It’s simple and easy to understand. Creators can quickly and easily add a variety of content with this system, using rooms to paint a picture of an all new environment with nothing but the written word.

But rooms have disadvantages too. How big is it? A room can represent anything from a tiny dressing room to an entire city block. Someone in the next room might be two meters away or twenty. How do two rooms relate to each other? Many games have an exit system where you would type “trail” to go down a forest trail, but what direction is this? Compass directions are less vague, but far from perfect. If you’re placing a room down a few steps and to the east, should the exit be down or east? You can add some awkward construction like “eastdown” but, if positioning is really important, that may not tell the correct story still.

There is also the problem of “speedwalking.” Once a player knows an area well, they can traverse it as fast as they can type exit commands. Unless the game stops or delays them somehow, they can cross an entire city in three seconds. You can solve this by enforcing a delay before a player can leave the room, but this just feels like lag and leaves the player impatiently hammering commands.

But there are other ways to solve these problems, other ways to represent the environment — not just in other types of games, but even in text-based games. We’ll come back to this shortly, but first, let’s discuss some of Signal Nine’s specific needs in this area.

What We Needed

Signal Nine is a game where location and environments are important.

It started with the combat mechanics. Since combatants often use firearms, range is important. If your enemy has bonescythes, you probably want to be engaging them with your rifle from a safe distance. But in your standard room, all contents are assumed to be simultaneously adjacent to each other, so who’s in melee range and who isn’t?

In the past, we’ve solved this with an “approach” command, where it takes a few seconds to get into melee range of someone after which retreat becomes complicated, but this is all abstracted and it is often difficult to visualize. Also, you should be able to do things like use a table for cover, but are you close enough to the table? Is your enemy on the other side of the table from you, or are they behind it with you? If Person A and Person B both approach Person C, are they then also in range of each other, or does Person A have to approach Person B as a separate process?

Also, there are different states of cognition. Some characters will have augmented reflexes and some may even be robots. Someone who is just faster is a classic cyberpunk trope, but how do you represent this greater speed in a satisfying way in the game? How much time does it take them to get across this room? That depends on how big the room is, but traditionally, we can’t quantitatively determine that.

Relatedly, if you have a sniper rifle, how far can you shoot? Into an adjacent room? Across two or more adjacent rooms? That means your maximum range might sometimes be three city blocks and other times just from the bathroom to the living room. Also, what if line of sight should logically be blocked?

How do you figure all of these things out with traditional MUD rooms? Well, you can’t! At least not without a lot of abstraction and contrivances. As we attempted to model these things in some logical way, we found our “room” construct gradually evolving into something very different.

There Are Other Ways


Screenshot of Cataclysm: Dark Days Ahead

This is a screenshot of Cataclysm: Dark Days Ahead, a roguelike. This shows it being played with a graphical tileset, but it can also be represented with nothing but ASCII characters, making it a technically text-based game. It is tile-based, so that what you see is what you get: if you’re going to take a long-range shot at a zombie down the street, it’s two screens away, and you know you’ll have to be very accurate in order to make the shot. If a car or a wall blocks your line of sight, then you’re not going to be lining up that shot at all.

By having environments like this, all of the questions from the section above are easily answered. It is also easy to see where having above-average speed becomes important.

In some ways, Signal Nine bears a lot of resemblance to a multiplayer roguelike game. Our “rooms” are nothing but organizational tools for the creator, not apparent to the player. Instead, the player will be traversing tile-by-tile across a seamlessly interconnected world. You’ll know how far away you are to other players, when you’re behind cover, and who is in your line of sight.

Here’s what a tilemap in Signal Nine looks like:

Signal Nine tilemap

This is a work in progress and its appearance will evolve as we continue to develop the game. As you can see, we don’t have a nice graphical tileset for it, but perhaps someday! We do, however, have a large variety of colors, far more than the standard MOO ANSI set, if your client supports them.

The Pseudo-Room, and Accessibility

Before we go any further, let’s address the elephant in the room: We’re aware that many current players will have difficulties using a tilemap. We’ve kept this in mind throughout development. While a player can stare at the map all the time if they want to, this functionality is mostly just there to provide quantitative values for the movement and combat mechanics. Using the “look” command instead will display what is very nearly a traditional room view, and any information that can be gleaned from the visual tilemap is also represented — often more usefully — in the room’s text description.

Here’s an example:

[Integrand Inter-Solutions Warehouse]
This warehouse is an expansive concrete cave, plain and stark under fluorescent lights. The bland interior is jazzed up only by colorful safety posters and, occasionally, the eye-catching packaging of the Integrand Inter-Solutions products that most of the workers here couldn't casually afford. Most of the objects, though, are in labeled cardboard boxes and crates stacked on pallets or arranged on shelves.
Two sets of long metal shelves are in the middle of the floor several meters away to the south. A metal warehouse bay door is in the wall several meters away to the northwest. A metal warehouse bay door is in the wall several meters away to the northeast. There are several wooden pallets around, the nearest of which is in the middle of the floor next to you. There are several metal conveyors around, the nearest of which is in the middle of the floor nearby to the northwest.
Elena is standing several meters away to the north.
Nearby places: Shipping/Receiving, Shift Supervisor's Office, Warehouse Manager's Office, Staff Lounge, Quality Assurance Office, and Front Sidewalk

(This text, too, is subject to change as development continues.)

This looks like a traditional MUD room, but it is really describing your current “space.” If you’re in a relatively small enclosed room, this usually represents the entire enclosed space. In other situations, like if you’re outdoors, you’ll see things in a radius around you. The warehouse floor is large enough to show this effect.

You do not have to navigate the space one tile at a time. If you enter a command that requires your character to be next to something, then they’ll go there automatically. You can also type the “go” command followed by an object, person, or location to walk there automatically. If you know your destination, the “go” command will swiftly calculate a path to it and begin moving your character there.

If you type “east” to go down the sidewalk, your character will walk until something stops them. What we call “flow descriptions” will help players keep their bearings. Short sentences will point out the bank to your north, the clothing store to your south, the intersection up ahead, and so on. Change directions or stop walking when you wish to.

Even in combat, you have commands like “cover” that will use combat AI algorithms to find the best spot for your character to take cover, taking your weapons range into account. This will, in fact, be much faster than trying to work out and navigate to the best position by viewing the tilemap.

To summarize, while our “rooms” now represent fully defined spaces, we’re striving to make this work seamlessly and painlessly with traditional MUD interaction. While viewing the tilemap may be interesting, it will not give much, if any, mechanical advantage to players who can take it in in a glance. Instead, the really useful information is gleaned through traditional narrative text and reacted to with traditional commands.

What This Gives Us

This system gives the world the quantitative aspects it was lacking with traditional MUD rooms. The range of your weapon, your line of sight, how fast you can run, how well you can hear, and many other statistics of your character now all have an immediately obvious impact on the game mechanics rather than needing to be abstracted somehow. Instead of your sniper rifle only working on somebody in the room with you, you can actually seamlessly aim at someone far down the street. Rooms are no longer just jumbled, unordered boxes of things — if you’re behind the bar, then you’re actually behind the bar, and have cover against somebody pulling a gun. If you’re going to try to sucker punch somebody, you can’t do it instantly just by virtue of being in the same room — you’ll have to find a way to approach them first.

And when you’re just focused on roleplaying, our aim is to have the game’s world present itself to the player in a familiar, fairly traditional way and be easy to navigate, so that you don’t even think about how everything is tiles. Our design philosophy across the game is complexity managed by simple, high level commands so that the game mechanics have sensible outcomes without players having to sweat all the details.

This also allows for what we think of as emergent gameplay mechanics. There are a lot of things we can do when we know exactly where everything in the world is in relation to everything else. Imagine a rival’s office building with well-guarded entrances… but they aren’t guarding the roof, nor the apartment building next door. Duck into the apartment building, go to the top floor and access the roof, then find a way across. All part of the heist.

It also lets your neighbors peek into your apartment through the windows. You’ll probably want curtains.

Traversing the City

All of this brings us to a question we’ve heard a lot since the Q&A: How do you get around the city?

The first and most obvious answer is your feet! With a command, your character will find a path through your current district, taking you on a stroll down to the shops or the pub while city life happens around you. This is fairly simple and usually doesn’t take that long, though of course it depends on just how far you need to go.

If your destination is across the entire district, or in another district entirely, you may want to consider a vehicle. Behind the scenes, we create districts by laying out the streets first and then placing buildings alongside the streets, like some sort of text-based SimCity. This will give you many opportunities to drive your sleek sports car, rev your beat-up old motorbike, or get flattened by a cybertruck.

If you don’t feel like taking the highway, mass transit will also exist. This will be a relatively fast and painless way to travel to a district of your choosing.

You’ll always have a home district, though, with physical neighbors, local shops, and favorite local meetup places. Characters of similar social class will tend to be grouped together in this way, and for various reasons, you’ll want to stick fairly close to your friends and allies. When you do leave your home district, it’s probably for a specific reason.

I hope this entry has illuminated a bit more about a game world and how you’ll be playing in it! For the next dev diary, I think we’ll zoom in from this rather wide perspective we’ve had and focus on something on a smaller scale: you! In a week or two, I’ll discuss your character and the sorts of things that make them an individual and makes playing them a unique experience.

 Posted by at 12:05 am

Sorry, the comment form is closed at this time.