If you know me in person you've probably heard me talk about a super nerdy open source multiplayer role playing game that I am working on during my spare time called project station. It is based off of an existing game called Space Station 13.
Essentially, the premise of the game is that you spawn onto a space station that is simulated into very fine detail with a respective role to play by in order to maintain the function of the station and keep everyone alive. Among the other players spawned on the station there is one imposter who has the ultimate goal to kill everyone in their assigned role (i.e, as a janitor etc...) before they are detected and imprisoned or killed by the other players.
In Project Station, the more simulation that exists the more venues someone has to approach their ultimate goal. It is a game that allows the players to write their own intricate tales / stories as the play.
So what exactly is simulated on this space station?
- Atmospherics (Station Ventilation, water flow, etc...)
- Power Systems and distribution (generators, capacitors, diodes, etc...)
- Control Systems (control valves, pumps etc to coordinate power, atmospherics, and station security)
- Networking (I.e, network connections, packets etc...)
- Computer Systems (programs, operating systems etc...)
- Many other subsystems I hope to implement in the future that support other roles aside from engineering (Science, Medical, Security etc...)
I will explain all of this is more depth, but I think the easiest way to process this idea is by just diving right into the game.
Lets start by looking at the engineering wing in the (quite small) space station I have been developing to test the game mechanics. I'll go into detail in explaining how it all works and hopefully that will help you appreciate the detail into this game's simulation.
The way this station has been designed is such that each wing has a utility room which controls atmospherics and power distribution for that wing of the station. (This is not a design constraint for the game, just the approach I took to designing this station.) Subsequently, between each station there should be a double-air-lock such that no area is regulated by two utility rooms at a time.
Below is a picture of the utility room:
Inside every utility room is:
Air pumps and control valves for controlling air pressure and quality into that wing of the station. The air is recieved from a shared high-pressure pipe produced by the atmospherics room in the station. Waste in the air is sucked in through a low-pressure pipe and consumed into atmospherics for filtering.
Power meter to read the power flow into that wing of the station from the global power network and to connect the global power grid to the wing's power grid.
A computer system with the appropriate software to communicate with the sensors and control devices to properly regulate the wing's environment
Additionally, one could also have the below elements (which have yet to be implemented into the game)
- Water / Sewage control
- Network router (to isolate the wing's network from the global station network and improve station security.)
- Backup power for that wing incase the global power network is not operational.
- Many other components depending on the design you take with your station.
Lets take a look beneath all the walls and flooring of our station:
The thin lines are wires, and the thick lines are pipes (for fluids or gasses)
|Wire / Pipe||Purpose|
|Green Pipe||Global High Pressure Air (Oxygen / Nitrogen mixture)|
|Red Pipe||Global Low Pressure Waste consumption (WIP)|
|White Pipe||Regulated local air for wing. This is connected to the Engineering Wing's ventilation pipes to produce a breathable environment.|
|Blue Pipe||When the pressure in this pipe above 102kPa, the valve connecting this pipe to the global low pressure waste collection network is opened. This is connected to the engineering wing's ventilation to collect waste in the environment.|
|Green Wire||This wire connects to the global power network|
|Blue Wire||This wire connects to all power consumption devices in the engineering wing. It draws from the global power network|
|White Wire||This is a network wire that carries packets inbetween all devices that is connected to it. Each device has an IP Address used to address specific devices on the network via packets|
So lets look at how atmospherics works in the engineering wing:
- An Oxygen/Nitrogen mixture is produced by the atmospherics room on the station and is placed on the Green Pipe that travels throughout the entire station. This pipe is high pressure.
- Each utility room connects to the green pipe with a series of pumps and valves to control air flow into that wing of the station. The output is placed onto the white pipe which is subsequently connected to air vents throughout the engineering wing.
- Excess pressure in the engineering wing will break-down the pressure collapse valve, opening the vents connected to the blue pipes to the global waste collection network on the red pipes.
- If air quality is poor, an air-quality sensor on the network will trigger a warning to the computer you see in the utility room. The computer will then send a packet to the valve to open and allow oxygen to enter the wing from the global network.
- If air quality is poor but pressure exceeds 102kPa, the utility room will continue to pump in good air from the global atmospherics network while the excess gasses are pushed into the waste collection network.
Okay... now about that computer? Well, the computer is actually a simulated computer architecture called the DCPU. You will need to write program for that computer (in assembly) that will utilize the devices it is connected to in order to control the station (however you see fit.) The computer kernel and the DCPU arhcitechture is a whole other blog post, so I'll be brief with it.
The computer's in this game come installed with DarkCPU, an open-source DCPU kernel ( https://github.com/JeremyWildsmith/DCPUOS .) They also come installed with a atmos, a DarkCPU OS program specfically designed to help regulate control devices in the station. It is very basic but it is enough to keep the station on its own two feet.You are always welcome to develop a more feature-complete program/os for your station.
The configuration of atmos is on you (if you're designing the station). If you are an engineer you'll need to reference the station's schematics to properly configure it. The Engineering Wing's configuration for atmos is very simple:
select atmos anet atm 0.0.0.0 anode atm src 22.214.171.124 126.96.36.199 anet pwr 0.0.0.0 anode pwr src 188.8.131.52 0.0.0.0 ping stat atm stat pwr
Essentially you are telling atmos where the control valves are and sensors are for each node in each of its' control networks (in the case, you have an atm and pwr network for the Engineering Wing's utility room.)
The generators in this game behave as you would expect. Below is a picture of our generators (it is the lower room, not the upper room)
Now here is what it looks like when you rip out the floors / walls:
Each Generator consists of four parts:
- The starter which transform electrical energy into RPM (which is required to start a generator)
- Fuel Chamber, which collects gasoline from a pipe and feeds it into the engine
- The engine, which, once started, transforms gas + oxygen into RPM
- The alternator, which transforms the engine's output RPM into electricity
The generator room has two generators that are connected such that the output power goes onto the red wire. The red wire connects up to the power backup room (which contains four capacitors) These capacitors are charged from the red wire, and provide power output to the green wire (the global power output network.)
The two switches you see in the generator room control powerflow from the Engineering Wing's power network to the respective starters.
How could we de-stabilize the station?
Well lets say you're job is to kill everyone in the station. Hopefully security is doing their job to ensure you aren't able to. Here are some interesting ways you could try to though.
Fooling the Wing's Control System
- Install a device on the network cable to intercept packets
- Monitor the communication network for packets that relate to sensor readings, or valve control
- Spoof the %O2 reading on the packets transmitted from the Air Quality sensor to always read an ideal 25%.
- (Optional, since the engines produce CO2 anyways) Release CO2 into the environment