Signal Nine Dev Diary #2: The Environment

 Dev Diary, Signal Nine, Text-Based Games  Comments Off on Signal Nine Dev Diary #2: The Environment
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

Signal Nine Dev Diary #1: City Simulation

 Dev Diary, Signal Nine, Text-Based Games  Comments Off on Signal Nine Dev Diary #1: City Simulation
Jul 252020
 

A key aspect of cyberpunk is the idea that the main character is just one minor player in a very large setting. There are lots of other people around and every one of them has a story, even if you don’t necessarily ever learn it.

One of our design goals for Signal Nine is to create this feeling that everyone, not just you, has a part to play in the world. Also, in terms of game mechanics, certain systems will benefit from involving non-player characters with knowable and consistent identities.

In other words, our goal is to simulate an entire city. At the same time, we want to avoid the overhead and bloat that could result from an overcomplicated system. So we’ve built our city out of basic building blocks — each simple by itself, but creating complexity when combined.

Buildings

Buildings are entities unto themselves with their own individual characteristics. They may be residential or commercial, office buildings, factories, or warehouses, or buildings for city services. There are also arcologies, large buildings that are essentially self-contained ecosystems, containing living space, food, places to work, and everything else needed to live.

In terms of mechanics, buildings represent not just a collection of rooms but may also contain things like apartment complexes and other businesses. These happen to be our next building block!

Businesses

If you’re familiar with Star Conquest or similar text-based games, you’re used to stores just being rooms that seem to magically dispense items. Signal Nine is a little different in this regard, in that many stores will not operate unless staff are present. Of course, with such a healthy night life, most places are open twenty-four hours a day.

Stores have a few different types of behavior. Some will simply let you buy an item immediately much like you’re used to, with the clerk just there to passively complete the sale. Some will let you examine and carry around the merchandise before you complete the purchase. And then there are restaurants, where food will be prepared and then served to you.

Of course, stores and restaurants are just a couple of examples. A city has all sorts of activity going on in it, and our business system makes it easy to define all of these different locations and functions.

So how do businesses know who they want and when they want them? Businesses create jobs!

Jobs

There are several things that jobs help define: location, as in where you go to work; shift, the stretch of time you are there; pay and the social class your wage allows you to enjoy; and behavior, or what you do while you are at work. A job is essentially a role to fill at a business, and the same job may be performed by different people over several shifts. Each job for each shift is essentially a slot that someone can fill.

Many jobs are quite basic. For example, a store clerk’s job is really just to go to the store and stand there until their shift is over. Others can be much more complex. For example, while a beat cop’s job is technically at the police precinct, their job behavior will be to patrol the streets, and new tasks may be added dynamically based upon what they encounter.

This brings us to the simulation’s final basic component: NPCs.

Non-Player Characters

The city simulation generates an NPC for each unfilled job slot. This covers everything from low-level employees on subsistence wages all the way up to powerful megacorp CEOs. In an abstract sense, even things like being unemployed and homeless can be a job, in that there is no reason not to use the same system to generate and define the behavior of all sorts of NPCs.

NPCs have unique appearances and may even have cyberware. They wear certain styles of clothing depending on their social class and personal taste. Just like a player, they choose a place to live based on what they can afford — you’ll be living alongside them. They also have a need for leisure, and will visit a place that appeals to them in their off hours.

As an example, meet Humberto Henderson. He’s a 47-year-old American citizen who has residence in The Sprawl. He works at China Tom’s, a noodle bar franchise typically worked by one employee per shift. This particular noodle bar is in Gray Acres Arcology, a large concrete monolith of a building. Humberto, the poor soul, also lives in the same building, up in Apartment 33. It’s a small place, but he’s single, so it’ll do. He’s an expert at customer service and has also picked up a lot of street knowledge in his line of work. In his off time, he likes a drink as much as the next guy, but being a sole proprietor of a popular franchise, his income also allows him to partake in some finer shopping now and then.

As you can see, each NPC will appear to have his or her own little story, thanks to a system of procedural generation that keeps the details consistent. Humberto will probably never be at the forefront of any plot, but he’ll be there in the background doing his everyday activities, and what he’s up to will make sense in his implied story. Humberto was picked at random, but every NPC will have these details. NPCs can also generate as roommates, romantic partners, or spouses of existing NPCs. Along with their coworkers, this gives them a web of relationships, something we’re likely to expand on as the system develops.

Why do all this? Because sometimes it’ll be important! Imagine some middle manager has a key to a place you need to get into. Rather than breaking in and fighting through security, your decker can hack the guy, find out where he lives, and surprise him where he sleeps. Scenarios like this can only work if the NPCs have identities, addresses, and lives.

Putting It All Together: The Scheduler

The activities of non-player characters will often appear to be random and spontaneous, but behind the scenes, it’s all predetermined like the spinning of the Fates! In order to minimize overhead, what the NPCs will be doing minute by minute for the next day is worked out all at once in a schedule bake that takes place in the wee hours of the night. While it sounds boring and not very spontaneous at all, this can also help to ensure that exciting events take place: make sure someone is in this dark alley at the same time as this thief, and then this detective will be investigating the scene two hours later!

Of course, the system also leaves room for dynamic events. If a player is shot in the street, their favorite private EMT service can dynamically respond, traveling to the scene and trying to save their life. If combat erupts, NPCs will certainly be reacting to that rather than slavishly keeping to their schedule, and once they’re safe, they’ll attempt to resume what they’re meant to be doing. The daily baked schedule simply sets the scene, letting background events play out with minimal overhead while other things happen in and around them.

Future Development of the City Simulation

What’s been described here so far is already a finished system, aside from some of the more specific job behaviors. And it is good enough for alpha and beta tests; we don’t want to be knee-deep in luxurious feature bloat when there are still core systems to complete. But once higher priority tasks are completed, there are planned aspects of the city simulation that we’re eager to develop:

  • Children. Some of the NPCs should have kids! A childless world will seem strange.
  • Needs. While NPCs visit food service establishments while seeing to their leisure need, they don’t need to eat as such, and don’t require much of anything else. We would like to make their behavior more organic by giving them more needs they’ll seek to fulfill, even doing things like carrying snacks or stocking their home with meals.
  • Individualizing. Similarly, we would also like NPCs to be able to buy and place furniture at their home, buy changes of clothes that fit their style, and so on.
  • More detailed behavior. NPCs, when they go home, pretty much just stand there as if nobody will be watching them, which is fine for now, as mostly nobody will. Eventually, we would like to see them doing things like visiting friends, cooking meals, watching television, and so on, so that if a player does bust into the apartment, spy through a window, or hack a camera, the NPCs are doing things that make sense. With the schedule bake system, even things like this can be done with little extra overhead.
  • Relationships. NPCs should track who they know, what type of relationship they have, and how much they like those people, and this should influence their behavior.
  • Life changes. Details like an NPC’s job, living situation, whether they’re romantically entangled, and so on are largely determined at the time of generation and then remain static. We would like to see these things be able to change over time: promotions, divorces, new relationships, and so on. Of course, this will tie closely into relationship tracking.

And that concludes our first dev diary! We picked this topic because it gives a broad overview of the city you’ll be playing in: streets, buildings, and residents! We’ll plan on another soon, taking a look at a different core system, giving some insight into the game’s design and what you can expect when we’re ready to open it to players.

 Posted by at 12:44 am

Signal Nine Dev Q&A

 Signal Nine, Text-Based Games  Comments Off on Signal Nine Dev Q&A
Jun 082020
 

We asked players of our current text-based roleplaying game Star Conquest to give us their questions about Signal Nine, our upcoming cyberpunk roleplaying game! And here they are (reworded for brevity) along with our answers!

Q. Where does the name Signal Nine come from?

In Unix-based systems, a process that receives “signal 9” is terminated. The signal cannot be ignored and kills the process immediately. Signal 9 can also be represented ominously as SIGKILL. In the wider context of cyberpunk, we hope it evokes the image of a cold and unfeeling machine sending this SIGKILL down the line and straight into a hapless decker’s direct neural interface.

But mostly, naming a game is hard and we thought it sounded cool. Continue reading »

Announcing: Signal Nine

 Signal Nine, Text-Based Games  Comments Off on Announcing: Signal Nine
Oct 122019
 

The can fell into the receptacle with a heavy clunk, and as he pulled it out, its reflective surface shone with the light of the vending machine’s constantly swirling advertisements. Four hundred milliliters, one hundred Calories, eighty milligrams of caffeine, seventy milligrams of sugar, he thought, then cursed to himself. He only knew that because of the Deepsearch datachip, which told him a lot of things he didn’t particularly care about, like a second brain producing intrusive thoughts of perfectly memorized useless facts. He should’ve left the thing at his desk, but it was a pain to get back into the proper headspace if he took it out, and it wasn’t like it was classified or–

His train of thought was derailed as he turned to see a short, dark-haired woman standing extremely close to him. He glanced from side to side. He had at least a foot on her, but somehow he still felt trapped. It was something in her eyes. “Uh, can I help you?” he asked.

“Probably.” The woman tapped a spot behind her ear, where chipsockets usually were installed. “That datachip. Give it to me.”

“Uh, I really can’t, I–”

The woman grabbed him under the arms, lifted him up, and shoved him back against the vending machine. It did not seem to particularly strain her. Seriously augmented, he thought. Oh shit.

“I don’t have time to debate it with you,” she said. “You’re going to give me the chip, and you’re gonna say you never saw me. You just lost it.”

He was breathing too fast. His hands were shaking. The only thing he could control was whether he held onto his soda can, and so he gripped it with all his might. “Listen, I can’t just lose it, my supervisor would–”

She sighed and transferred her grip to his throat. His eyes widened with a sudden certainty — that the last few moments had been a series of minor fuckups on his part that were about to culminate in a very sudden escalation. He opened his mouth wide, trying to find the breath to apologize, to make it right–

And she squeezed. Hard. Continue reading »

Squidsoft MOO Server Updates: The Approach to SQ-1.0.0 (SQ-0.1.12a to SQ-0.3.1)

 Server, Text-Based Games  Comments Off on Squidsoft MOO Server Updates: The Approach to SQ-1.0.0 (SQ-0.1.12a to SQ-0.3.1)
Oct 152011
 

Things in the server code room over the past year (but really, the past month more than anything else) have been hectic, but I suppose that the changes should also be listed here as well, for posterity.

Overall, on Star Conquest, this pretty much meant a 66% reduction in CPU utilization, though before all of the performance improvement changes were put in we were running over 120 simultaneous AI pilots in a sector without the server missing a beat.

Still, we could probably use an upgrade some time in the future.

Detailed changes after the break.

Continue reading »

 Posted by at 11:24 pm

Server Status Upgraded to “Not Airborne”

 Server  Comments Off on Server Status Upgraded to “Not Airborne”
May 022011
 

Everything should be well now, just waiting for the DNS to propagate, which seems to take about two minutes these days.

 Posted by at 8:08 pm

Star Conquest October to January Update

 Star Conquest, Text-Based Games  Comments Off on Star Conquest October to January Update
Jan 102011
 

Dear diary,

I haven’t forgotten about you. I just….I haven’t had time to answer your calls….

Listen…. I think it’s better if we….had a break, you know? I need some space.

Since October so many wonderful things have happened. Several Gamma security clusters of space were added to the game, allowing for player versus player conflict without gaining the attention of the navies. And so many bugs were fixed! A new control scheme for players who fly sans-keypad…

So many new crafting recipes, including ones for space-launched interdictors. Navies are less uptight about the errant stray shot. And while you can’t repair past failsafes anymore, extreme burst damage from a big ship no longer breaks three failsafes at once like how it used to, and it adds an emergent feature of attrition.

Bari were reintroduced, but so were a totally revamped felo, with multiple breeds and genetics. And you can switch out your battlesuit at ANY spaceport now.

We gave battlesuits other love too, with new per-conquest raid missions and a buff to the advanced RATS battlesuit.

We’ve released several new ships and advanced upgrades for mid- and high- level pilots, and most recently we have added rental starships targetted at cadets and other players with low amounts of points, equipped with a reasonable level of upgrades.

Thanks for listening to what’s been going on in my life, diary.

 Posted by at 7:18 pm

Star Conquest September Update

 Star Conquest, Text-Based Games  Comments Off on Star Conquest September Update
Sep 242010
 

Greetings! Time for an update on the state of Star Conquest!

First the good news: our efforts at generating interest in Star Conquest have resulted in the creation of over 70 new characters since the month began, and a return of peak numbers to 20-25 active (not idling) players! That’s a pretty good start, but we’re hoping, of course, to keep up the momentum and keep those numbers growing.

Now the bad news! Long hours at my real job have prevented me from making a great deal of progress on that secret fifth category of points, which I may as well name now: command points. There is to be an aspect of both space combat and ground combat, and I’ve made some progress on the ground combat front, particularly in adding a redesigned form of vehicles. But the command point activity can take place in a number of settings, and I think to get the system out sooner, I’ll set aside the ground combat for now and concentrate on getting the space combat portion working (as those fundamentals already exist), along with the basic functionality of the whole thing. Ground combat missions can then be added in later in a new setting, which will be more plot-appropriate anyway.

But before that, the results of the survey we did this month have convinced me that I should shift my focus a bit. It’s evident that very, very many of you guys want more variety in terms of industrial activity. Upon reflection, using salvaging (SC’s oldest and crappiest point-generating activity) as the top method of gaining industry points really isn’t acceptable. What we should have is, ideally, an industry activity at the top level which is as engaging as some of the combat activities are, and not so mindlessly repetitive as salvaging. My goal is to get that system designed and at least partially coded this weekend. I cannot tell you in detail what form it will take, because at the moment I really have no idea!

So that’s where we stand at the moment. As always, we’re looking for your input into the best ways to gain and retain new players, as higher peak numbers open up many possibilities!

 Posted by at 3:23 am