Multiplayer

Outer Colony features multiplayer modes, allowing users to play games with friends via the internet.

A screenshot of two players, connected to the same world.

General Notes & Recommendations

  • To this point, multiplayer has only been tested by me and two friends. Others in our test group haven’t exercised these features, so multiplayer is likely to have more bugs than single player mode at this point. That’s OK! If you encounter a bug, feel free to post about it on our forums!
  • Multiplayer mode can be somewhat bandwidth intensive. You’ll need a solid connection, particularly a good upload capacity on the server, in order to support many users. In benchmarks run to this point, expect to upload ~30-50 KB per second per user on the server. A solid cable or fiber connection is recommended.
  • When a remote client first connects to a server, all of the world’s data must be transferred. For this reason, micro-sized worlds are ideal for the fastest connection times. Small worlds are usually alright, but medium and large worlds can take several minutes to load upon connection.
  • A strong CPU is also recommended for the server. First, the server is doing a great deal of data compression to make networking manageable, especially upon initial connection. Second, when you have many players with large colonies, it’s easy to have hundreds of human NPCs active at once, and this taxes a processor.

With those recommendations in mind, I hope you have fun with multiplayer!! It is easily my favorite way to play Outer Colony, and as far as how I personally play the game, multiplayer is the system’s cornerstone feature.

Hosting a Server

To host a server, choose multiplayer on the splash screen, then click Host Server. You’ll see the server hosting window, shown above.

  • An Outer Colony server has a single password. This, combined with a user name, is how players access the server and take control of their chosen colony. There aren’t individual passwords for each user.
  • You can choose to run the server on any port you’d like. The default port is 44222.
  • You can choose to create a new world when hosting, or to load an existing one.
  • Outer Colony features two server types, listen and dedicated. A listen server is one where the host computer has a player. A dedicated server is one where the host computer runs Outer Colony without the main interface, and all players connect from other computers.
  • You can set an autosave frequency for a server. With this setting enabled, the server will save and overwrite the world at regular intervals. It’s also possible to manually save server worlds after the server has been launched.
  • When you host a listen server, the player name on the host is automatically set to “Player”. Right now, this can’t be changed.

Joining a Server

To join a server, choose Multiplayer on the splash screen, then click Join Server. The Join Server window will become visible.

  • In the first box, enter the IP address of the server you’d like to join.
  • Specify the port number in the second box.
  • In the third box, enter your player name.  This is the name associated with the colony you’ll run.
  • Enter the server’s password into the password box.
  • Click Join when you’re ready to join the server. It may take some time to connect, since clients have to download the remote world before they can load in.

Chat

Once connected to a server, you can chat with other players using the chat box in the bottom left corner of the screen. Messages you type and send are transmitted to all players by default. You can also send a private message to one player by using the “/t” (or “/tell”) command.

For example, if I type “/t John Hi, John!”, it will send that message only to the player named John. The quotes are not a part of what you type to send a /tell message.

Posted in Game Design, Technology

Getting Started Tutorial

This tutorial provides a step by step guide to starting a simple, self-sustaining colony. It’s written to help brand new users learn Outer Colony and build their first successful settlement!

Table of Contents
Starting a New, Single Player Game
Generating a New World
Faction Selection
Pre-Embarkation Configuration
Selecting an Embarkation Site
Deploying Starting Machinery
Constructing Shelter
Designating Initial Rooms
Moving Your Socialization Area Indoors
Connecting Structures to the Power Grid
Setting Up Sleeping Furniture and Basic Furnishings
Beginning to Mine
Farming
Ore Refining: Obtaining Metals and Metalloids
Manufacturing Additional Equipment
Synthesizing Fabric
Manufacturing Essentials: Furniture, Food, Drink, and Attire
Further Building, Providing Individual Rooms
Constructing a Landing Zone, Trading, and Recruiting Migrants
Free Form Construction, Expansion, Building Defenses
Prepare Yourself, Advanced Topics

Starting a New, Single Player Game

From Outer Colony’s main menu screen, click the Single Player button, at the top left of the window.

title_getting_started

On the next screen, select the Start New World option to create a new world. Worlds are where the action in Outer Colony takes place, and you’ll have to generate one in order to play.

start_new_world

Generating a New World

Next, you’ll see the world generator screen. This is used to generate new worlds. There are tons of neat options to explore here, but for now, leave all the settings alone, and click the Generate New World button, near the top right of the window. This will generate a small world.

Once a world has been generated, you’ll want to identify a good spot for building your colony. Switch to the biome display by choosing Display: Biome from the display drop down box, near the top left of the screen.

small_world

Tropical dry forest, magnetite, and komatiite / basalt / QBR – an ideal start!

To look for a good starting location, click on the map to view details about areas in the world. For the easiest starting spots, I suggest a warm biome with moderate rainfall. Savanna and tropical dry forests are ideal for farming. Look in the Selected Area Info box on the right of the screen, and pay attention to the resources present. You’ll want to make sure that there’s at least one good ore for metals and one for metalloids.

Ideal metal bearing ores: Argentite, Bauxite, Braggite, Calaverite, Carnotite, Cassiterite, Chalcopyrite, Chromitite, Cobaltite, Galena, Goethite, Impact Crater Rock, Magnetite, Sperrylite, Sphalerite, Titanite

Ideal metalloid bearing ores: Basalt, Essexite, Komatiite, Obsidian, Quartz Bearing Rock, Trachyte

You may have to generate several worlds until you find a perfect starting spot. Once you’ve found an ideal location, click the Embark button at the bottom right of the window.

Faction Selection

After world generation, you’ll see the faction selection screen.
faction_selection

Choose your colony’s faction and archetype culture and click Next. You can find out more about the Core Worlders, Clans of Dagoroth, Surssians, and Kelgonians here.

Pre-Embarkation Configuration

After faction selection, you’ll see the the pre-embarkation configuration screen.

pre_embark

Here, you can customize your starting personnel and equipment. If you’re embarking in a warm biome, you can leave the default configuration alone and click the Embark button at the bottom right of the window to proceed.

Selecting a Landing Site

Next, you’ll be presented with a view of the world.

Tip: To navigate to the site you identified during world generation, click the World Map button, from the toolbar on the right side of the screen. This is the button that looks like a projected globe,shown here:

worldmapbutton

From this screen, click the area you want, then click the Warp to Selected Zone button to move there.

Once at the selected area, click the Select Embarkation Site button. This is the one that looks like a spaceship. Finally, click the spot on the world where you would like your crew to land. A shuttle carrying your team will appear, land, and drop off your starting colonists.

dropping_off_colonists

With your colonists on world, you’re now ready to start building!

Deploying Starting Machinery

Heavy machinery is an important part of any colony, as it’s needed for power generation, material processing, manufacturing, and more. Each colony starts with a few pieces of equipment, and I recommend deploying these right away so they can begin to function. We’re going to deploy several power plants, an ore refinery, and an equipment manufacturing station, which will all be present in your starting stockpiles if you left the default embarkation configuration alone.

See the item placement section of Room Designation and Item Placement tutorial for details covering how to place items in the world. You will want to set up both of your wind generators, both of your solar generators, your ore refinery, and your equipment and heavy machinery manufacturing station so that they’re all next to each other, in a group, as shown here:

equipment

With this machinery set up, you’ve got a small power grid and the machinery required to refine ore and manufacture more complex machinery. The basics you need to move forward are all set up.

Constructing Shelter

Next, you’ll want to construct shelter to get your colonists indoors and protected from the elements. You start out with a few light structures, which are portable and easy to deploy. Following the steps in the light structures tutorial, construct your all weather shelters in the positions shown below. Note that they need to be deployed on level terrain (covered below), but your landing area is leveled by the drop ship.

shelters

Your first two light structures, deployed.

Designating Initial Rooms

Now that your first two structures are built, you have to specify how they can be used by your colonists. The next steps involve viewing elevation data, viewing specific Z levels, and generally understanding world structure in Outer Colony. To this point, we’ve been viewing the world from the top down, but we’ll be using different views to issue orders and explore the world. If you’re not yet familiar with how 3 dimensional space works in Outer Colony, read this tutorial before you proceed.

We’ll want to work with the inside of our two buildings next, so check the View Interiors option in the view controls, near the minimap in the top right corner of the screen. This will show you what’s inside your two buildings, like the view below. Click the View Elevation option, too, to see the absolute altitude of (the Z level) of what’s shown from the top down view.

interiors

Viewing elevation data and interiors.

You can see that both buildings are empty on the inside, and that they’re occupying Z level 51. Using the view controls, switch to the Z level that your structures occupy (in my case, 51), by selecting View Z Level and typing 51 into the corresponding text box. Now, you’ll see a view of the 51st Z level, with levels below shaded in light gray.

level51

Viewing a specific Z level.

Using this view, we’ll first establish communal rooms inside each structure. This will designate the interiors for use by all your colonists, rather than having them belong to specific people. See the room management tutorial for details on how to designate rooms, but you can do this by selecting the room designation tool, clicking a space inside a structure, and choosing the Communal Room option. Do this for each building. You can check that this worked correctly by clicking the Advanced View Options button, which looks like an eye, and selecting the Room Data option.

This will show rooms in green, while showing non-room areas in red. If you specified the rooms correctly, your colony should look like the screenshot below:

advanced_view

Your first two communal rooms, correctly established.

Once you’ve verified that the rooms have been established, you can open the Advanced View Options menu again and select None to return rendering to normal.

Moving Your Socialization Area Indoors

Right now, your colonists are still milling about outside, potential in the cold or rain, like my example here. You’ll want them to spend their time indoors for a variety of reason, using the structures you’ve just created. Colonists spend most of their leisure shifts and free time in their private rooms or socialization areas. Socialization areas are designated places where your colonists can gather to socialize. One of these is created by default when you first embark, but it’s made outdoors as a mere placeholder until you can establish someplace better, like we did in the step above.

You can read the area designation tutorial for more details, but for now, we want to create a new socialization area indoors and then delete the existing socialization area, making our NPCs gather inside. While still in the Z level view, open the Advanced View Options dialog again, and select View Area Designations. This will show you where the existing socialization are is, like the image below:

Use the are designation tool, which looks like a tiled, green circle, to create a socialization area inside one of your structures. Make sure you’re on the right Z level view, select the tool, and left click + drag your mouse over the interior of the building. When you release the mouse button, the Designate Area window will appear, as shown below.

areadesignation

Leave the top option of Create Area Designation selected, and choose Socialization Area from the list. Click OK to create the new area.

Next, we have to delete the existing area. While still viewing the correct Z level and with the area designation tool selected, left click and drag over the tiles that contain the old socialization area. This time, choose Delete Area Designation from the Area Designation dialog, and select Socialization Area from the list (indicating that you want to delete the selected socialization area). This will remove the outdoor socialization area, causing your colonists to move to the new one, indoors. When this process is done, your colony should be looking like the image below, with only one socialization area and all of your colonists indoors.

indoors

Since we don’t need to view areas anymore, you can open the Advanced View Options window again and select None, returning rendering to normal.

Connecting Structures to the Power Grid

Next, you’ll need to connect your structures to the power grid. With access to power, powered equipment that’s inside rooms, like lights and machinery, can run. To connect your structures to power, follow the steps described in the free form construction article on your Z level view to build power lines from your power plants and machinery to your structures, as shown in the screenshot below. Make sure that the power lines are adjacent to each building’s exterior.

power_lines

Connecting buildings to the power grid.

Setting Up Sleeping Furniture and Basic Furnishings

By now, a few hours have passed since your colonists landed. While colonists won’t take any leisure time for a while, eventually their work shifts will expire, and they’ll need a place to sleep. If no sleeping furniture is available in any rooms, they’ll sleep on the ground, which will be uncomfortable and yield bad experiences and harm moods. As such, you’ll want to deploy the cots that you have as soon as possible.

While still viewing structure interiors on their Z level, use the item placement tool just like you did for setting up the heavy machinery to deploy the cots. You’ll want to place them in your secondary structure, the one that does not contain the socialization area. Without a socialization area, this will be a quiet room, ideal for the communal sleeping space.

cots_deployed

Cots deployed in the second structure. Your colonists will sleep well here when they eventually need to.

Beginning to Mine

Now that your colonists have basic shelter and a place to sleep, we need to start producing items that the colony needs. Many essential raw materials are obtained by mining, which is covered in detail in the mining tutorial. In order to mine effectively, we’ll have to identify the location of useful ores underground. Use the tile inspection tool and the Z level view to explore underground levels by specifying Z level values below the surface (in my case, levels of 50 and below), until you’ve found one that contains a cache of ore.

level_47

Once you’ve found a good level, select the mining tool (the button that looks like a jack hammer) from the toolbar. This will cause mining meta-order tools to appear, including the Construct Mine Shaft tool. Return to the top down view, click the Mine Shaft Construction tool, select a location for the mine shaft, and follow the instructions in the mining tutorial to issue mine shaft construction orders down to the desired Z level.

mine_shaft

Issuing orders to construct a mine shaft that extends to Z level 47.

Orders to dig out the necessary tiles and build stairs will automatically be issued. When completed, your mine shaft’s stairwell will extend down to the desired Z level. Return to the Z level view, and once the stairs have reached the desired Z level, select the Issue Mining Order tool (the jack hammer button) again. This tool is used to specify locations to mine by clicking and dragging it across tiles.

workers_in_mine

Workers mining underground.

Follow instructions in the mining tutorial to mine tiles that contain ores. Extracted ores will automatically be transported to appropriate stockpiles.

Farming

While some of your workers mine for ore, you can set the rest to work growing crops. By the default embarkation configuration, you’ll start with seeds for 3 types of crops: zronen (an easy to grow grain), xen berries (a high sweetness fruit), and grennage (an easy to grow vegetable).

From the top-down view, select the Plant Crops tool, click and drag across tiles, and select the species to plant to issue crop planting orders. Follow the instructions in the farming tutorial, and your farmers will start to till land and plant seeds.

crops_planted

Farmers tilling ground and planting seeds.

Grain is the most essential sort of crop for providing basic sustenance, so be sure that, at a minimum, you plant some zronen to start. The temperature and precipitation levels in a warm biome should be sufficient for seeds to grow without irrigation, and once the plants have sprouted, grown, and matured, orders will be issued to harvest the crops automatically.

Ore Refining – Obtaining Metals and Metalloids

Once your miners have transported ores to your stockpiles, you’ll need to refine the raw rock to obtain the metals and metalloids you need for manufacturing. Since we set up an ore refinery in the machinery deployment step above and it’s connected to our power grid (which, by now, should have generated enough power), everything is ready for refining.

The material refining tutorial describes ore refinery thoroughly, and it should be consulted for details. To refine ores, select the Material Processing tool, choose an ore, and specify the quantity you want refined. Use the Encyclopedia Tool to determine which materials are yielded by refining which ores when making your choices.

ore_refinery

Issuing an order to refine 80,000 volumetric units of magnetite, which will yield iron.

A worker will calibrate the ore refinery and deposit the necessary materials for processing. After time, the ore will be converted to elemental metals and metalloids, and these will automatically be carried from the refinery to a nearby stockpile.

Manufacturing Additional Equipment

Manufacturing items is an extremely important part of your colony’s progression, and a variety of new machinery will be needed to make all the things your colonists will need. Follow the manufacturing tutorial to manufacture the following items at your equipment and heavy machinery manufacturing station. These additional pieces of equipment are needed to synthesize important materials and manufacture other essential items:

  • Water Vapor Extraction Station X 2 (or more)
  • Fabric Synthesis Station X 1
  • Furniture & Consumer Goods Manufacturing Station X 1
  • Food & Drink Manufacturing Station X 1

Once manufacturing is complete, place all of this new equipment such that it’s connected to the power grid. Take care to place your food and drink manufacturing station so that it’s adjacent to the water vapor extraction stations.

deploying_machinery

Deploying the second group of machinery in preparation for more advanced manufacturing.

This connects it to your water vapor extraction stations, which comprise your newly built water grid. Over time, the water vapor extraction stations will draw moisture from the atmosphere, creating potable water that can be used in manufacturing and consuming power in the process.

Synthesizing Fabric

Next, we’ll use the fabric synthesis station we deployed in the previous step to produce fabrics. Fabrics comprise an important class of materials that are needed to manufacture many essential furniture and attire items. Follow the material synthesis tutorial to issue orders to produce fabric by clicking the material synthesis tool, selecting a fabric to synthesize, and specifying a quantity to produce.

synthesizing_wool

Issuing material synthesis orders to produce mineral wool from basalt.

Manufacturing Essentials: Furniture, Food, Drink, and Attire

At this point, the colony has sufficient infrastructure to manufacture most bare necessities to sustain your population. It’s wise to start monitoring your colony’s supplies and other metrics, manufacturing food and drink, and deploying additional power plants and water processing infrastructure as necessary. Your starting supplies should last quite a while longer, but as your population grows, infrastructure requirements will increase rapidly.

As the first world day draws to a close, your colonists’ work shifts will start ending, and they’ll begin to partake in leisure activities. To support leisure activities and keep your population’s happiness high, you’ll have to meet various requirements. Furnish rooms as well as possible by manufacturing high quality furniture from luxurious materials, like precious metals. Build datanet terminals and deploy them inside powered, communal rooms. Your colonists crave media, and if there aren’t enough datanet terminals to facilitate media production and consumption, they will become unhappy. You’re going to need bedding to furnish individual rooms, which your colonists will need once they start getting married and forming families.

To meet these needs, I recommend manufacturing the following items as soon as possible:

  • Datanet Terminals – Satisfy media-related needs.
  • Furniture to Improve Rooms (Potted Plants, Chairs, Tables, Sculptures, etc.) – Improve room scores.
  • Simple Bed – An easy to manufacture but good quality sleeping item.
  • Simple Lamp – All of your rooms need lighting during dark hours, or room score is vastly degraded.
  • Sets of clothing that include at least shirts, pants, and footwear – Needed to clothe newly born people.
basic_furnishing

Now rooms have better furnishing, after the second wave of manufacturing. Note the lamps and interior lighting.

Deploy these items in existing rooms and your starting colonists should be satisfied during their first leisure period. Your colonists should harvest the first crop of zronen soon, too, and at first, I recommend manufacturing brown bread as food and bottled water as drink.

Further Building, Providing Individual Rooms

By now, the first world-day has probably passed, and your colonists have had some time to socialize with each other and develop relationships. Depending on the sorts of people you have, romantic relationships may have developed, and couples may even have gotten married. When this happens, they need individual rooms for their families, or they will become upset. Now is a good time to view your colony’s burgeoning social network. From the menu bar at the top of the screen, select Information -> Colony Social Network Visualization. You’ll see your colony’s social network graph, which may look somewhat like this:

sn

The social network graph of a young colony.

Note the husband and wife links, as well as a boyfriend and girlfriend link. The married pairs will demand their own rooms for building their families. From the menu bar at the top of the screen, select Information -> Colony Requests to view the requests that your colonists have logged.

We’re going to need to provide rooms for these two married couples. Also, once a pair get married in my colony’s parent culture (Surssian), they might reproduce, so a child care area will be needed soon. We’ve got to build more. To make this happen, do the following:

  • Decide where to build your new structures and level the terrain there. Structures have to be built on level terrain, so use the level terrain tool (covered in the mining tutorial) to level a wide area for the new buildings.
  • Deploy the remaining light structures, just how we did with the first two earlier in the tutorial.
  • Manufacture some chemistry set toys. Children benefit from playing with toys, so we’ll get these ready for the first generation born in our colony.
  • Connect the new structures to the power grid by building power lines.
  • Furnish the structures with sleeping items (like beds or cots), give each a lamp, give rooms a Datanet terminal (if you want their owners to be able to access and create media from home), and furnish the rooms with luxurious items.
  • Deploy extra bedding and the chemistry sets to the room you intend to use as a child care area.
  • Create a child care area designation inside the room that you want to use for this purpose.
  • Create a communal room inside the building that’s being used for child care.
  • Create individual rooms inside the other buildings, assigning them to the colonists requesting rooms in the requests window.
second_wave_building

After the second wave of building, your colony will look like this.

Population and wealth will soon start to grow, and further steps will need to be taken to provide more housing, more elaborate building, and defense of the colony.

Constructing a Landing Zone, Recruiting Migrants

Interacting with the rest of the galaxy via trade and migration are very important aspects of a colony’s progression. To facilitate this interaction, your colony will need a landing zone that’s large enough to accommodate spacecraft, and we’ll build just such a landing zone next. Detailed requirements for landing zones can be found near the bottom of the Area Designations article, but in general, do the following to build one:

trade_mission

An XRT shuttle arriving at the landing site, carrying the first trade mission. Note the area designation view, showing the landing site in green.

By this point, I’m usually ready for a population boost from the next wave of migrants. Read the trade tutorial and engage in trade to acquire currency, materials, and items your colony needs. Read the migration tutorial and follow its steps to recruit your next group of colonists, as this population boost will greatly increase the productive capacity of your settlement.

Free Form Construction, Expansion, Building Defenses

At this point, you should have a sizable work force, ample resources for construction, and the capacity to expand. Concurrently, you’re facing a growing social network and expanding requirements of food, drink, housing, and more. You’ll want to start building in as efficient a manner as possible to accommodate these growing needs and to free up resources for defense and prestige projects. At this point, I usually engage in the following activities:

day_three

By the end of the first spring, the colony is established and off to a good start!

If you’ve made it through this tutorial, you should now have a small, but functional and largely self sufficient colony. Congratulations!! But don’t rest on your laurels, as you’ll now need to prepare yourself for the exogenous challenges that lie ahead.

Prepare Yourself, Advanced Topics

At this point, your colony is sufficiently large, wealthy, and established to attract the attention others. A variety of events, some fortuitoussome unpleasant, and some in between, will start to occur in and around your colony.

shipwreck

A shipwreck near my colony’s borders.

You’ll want to make sure that your colony is prepared to deal with emerging threats and to take advantage of opportunities. Explore these advanced topics to grow and shape your colony into the sort of civilization you want, so that you can survive against the many challenges of life in the galactic periphery:

Posted in Game Design

Bounty Hunters

Sometimes, new migrants arriving at your colony will have criminal pasts. If one of these fugitives is detected by a bounty hunter, you will have to decide how to deal with the hunter aiming to collect the fugitive’s bounty.

bh_options

Summary

  • The Bounty Hunters Guild is a galactic organization responsible for hunting wanted criminals.
  • Sometimes, when a migrant arrives at your colony, this person will have a criminal past.
  • If a bounty hunter from the galaxy at large identifies a wanted criminal in your population, they will appear on your world and present you with several options, depending on the type of crime for which your citizen is wanted.
  • The way you choose to deal with the bounty hunter will affect not only the present status of your colony, but its long term relationship with the guild.

Bounty Hunter Overview

Bounty hunters are human members of a special faction in Outer Colony called the Bounty Hunters Guild. The Guild is an organization that’s authorized to hunt down and apprehend or kill fugitives throughout the galaxy. If you have a migrant NPC in your colony with a criminal past and a hunter from the galaxy at large detects his presence, the hunter will land on your world and take action.

Guild sanctioned hunters are authorized to kill criminals that have been marked for death, but there’s a protocol that has to be followed when interacting with local governments in the periphery. Sanctioned hunters will always present you with options via a formal transmission before they take action. How you respond to a bounty hunter’s proposals will dictate their subsequent action. Responses to bounty hunter transmissions are described in more detail below.

Compliance

compliance

A bounty hunter acknowledging compliance.

The most straightforward option available is to comply with bounty hunter’s demand and to allow him to carry out his mission. If the target has a death mark, the bounty hunter will enter your colony unimpeded by your security forces and will execute the target before returning to his ship.

This might seem like a good solution, and sometimes it is, as it will remove a criminal element from population and decrease the likelihood of having to deal with another bounty hunter in the future. However, allowing a bounty hunter to kill or capture one of your citizens will have serious consequences. First, all members of that colonist’s social network will have bad experiences and their confidence in your leadership will be eroded. Letting a bounty hunter take their mark will prevent excess bloodshed, but sometimes it isn’t worth the intangible costs.

Refusal

atrocities

Bounty hunters are fearsome, formidable combatants and generally leave death in their wake. Stopping a determined bounty hunter is extremely difficult.

Noncompliance is also an option when dealing with bounty hunters. If you refuse their entry into your colony, you will be placed in a temorary state of war with the guild. During this time, the bounty hunter will most likely land on your world and will attempt to terminate the mark with extreme prejudice, killing anyone else who gets in their way. Your combatants will engage the bounty hunter on sight and try to kill him in order to protect the mark.

Be warned, however, that bounty hunters are all experienced combatants, they’re supremely well equipped, and are absolutely relentless. Stopping one requires expert soldiers, and you may pay a much higher price in blood by trying to fight back.

Bounty Hunter Payoffs and Guild Payoff

Colonies can choose to bribe a bounty hunter, at which point the hunter will decide whether or not to accept the payment at his own discretion. This is often the best possible solution, as it spares the mark and other colonists from the wrath of a merciless bounty hunter. The only downside to this approach is that it can be very expensive, so only prosperous colonies have this option. Offering an insufficient number of credits is seen as an insult, and a bounty hunter may pocket an insufficient bribe and kill the mark anyway.

Offering to pay off the guild can yield an additional set of benefits. While the guild is more expensive to buy off than an individual hunter, successful guild payoffs will curry favor with the organization. If your colony can achieve diplomatic friendship with the guild by offering generous payoffs, they may bestow valuable and otherwise unattainable items as a token of their appreciation.

Posted in Combat, Game Design

Distributing a Desktop Java Application

While thin client architectures have become prevalent in many domains, there are still lots of use cases that call for desktop applications written in Java. Outer Colony is certainly one of them. Choosing the right deployment mechanism is very important in these cases, and after experimenting with Oracle’s out of the box solutions, I was a bit surprised at how limited their capabilities were, as each proved inadequate for my purposes. In the end, I decided to use a third party solution called install4j, a multi-platform installer builder, that simply addressed all of my distribution requirements.

In this entry, I’ll walk through my attempts to use Java Web Start, then writing my own launchpad and auto-updater, using Oracle’s self contained packaging and Inno Setup, and finally why I decided to use install4j instead of either of my other semi-functional solutions.

Outer Colony’s Requirements

Before getting into my experimental solutions, it’s important to understand the general deployment requirements for Outer Colony. The following points were absolutely necessary for any potential solution:

  • The setup process needs to handle setting up Java for the end user. Even when internally distributing Outer Colony to close friends who are fairly tech-savvy, they couldn’t really handle setting up Java themselves. This should be obvious, but if you’ve spent the last few years as a backend Java developer, it’s easy to forget that end users won’t have any idea what to do when you tell them to “install Java 8, first”.  Even if you give them a link to the download page and specific instructions in an email, half of them will do it wrong. As such, the installer needs to handle every aspect of setting up the JRE in a way that’s completely automated from the user’s perspective.
  • I need to be able to specify the exact JRE to use. Outer Colony needs a 64 bit JRE for its higher memory modes, and a late Java 8 version is essential. If a user happens to have Java 7 already installed on their machine, that won’t suffice.
  • Like many games, Outer Colony will have a very active maintenance lifecycle. Patches for bug fixes, new content, and all sorts of adjustments will probably occur frequently, so there needs to be some kind of auto-update functionality built into the system. When a new patch is released, Outer Colony needs to seamlessly update itself in a way that’s typically experienced by computer game users.

Falling short in any one of these three categories is a deal breaker. With these points understood, I started to explore my options.

Java Web Start

Java Web Start is a technology directly from Oracle that’s used to distribute Java applications via the internet. At first glance, it seemed like the perfect choice for Outer Colony. Initially, I was confused as to why its use wasn’t more widespread, and this did give me pause. General googling revealed that Java Web Start didn’t seem like it was being used by all that many modern applications, and that’s often a bit of a spooky sign for something that’s a part of the Java platform itself.

Still, it’ll automatically set up the JRE for the client, it provides a really straightforward mechanism for auto-updates, and was pretty easy to configure. With a few hours, I had configured my Apache server properly, set up the necessary XML, and was deploying Outer Colony via Java Web Start. It took another day or two to figure out all the details of jar signing, but once I’d overcome those issues, it seemed like this was going to work.

Then I hit a seemingly insurmountable barrier. Outer Colony needs a 64 bit JVM to run in its higher memory modes, and I couldn’t find any way to force Java Web Start to install a 64 bit JVM. There was no way I could see to specify which JRE should be used to run Outer Colony when it’s launched from Java Web Start. Even worse, JWS decides which JRE to tell the user to install based on the user’s browser. This is a problem, because almost every browser is a 32 bit application. As such, 32 bit JREs were being installed, which limited OC to 4GB of RAM, which would limit users to relatively small worlds.

This was unacceptable. I searched and searched and searched, but couldn’t find a working solution. The -D64 flag seemed to do nothing, and Oracle’s documentation couldn’t answer my questions. Even StackOverflow didn’t contain any good answers.

The second problem with Java Web Start is that, while it almost worked for me, the user experience is decidedly clunky. It feels very 1998 and is highly alarmist with respect to security popups and warnings. End users just don’t see things that look like Java Web Start anymore, and a friend I was showing it to at the time said he might not proceed with it, because it “looks like a virus”. While this sort of thing is fine in an enterprise environment, user trust is essential in my case, and I don’t want people to turn away from Outer Colony because its installer looks sketchy. This and the 64 bit issues made me give up on JWS and try something else.

Self Contained Packaging, Inno Setup Installer, Custom Auto-Updater

My next attempt was to use Oracle’s self contained packaging to bundle Outer Colony’s jar with the right JRE, install the whole thing using Inno Setup, and write my own updater to grab new Outer Colony jar files from the web and configure clients’ setups to run the new version.

After some thought and a bit of design work, I decided that Outer Colony would consist of two jars, one serving as a launchpad / auto updater, and the second comprising the application itself.

I hit Oracle’s documentation and started experimenting. I updated my build script (an ant script) to include an fx:deploy task, and within a few hours, I was building my jars, creating a folder structure that looked like it contained the necessary JRE, and felt like I was on my way to success. I started work with Inno Setup, packaged up all the assets that were arrayed by my ant script, and built an installer to jam the whole thing, appropriate JRE and all, onto a client’s machine via a pretty conventional-looking installer.

I wrote all the code for my launchpad jar, which included some basic web functionality to read an XML file from my website, compare the version there to the one in the client, download the new version as necessary, overwrite it on the user’s disk, and start everything up properly. I then went to test the whole thing out, running the installer on a fresh machine, and everything was going perfectly. Inno Setup put all the files where they should be, and the Outer Colony launcher started everything up using its own JRE. I tested the auto-updater out, it brought down an updated jar, attempted to “java -jar OuterColony.jar”, and wham! A failure.

After digging around for a while, I realized that java.exe wasn’t contained within my bundled JRE that I made using the fx:deploy task in my ant script. I thought that I must have something wrong in my script, but I just couldn’t figure it out. After hours of detective work, I found the answer in Oracle’s documentation, addressing my exact situation (I bolded parts for emphasis):

"Also by default a self-contained application does not contain full copy of Java Runtime. We only include set of mandatory components. Part of the reason why this approach was taken is that we want to reduce the package size. However, there are situations where your application may depend on these optional components and in that case you will need a way to add them to the private runtime. For example https connections will not work if jre/lib/ext/sunjce_provider.jar is missing.

Currently this can be achieved by providing a custom config script that is executed after application image is populated. Like in the example above with the icon, you need to enable verbose output to find the name of the script file and then drop it to the location where packaging tools will find it. Note that scripting language is platform specific too. Currently we only support shell for Mac/Linux and Windows Script on windows."

I don’t want to convey the wrong idea here, as I love both Java and Oracle, and I think Oracle has done a stellar job since they absorbed Sun. However, why Oracle would decide that package size is a valid reason to do this, I simply can’t imagine. In the year 2016, do a few extra megabytes matter that much? In my view, the cost in added complexity for developers by hacking out seemingly random parts of the JRE vastly outweighs any benefit this approach might confer.

Java.exe is excluded by fx:deploy, sunjce_provider.jar is excluded, and frankly, a whole bunch of who-knows-what may or may not also be excluded. I couldn’t find any definitive definition of which parts of the JRE do make it in, and which ones are considered “mandatory”. For me, the whole thing is “mandatory”, because I don’t want to spend 100 hours figuring out which parts of my application no longer work, because fx:deploy doesn’t really bundle a full JRE.

Ironically, the very example provided by Oracle of https connections using sunjce_provider.jar not working is case in point of why hacking parts of the JRE out of the bundle is not such a great idea. A developer will test software in the IDE, find it all functional, test it in the build, and find it to mysteriously not work. Without this special piece of knowledge that this specific part of the JRE isn’t bundled by fx:deploy, it’s extremely time consuming to try to piece together what is going on.

Once I figured out the issue, I set out to solve the problems by writing a custom script to copy the missing parts of the JRE into my build folder. I wound up using Inno Setup’s .iss scripts to manually copy over some files that I identified as missing from fx:deploy and necessary for Outer Colony, built a new installer, and tested it out. The installer set up Outer Colony, complete with its own fortified semi-JRE, I ran the auto-updater, it brought down an updated version of the application, restarted it properly, and everything seemed to work.

I handed the installer off to my brother to test on his machine, and, of course, it didn’t work. It “did something”, but when he tried to launch Outer Colony via its desktop icon, “nothing happened”. After guiding him through launching Outer Colony via the command line, he was able to send me the stack trace of a ClassDefNotFoundError, which I determined was the result of another missing file from fx:deploy’s incomplete JRE.

At this point, I’d had about enough. The whole solution was starting to reek of brittleness and convolution. I’m relying on an ant script centered on a poorly understood and barely functional task that I can’t debug, followed by a funky .iss script that’s manually copying a bunch of files into a build folder, a custom-built auto updater jar that makes the whole architecture of Outer Colony significantly more complex than it would otherwise be, and a freeware installer tool that, while nice in its own right, does have a somewhat outmoded and primitive feel to it.

One’s natural engineering sensibilities are offended by this kind of byzantine setup, and even after days of effort, it still wasn’t working. It was time to move on.

Using install4j

It’s my hope that this blog post can help developers with similar requirements skip all the headaches described above and proceed directly to this point. I had first run into install4j at a previous software engineering job back in 2009, and while it was only peripheral to my role, my employer was using it to effectively distribute their desktop Java application to Windows, Linux, and Mac users.

I headed to EJ Technologies’ website, downloaded an install4j trial, and within a couple hours I had gone from being a new user to having built an installer for Outer Colony, containing exactly the right JRE, and doing everything I needed it to do. install4j even contains built in support for auto updates, which I had working in no time. The documentation is exceptional, the tutorials are fantastic, and the whole thing is as simple and intuitive as it can be. Best of all, the end result is very professional looking and streamlined. It will instill confidence in clients. After all, the first part of their interaction with your software is its installation, so it’s probably wise to start things off on the right foot.

At the end of this adventure, I have another experience that demonstrates the old adage that it’s cheaper to buy software than to build it. In this case, it’s cheaper and better. Software engineer hours are expensive, and for a non-trivial Java application, you’ll burn scores of them if you try to build a custom deployment and auto-update solution. At the end of that development, whatever you’ve built will almost certainly be inferior to what install4j can give you with a bare minimum of expense, both in terms of time and effort.

Update

Early testers of Outer Colony are even commenting, without any prompting, about how much they like Outer Colony’s installer and auto-updater. I’ve never heard of an end user doing that, but here’s the quote, right from our forums:

2) The auto-update process. Seamless. Did you code all that yourself or are you using an add-on? I’ve used a program that automatically creates an installer from a Unity game before, but I don’t think it supported auto-updating like that. Yours is really sleek and user friendly!

This was posted right here by one of our closed beta testers. An actual end user, remarking on how much they like an auto-updater! Unprecedented! I wish I could take credit for having built an installer and auto-update platform of this quality myself, but it’s all install4j’s doing. This should tell you every thing you need to know about install4j!

Posted in Java, Technology

Offensive Combat Tactics

The side that stays within its fortifications is beaten. - Napoleon

Sometimes, your colony will be in a position where offensive combat operations are necessary. A belligerent may establish an outpost near your lands, necessitating battle outside your base. Training and effective command of your units are the keys to victory.

Summary

  • Offensive combat is primarily accomplished via secure position meta-orders. These order a military unit to take and hold a position. Unit personnel will automatically execute fire and movement maneuvers as necessary to neutralize any enemy personnel in the area.
  • Set fire orders can be used to burn enemy materiel. Large fires can be useful killing tools in their own right, but even small ones can create chaos as enemy forces prioritize fire fighting highly, even in the midst of combat.
  • Individual target kill orders can be used to direct fire at a particular target, but these orders will only be carried out by individuals. As such, they’re really only useful for hunting.

Necessity of Offensive Combat

summary_execution

A captured soldier of mine, summarily executed by the Iron Gear.

Some factions in the galaxy are not open to peaceful coexistence with yours. The Iron Gear, for example, is an omnicidal band of madmen bent on annihilating human life, so that it can be replaced by sentient robots and thinking computers. When a group like this establishes an outpost near your colony, they will behave aggressively and generally can’t be persuaded to stop by conventional means. They won’t stop until your population is wiped out, and in cases like this, it’s you or them.

Executing an Attack – Demo Walkthrough

When a nearby outpost needs to be attacked, the best way to accomplish this is by rallying your military units to a nearby location, then ordering them to secure the outpost’s area. Once the area is secured, you can then pillage, demolish, or burn down enemy installations to make sure they won’t be re-occupied by another group.

If you watch the demo video above, I first identify the outpost as belonging to the Iron Gear. They had recently executed a probing sort of attack on my outpost (you can see the corpse of their reconnaissance soldier just inside my colony’s walls later in the demo). I decide that they need to be wiped out immediately, so I order all 5 of my fire teams to secure a position just north of their location. By rallying the units to a safe point just outside the enemy position, all the troops can be together to execute the attack in unison.

To issue an order to secure a location, use the move unit tool, which becomes visible when the combat orders button is clicked.

combat_icon

The combat orders button.

move_unit

The unit movement order button.

With this tool selected, click the location in the world that you want a unit to occupy. When you click, you’ll be presented with a unit selection dialog, which allows you to specify which unit you want to secure the chosen location.

unit_selection

When you’ve chosen a unit, they will move to the location and engage any enemies they encounter, according to your colony’s diplomacy policy and rules of engagement.

Once my fire teams are in position to the north of the enemy, I issue subsequent movement orders to secure positions in and around the Iron Gear outpost. My soldiers proceed in, catch the enemy completely off guard (they’re socializing and fooling around on datanet terminals), and the fight is a borderline massacre. In this case, I employed overwhelming numerical superiority, well trained troops, and tactical surprise to win an easy victory.

Once the base is secured, I set fire to parts of the buildings that can burn and aren’t valuable. To set fire to a location, use the fire order tool under the combat tools, and click the location you want burned.

set_fire

Button for issuing orders to set fires. Soldiers equipped with lighters will carry out these orders.

Note that not everything can burn in Outer Colony. The Iron Gear structures themselves are comprised of concrete and metal, which by itself, won’t catch fire. I’m reduced to starting fires inside the buildings, burning items they contained to wreck the structures as a side effect. This is done to prevent another Iron Gear group from moving in and simply occupying these same structures. Finally, I issue tile demolition orders to retrieve valuable items from the enemy’s base, like their high quality manufacturing stations and furniture items that my colony is currently lacking.

Posted in Combat, NPCs, Simulation

Rules of Engagement and Military Policy

Your colony’s military policy specifies rules of engagement for your military personnel and protocol for handling combatants that surrender.

military_policy

A view of the military policy dialog, configured for total war against the Kelgonians.

Summary

  • A military policy is applied to a particular archetype culture. All members of that culture dealt with according to the same rules.
  • Rules of engagement determine the circumstances under which your troops are allowed to fire on an enemy.
  • Surrender policy is used to determine whether your troops accept the surrender of a particular adversary.

Rules of Engagement

Rules of engagement work with diplomacy policy to determine when your soldiers can engage a particular enemy. There are two options here. Fire on sight is the most permissive option, allowing your troops to engage an enemy whenever they deem fit. The fire in self defense option will restrain your troops from engaging an enemy, unless they decide that the enemy is undertaking a threatening action (like charging their DFP, or firing at them).

The fire in self defense option can be used to prevent your soldiers from unnecessarily engaging enemy combatants. By not killing enemies, you’ll avoid creating negative experiences in the slain enemy’s social networks, which can help you work toward a diplomatic solution to problems.

Surrender Protocol

Surrender protocol defines when your troops will accept the surrender of enemies. In all cases, battlefield executions will be carried out if you don’t accept surrender. Be forewarned that this can cause permanent, negative experiences in the troops who have to apply this kind of protocol, depending on their personalities.

There are three settings here:

  • Accept Administrator Surrender: This option is used to control whether you accept the surrender of bureaucrats or other officials from an enemy population. Sometimes, these kinds of people are too thoroughly indoctrinated in a mode of thought that’s incompatible with your local culture, making them dangerous if taken as part of your prison population.
  • Accept Combatant Surrender: This option determines whether the surrender of enemy soldiers is acceptable. Unchecking this box means that all enemy combatants will be subject to summary execution.
  • Accept Noncombatant Surrender: This is the most extreme option of the three. If unchecked, all enemy people, combatant or not, will be subject to summary execution. It should probably never be used.
Posted in Combat, Simulation

Defensive Combat Tactics

Defending your colony from outside aggressors is one of the most essential elements of surviving in the long term.

Video showing a tutorial of defensive combat. Specifics are described below.

Summary

  • The defensive fire position (DFP), occupied by a fire team, is the core building block of entrenched position defense.
    • A defensive fire position is a designated area that can be manned by a military unit.
    • DFPs can be positioned to exploit terrain or structures to give your defenders a tactical advantage. Effective positioning and training can help you overcome a numerically superior adversary.
    • Stockpiles containing ammunition, food, and water can be located inside or near DFPs, reducing supply limitations in combat.
  • Secure area orders can also be used in defense. By deploying units to unexpected areas, they can bolster nearby forces or halt an enemy breakthrough.
  • The colony’s general alarm is used to transfer non-combatants to safe areas and to cause military personnel to man their designated posts.
  • Tamed creatures can be trained to patrol areas for defense. While generally ineffective against armed combatants, they can help in dealing with lesser opponents. Even when fighting capable adversaries, they can at least provide a momentary distraction, as it takes an instant and a bullet to dispatch even the weakest creature.

Establishing and Using Defensive Fire Positions

Defensive fire positions are area designations that are manned by military units in times of attack. You create them just like you would any other area designation and then assign a military unit to occupy the position in times of need.

To assign a military unit to occupy a DFP, click the button for showing detailed combat controls:

combat_icon

The combat button on the main interface.

Then select the button that looks like a fort to assign a unit to a DPF.

dfp_button

Icon for the DFP assignment tool.

With this button selected, view the DFP’s Z level, and click on a location within the DFP.

selecting_ft

The DFP assignment interface.

The fire team selection interface will then appear. Choose the team you want to occupy the DFP from the list, click OK, and the assignment will be made. Now, whenever the colony’s general alarm (described below) is sounded, the chosen DFP will man its post. As a general rule, disciplined troops won’t leave this post during battle, allowing you to control positioning of your units.

Tutorial Information and Recommendations

If you watch the tutorial video at the top of this article, it demonstrates a sound strategy for employing DFPs. Effective strategies shown include:

  • Create ammunition stockpiles near your DFPs. This way, if a fire team starts running low on ammo, it doesn’t have to leave its post to get more. This is essential for sustaining your personnel in lengthy engagements, and is doubly so if you’re employing weapons with a high rate of fire, like machine guns.
  • Exploit terrain and structures to maximize your positions’ effectiveness. Building walls is a fantastic way to help make a colony defensible. It will force your enemy into chokepoints that they’ll have to fight through, and if you position your fire teams well, they can bring concentrated fire on enemies trying to secure these points.
  • Make sure your fire teams are actually trained. Simply creating a fire team, assigning it to a position, and throwing it into battle will usually yield poor results. Scratch units like this are unreliable.

Sounding the General Alarm

alarm_menu

Location of the general alarm menu option.

When an attack on your colony begins, it sometimes becomes necessary to disrupt your colonists’ current activities and get them into shelters. For example, if you know that a barbarian raid is imminent, you probably don’t want loggers wandering around in the woods or farmers stumbling around your defensive positions, trying to plant seeds. Ideally, non-combatants will take shelter in some safe location, far from any combat, while your military personnel do their jobs.

To sound the general alarm, simply click the menu option shown in the screenshot above. It’s found under the combat controls menu at the top of the main interface.

This will cause non-combatants to proceed to safe areas. A particular person will consider its own room to be a safe area. Socialization areas are also considered safe, so NPCs near them will usually opt to take shelter there.

The general alarm will also cause your troops to man their defensive fire positions. If a soldier is part of a unit that’s not assigned to a DFP, then he’ll proceed to a safe area. It’s often useful to have a fire team or two that’s not assigned to a DFP, as they’ll guard non-combatants by virtue of occupying the same safe area.

Posted in Combat, Game Design

Prisons and Law Enforcement

Your colony’s laws and policies won’t have much of an effect on your population’s behavior unless there are consequences for disobedience. The prison and law enforcement systems are what give your statutes teeth.

A video demonstration, showing most aspects of the prison system.

Summary

  • Prison areas are used to contain elements of your population of that have broken laws. They need to be set up correctly in order to function.
  • Prison orders are used to issue work directives that are meant to be carried out by your prison population. This helps you get some use out of convicts.
  • Prison guards are used to monitor your prisoners. Their presence decreases the likelihood of escape or other untoward behavior.
  • Police officers are used to apprehend criminal NPCs and transfer them to your colony’s prison system.

Prison Areas

prison_view

Top-down view of a prison area. The pair of light structures that are walled off are inside a prison area.

prison_area_view

Viewing the confines and interior spaces of the area. Note its prison area designation and the stockpile present.

Prison areas are area designations that you set up to contain prisoners. In many respects, prison areas are just like any other area designations, and you use the same mechanisms to designate them. There are a few important things to keep in mind when designing your prison areas:

  • In order to minimize escape attempts, make sure that your prison area is walled off. You’ll want to make sure that walls are 2 tiles in height, in order to make sure that convicts can’t scale them.
  • It’s usually best to have a single point of entry for a prison area. This will make it take few guards to block potential escape paths. If you have multiple doors leading into your prison area, it only takes 1 open path for a prisoner to calculate a high chance of success for an escape attempt
  • You’ll want to make sure that your prison area has structures that contain rooms. Light structures are sufficient, so long as some sleeping area is present that ensures that prisoners are indoors. Lack of indoor sleeping areas will drastically increase the likelihood of escape attempts.
  • You can (and should) stack other area designations on top of your prison area designation. One location can be within multiple area designations, and sub-areas contained within prison areas have meaning to your prisoners. For example, each prison area should have a socialization area contained within it, so that your prisoners have a place to socialize. Without one, their human requirement for socialization won’t be met, and they’ll succumb to the effects of isolation.
  • Make sure your prison area has a stockpile within its boundaries. This stockpile should, at a minimum, contain food and drink for your prison population. The stockpile should also contain items that prisoners will need to carry out their prison orders. For example, if you issue prison orders to raise crops, make sure that necessary seeds are available to carry out the planting directives.
  • Make sure you have a warden bureaucrat who’s working daily. He’s responsible for deciding when prisoners get released, according to the criteria specified in the colony’s laws. Without a warden, prisoners will never be released.

If your prison area meets all the requirements above, it should be a productive, safe, and well organized place for your prisoners.

Prison Guards, Police Officers, Prison Management

prisonmanagement

A view of the prison management interface.

Outer Colony gives players control over many aspects of their prison and law enforcement system. In order for prisons to work, you’ll need to employ workers in your system. You’ll usually need a prison guard to prevent aggressive or dangerous prisoners from escapint. To initially apprehend criminals, you’ll need an active police officer. Once prisoners are a part of your system, you can choose to free them at any time, pardoning them of their offense, or to execute them, if you so desire.

All these features are controlled from the prison management interface. To access it, select “Prison Management” from the colony configuration menu at the top of the main interface.

Assigning Guards

Prison guards and police officers have specific duties that work outside the normal management of workers via orders. Instead of constantly creating orders for these workers to do their jobs, they’re instead assigned a specific duty timeframe, during which they’ll work as a prison guard or a police officer. During their specific duty’s specified time, they’ll automatically create goals for themselves to do sensible things. Prison guards will stand guard in prison areas, making sure prisoners don’t attempt to escape. Police officers will automatically apprehend criminals whenever they become aware of an NPC breaking a law.

assign_guard

Assigning a specific duty to a prison guard.

To assign a guard, select the name of an eligible person from the eligible guards list and click the “Assign as Guard” button. This will bring up a dialog that allows you to specify the hours of their guard duty. Make sure these hours overlap with the guard’s work shift hours in its activity configuration. Prison guards and police officers will ignore specific duties if they’re on a leisure shift. Clicking OK on the specific duty will make your prisoner work as a prison guard during the specified times.

Assigning Police

Mechanically, assigning a police officer works the same as assigning a prison guard. The only difference is the duties performed. A police officer will apprehend criminals during his work shift, instead of guarding your prison area.

Freeing Prisoners and Executing Prisoners

Under normal circumstances, your colony’s law configuration will govern when prisoners are released or executed. You’ll need a warden bureaucrat for these policies to take effect, but so long as you have one and he’s working daily, these aspects of the system will run automatically.

However, under certain circumstances, you may want to intervene. Perhaps a brilliant engineer who’s vital to arms production has been incarcerated for a minor offense, like consuming degenerate media. You can use the prison management interface to free him immediately from his prison term and get him back to work. Simply highlight his name in the prisoners column and click the free prisoner button. The same mechanism can be used to execute a prisoner who’s done some kind of severe wrong, is a repeat offender, or if you need to make room in an overcrowded prison area. Remember, though, that there are consequences for inflicting death, and this is often a poor choice.

Prison Orders

prison_orders

Specifying prison orders.

Once incarcerated, your prisoners don’t have to be entirely dead weight. By specifying prison orders, you can create directives that are explicitly intended to be carried out by your prison population. This way, despite the fact that it’s tying up resources in prison guards and police officers, your prison system can at least be somewhat productive.

To specify an order as a prison order, simply check the prison order checkbox in the toolbar, as shown in the screenshot above. Any order you issue with this box checked will be carried out by your prison population.

It’s important to note that only some sorts of orders should be given to prisoners. For example, I often use my prisoners to grow crops, as it’s a simple, easy to control activity that keeps them productive. Some orders are very bad to give to prisoners. If you use your prisoners to manufacture weapons, then they’ll have opportunities to use those weapons. Some orders are bad in less obvious ways. If you issue prison orders that involve retrieving items from stockpiles outside your prison area, the prisoners may leave your prison area to retrieve the items. This time outside the designated area may not be covered by a prison guard, which may make them calculate a high chance of success in their escape attempt, causing them to flee.

As a rule of thumb, try to issue simple, sensible prison orders to keep your prison population both productive and under control.

Colony Features That Won’t Work Without a Prison

It’s important to keep in mind that there are some functions within a colony that can’t work without a prison. For example, if your colony has no prison area, your soldiers will never accept surrender of enemy troops, resulting in summary executions, regardless of the military policy you’ve specified. Needless to say, this would be highly problematic, as committing these kinds of atrocities has far reaching effects.

The same logic applies to law enforcement. If you specify prison sentences for crimes but have no prison, the punishment can’t be inflicted, rendering the law meaningless. As such, it’s a good idea to set up a prison area as soon as you can, especially if you’re going to be establishing laws or fighting a war. If a person needs to be incarcerated as part of enforcement of a greater policy, then that policy can’t work without a prison area.

Posted in Combat, Game Design, NPCs

Colony Law

Your colony’s laws and law enforcement mechanisms are an important way of controlling your colonists’ behaviors. A variety of offenses can be punished in a variety of ways, and configuring laws can have a profound effect on the daily lives of your NPCs.

law_configuration

A screenshot of the law configuration interfaces, applying the death penalty to abuse of bureaucratic authority.

Summary

  • Your NPCs will react to laws that you enact in different ways, depending on their personalities, experiences, and other factors.
    • The most obvious reaction to a law is that most NPCs will avoid engaging in the criminal behavior. Depending on the punishment you impose and specific circumstances, the tendency to avoid the behavior may be very strong.
    • Some NPCs will experience negative feelings and bad moods just because certain laws exist. For example, media regulation laws will upset most intellectual and creative people
  • Even if you enact a law forbidding some behavior, NPCs can choose to disobey your directive and break the law. Rebellious NPCs are particularly prone to law breaking.
  • If an NPC is known to have broken a law, they’re regarded as a criminal and are subject to the punishment you’ve established. This can range from a brief prison sentence to execution for the transgression.
  • To carry out a punishment, you’ll need a police staff to apprehend the criminal. You may also need an established prison area and prison guard workers, depending on the punishment to be inflicted.

Using the Law Configuration Interfaces

law_configuration_menu

Location of the law configuration menu item.

To establish laws for your colony, select the law configuration menu option from the colony configuration menu, at the top of the main interface, as shown above. This will open the law configuration interface.

law_selection

The law selection interface is used to pick out a crime for which a specific punishment can be configured.

Here, you can select the law you want to configure. Possible crimes that NPCs can commit are listed here, and each crime has two buttons. The “Configure Punishment” button loads the punishment configuration interface. Information about specific crimes is provided below, in the criminal offenses section.

punishment_detail

The punishment detail interface, where punishments for crimes are established.

The punishment detail interface lets you define how the crime is punished. The first checkbox lets you specify whether the crime is punished at all. Some potential offenses, like consumption of degenerate media, might be things that you don’t want to punish at all, in order reap the benefits of free speech and thought in your colony.

The next checkbox is for applying the death penalty. If you check this, any person caught committing the particular crime will be put to death as punishment. Checking this box renders all the configuration options below meaningless, since the guilty party will just be killed. Of note, applying the death penalty makes for the strongest deterrent possible to committing a crime, and NPCs will (for the most part) avoid the behavior strongly as a result. However, there are many downsides to the imposition of the death penalty, as actually killing criminal NPCs will yield negative feelings throughout entire their social network.

The next set of controls specify how offenders that have committed this crime are handled by your prison system. The incarceration time specifies how many galactic standard years an NPC is forced to spend in prison after they’re apprehended. The release criteria section specifies other criteria that must be satisfied for an NPC to be released from prison, beyond having served their sentence. This section is particularly useful for POWs and NPCs that you’re trying to integrate more thoroughly into your society. High opinion of your culture as a release criteria, in conjunction with effective media and a fitting prison culture policy, can turn enemy combatants into willing collaborators and functional members of your colony.

Criminal Offenses

Many activities can be considered crimes in Outer Colony. This section specifies what those behaviors are.

Abuse of Bureaucratic Authority

This is when one of your bureaucrats abuses his position to do something untoward. For example, if your minister of leisure decides to appropriate all of your colony’s finest items for himself, he is guilty of this crime. The nature of the abuse varies from bureaucratic position to bureaucratic position.

Theft

Theft is fairly straightforward, and occurs when an NPC takes something from your stockpiles that he’s not authorized to take. All NPCs will take food, drink, clothing, tools, weaponry, and other items as necessary, and theft only occurs when an NPC willfully takes something they don’t need.

Waging War as an Enemy Combatant

This is the crime that enemy soldiers are guilty of when they surrender. Defining punishment here specifies how prisoners of war are handled. You’ll want to make sure they have a positive view of your culture before you release them and try to make them function in your colony.

Prohibited Socialization and Prohibited Barter

These offenses are for interacting with foreign NPCs in ways that are forbidden by your diplomacy policy. Prohibited socialization is for socializing with forbidden NPCs, and prohibited barter is for exchanging personal items with forbidden NPCs.

Production and Consumption of Degenerate Media

These crimes are for making or reading media that deviates significantly from your established culture policy. Enacting these laws will help you keep control of your local culture, but it can alienate the intellectuals in your population.

Punishing Criminals & Assigning a Police Force

assigning_police_duties

Assigning police duties via the prison management interface.

In order to punish criminals, you need police NPCs to apprehend them. To assign NPCs to police duties, select the prison management option from the colony configuration menu. The interface shown above will appear, and you can use it to assign NPCs to serve as police for some number of hours each day. Police NPCs will satisfy all order to apprehend criminals, which are automatically created when an NPC is detected committing a crime. Once a criminal is apprehended, it will be sent to a nearby prison area, where the prison system will process it.

It’s important to note that if you don’t have any prison areas, NPCs can’t be processed after having committed crimes. Without a prison system, there’s no real enforcement, rendering colony law fairly meaningless.

Posted in NPCs, Simulation

Diplomacy Policy

A colony’s diplomacy policy is used to configure how its people interact with those of other colonies and off-world authorities.

quarthanid_diplomacy_policy

Configuring diplomacy policy to be friendly toward a nearby Quar’thanid outpost.

Summary

  • Your colony’s diplomacy policy serves as the basis for how your colonists will interact with colonists from other organizations.
  • Diplomacy policy is also used to determine which NPCs are viewed as threats by your military personnel and other combatants.
  • Diplomacy policy also works in conjunction with your colony’s law configuration to regulate foreign influence, by permitting or outlawing socialization and personal barter with foreign peoples.

Configuring Policy

diplomacy_policy_menu

Location of the diplomacy policy menu item.

To configure diplomacy policy, start by opening the diplomacy policy configuration interface, from the colony configuration menu, as shown above. Clicking this button will open the diplomacy policy interface, which lets you configure a variety of options.

The top part of this interface shows a list of organizations toward which you can set a policy. Some organizations are off world authorities. These are parent organizations that generally correspond to archetype cultures, and setting policy toward these entities defines how your colonists will behave toward off worlders that belong to these organizations. For example, if a platoon of Kelgonian soldiers arrives on your planet via a shuttle, they don’t belong to any colony on your world. Rather, they’re part of the greater Kelgonian Federation’s off world authority. As such, your policy toward that authority will govern how your colonists deal with those NPCs.

Individual colonies on your world also appear in this list, and you can configure custom policies for these entities. For example, in the screenshot at the top of this article, you can see an option for “The Violent Shorttailed Noise: Quar’thanid”, which is the name of a specific Quar’thanid colony on this world. (Note: The Quar’thanid people are a minor faction, and they name their colonies after patron creatures, in keeping with their shamanistic religion.) Configuring diplomacy policy toward this entity will govern how you deal with this specific colony.

This setup allows a great deal of customization in establishing policies for dealing with off-world and on-world organizations. It’s important to keep in mind, however, that inconsistencies in dealing with organizations that belong to the same culture can create mixed feelings in your individual NPCs’ culture views. This can make it more challenging to implement a desired local culture via culture policy, so unless you have a specific reason, its’ best to configure a similar policy toward all organizations that belong to a culture.

It’s also important to keep in mind that a diplomacy rating is only for your colony’s feeling toward another authority. The other authority does not have to reciprocate with the same rating. This means that you can view another entity as an ally, but it might still view your colony as its enemy.

cult_dr

A view of friendly diplomacy policy toward a local Cult of Oren’dar temple. Your colony and theirs view one another as strong allies.

Beneath the authority selection list, you’ll see configuration options. The first is for setting a diplomacy rating. The ratings have the following meanings:

  • Truest Friend and Ally: Truest friend and ally is the highest form of alliance possible. When this rating is attained, certain events can occur that go beyond normal alliance. Other colonies that view you in this light may give you gifts, teach your people secret professions, or do other helpful things.
  • Ally: Allies will fight alongside your combatants and help them if they’re in trouble. Allies may also perform other helpful activities, like gift giving or beneficial trade.
  • Neutral: Neutral entities usually won’t go out of their way to harm or help your colonists.
  • Enemy: Enemies will regard your colonists and tamed creatures as threats, engaging them in combat on sight.
  • Mortal Enemy: The mortal enemy rating usually denotes a level of hatred that goes beyond normal enmity. This sort of rating should be reserved for wars of annihilation against an enemy organization, as this rating will increase the likelihood of battlefield executions and other atrocities being committed in combat.

The final portion of the diplomacy dialog helps regulate interactions between your colonists and foreigners. Here, you can define whether socialization and personal barter are permissible with a certain group. These ratings, however, have no teeth unless you punish these actions in some way via your expedition law configuration.

Improving Diplomacy Rating

Different sorts of actions can improve your diplomacy rating with different authorities. Gaining rating with the Bounty Hunters’ Guild can be different from gaining rating with the Cult of Oren’dar, but one surefire approach that works for most every foreign authority is favorable trade. Sending money, materials, and finished goods to a nearby colony will usually help to improve your diplomacy rating with that group.

Posted in NPCs, Simulation