Forensic Friday 42: The Answer to Life, the Universe and Everything
Forty two: The answer to life, the Universe and Everything and… the newest Forensic Friday edition, that without a doubt will answer all the questions you could possibly ever have! (don’t hold us to that) This week: pumps pump, plants filter and university work useful?! With us so far? Regardless, take a read below to find out what we’ve been up to!
Water Plants #
With an ever growing backlog of work to do, we have decided that whenever we finish a ticket, we’ll also complete a couple of smaller tasks from the backlog to stop things getting out of hand. With Prisoners Expanded coming to a close last week, this meant the introduction of water purification plants, and other quick to implement features.
The Water Purification Plant #
The water purification plant is simple. It takes in a mixture of liquids, and has 2 outputs. One output is pure water, and the other contains all the waste products.
Water purification plant
This will be the main way you provide your facility with safe drinking water, and keep up hygienic practices. The purification plant requires power to work, as well as available places for fluid to go once purified.
Pumps Pump (from Water Bodies) #
To complement the water purification plant, pumps now actually take water from bodies of water. Positioning a pump next to a water tile will take in a mixture of
Sewage. These can be fed into a water purification plant to provide your facility with an ongoing supply of water!
Possible water purification system design
Containment Procedures #
With that task off the backlog, a brand new ticket now arises - Containment Procedures! Containment procedures are directions that you can give to help contain anomalies in game. An example could be to tell NPCs not to look at S-0087 - an anomaly that changes its perceived shape to create fear in its enemies.
This is an absolutely critical gameplay element. Without this, containing anomalies would be almost impossible without micromanaging every single person.
Deciding on the UI #
How users interact with this system is also important. For instance, a drop down for every kind of combination someone may want to do just isn’t feasible. For example, just giving the option for NPCs to look/not look at a set of 100 anomalies would require 200 options. Factoring in you may want to look at the anomalies during conditions like while wearing protective face gear - “Thermight” in the case of S-0087 - would exponentially add to the number of options. Furthermore, having a list of predefined options can just feel a bit cheap in our opinion - it doesn’t feel like you are truly setting the procedures, but are just choosing an already defined one.
Therefore, our idea was like the one below - a set of dropdown options that give as much control to the player as possible, while not getting out of hand with the complexity needed to input your procedures. Also, if you want to see more about our mockups or just our progress in general, we have a public trello board! We’ve had this for a few years but barely talk about it, but we use this for planning and defining everything we do.
Defining Every Possible Option #
So with our idea for defining Containment Procedures protocols done, the hard part was still to come. What options should we include, and how can make whatever we choose to do flexible so we can change and add to it in the future? This is still very much a work in progress, so take the rest of this section with a grain of salt, but the best idea we’ve had so far is using a formal grammar.
Formal Grammars #
In Computer Science, a formal grammar “describes how to form strings from a language’s alphabet that are valid according to the language’s syntax” (Wikipedia). I’ll do my best to try and explain a simple example of this in practice.
1. S -> aSb 2. S -> ba
S, you can substitute in any of the rules that contain
S ->. In this simple case, using rule 1,
S can be
aSb. This gives us
aSb which, using rule 1 again, can be
aaSbb. This can continue on, until we use rule 2 and substitue
ba, which will give as a full sentence of
aababb - brilliant! In this example, the string formed is
aababb, but this grammar can create any word that has
b... are repeated the same number of times. If you are a bit confused, it’s quite simple and I’m probably butchering this explanation so I’ll link a good video.
b to actual words allows us to define sentences. The grammar we’ve designed looks like the following so far (note
| means “or”):
[CONTAINMENT PROCEDURE] -> [WHEN] [ACTION] [WHEN] -> while [CONDITION] | every [NUMBER] [TIMESCALE] | on [WEEKDAY] | never | always [CONDITION] -> [CONDITION] and [CONDITION] | [ENTITY] [LOCATION_COMPARISON] [LOCATION] | TBD [ENTITY] -> anomaly | child | corpse etc. [LOCATION] -> [ENTITY]'s containment cell | transit | testing environment TBD [LOCATION_COMPARISON] -> in | not in [NUMBER] -> 0 | 1 | 2 | 3 etc. [TIMESCALE] -> hour | day | week | month | year [WEEKDAY] -> [WEEKDAY] [WEEKDAY] | Monday | Tuesday | Wednesday | Thursday | Friday | Saturday | Sunday [ACTION] -> [VERB] | don’t [VERB] [VERB] -> look at [ENTITY] | bring [ENTITY] to [LOCATION] | enter [LOCATION] | open [LOCATION] | touch [ENTITY] | keep [ENTITY] from [ATTRIBUTE] areas | TBD [ATTRIBUTE] -> warm | cold
Every containment procedure contains a
when and an
action. For example, using this grammar would allow a sentence as such:
[CONTAINMENT PROCEDURE] -> [WHEN] [ACTION] -> on [WEEKDAY] [ACTION] -> on Monday [ACTION] -> on Monday [VERB] -> on Monday bring [ENTITY] to [LOCATION] -> on Monday bring anomaly to anomaly's containment cell
[CONTAINMENT PROCEDURE] -> [WHEN] [ACTION] -> while [CONDITION] [ACTION] -> while [ENTITY] [LOCATION_COMPARISON] [LOCATION] [ACTION] -> while anomaly in testing environment [ACTION] -> while anomaly in testing environment don't [VERB] -> while anomaly in testing environment don't touch [ENTITY] -> while anomaly in testing environment don't touch anomaly
This grammar still needs tuning, and I’m sure if you try and mess around with combinations, you’ll find sentences that don’t work, or options that should be there but are missing. However, it’s a promising start, and is one of those times that you learnt something that you thought would be entirely useless, to find it’s exactly what you may need.
Translating Grammar to UI #
With a rough grammar created, the rest of this week has been spent creating the UI, which is still in its infant stages. Most categories are drop down menus, with the exception of
[NUMBER] which allows a player to type a number, or rules that have fewer options - like
[LOCATION_COMPARISON], which instead is a togglable panel, that fades in or out depending on if it’s selected or not.
Example of dropdown menu
So far it’s all going smoothly, but this is just the UI side, and understanding every protocol someone can make will require a bit of thought work, but that’s a next week, future us problem!
Containment Procedure Menu
Wiki Additions #
We’ve also spent some of the week trying to further flesh out our wiki. Some of the weird admin menus have been hidden away, and you’ll notice a new fully completed page for one of the Corporations CEOs if you have a little dig!
Case Closed #
That’s another case closed. It’s been a bit more of a technical blog this week but we hope you still found it interesting, if not more so than usual! Keep your eyes peeled for Monday when we release the first official anomaly document in a few months, and it’ll be the first new anomaly that will be added to our new wiki since it was created! Until then, thanks for taking the time to read this!