systemspeclib v2.0.0
SystemSpecLib
What is SystemSpec?
SystemSpec is an alternative to Multiple Code Redux (MCR), a format for sharing basic information about plural systems in a relatively concise form. Unfourtunately, MCR is extremely verbose (less so than the information it contains, but still too much to be useful), is not machine readable, and frankly is not human readable either without a reference. For example, the "Species" field in MCR has 167 explicitly defined options, and each of those can be augmented by any or all of 6 different modifiers. MCR also contains fields and options for information that is hardly relevant to a system's plurality, such as career, relationship availability, and even interest in roleplaying games. SystemSpec seeks to be both machine and human readable (with a priority for the prior), concise, and to contain only strictly relevant fields to minimize extraneous information and verbosity.
SystemSpec Fields
Field Name | Required? | Can Be Fuzzy? | Field Initial | Field Description | Field Options |
---|---|---|---|---|---|
Body Age | Yes | No | B | The age of the system's body | Any positive integer |
Member Age Lower Limit | No | Yes | M | The age of the system's youngest alter | Any positive integer, must be less than U if both are specified |
Member Age Upper Limit | No | Yes | U | The age of the system's oldest alter | Any positive integer, must be greater than M if both are specified |
Presented Gender | Yes | No | G | The gender with which the system presents when masking | Any option from the Gender enum |
Presented Sexual Orientation | Yes | No | S | The sexual orientation with which the system presents when masking | Any option from the SexualOrientation enum |
Presented Romantic Orientation | Yes | No | R | The romantic orientation with which the system presents when masking | Any option from the RomanticOrientation enum |
Non-Human Population | No | Yes | H | The presence of alters in the system who identify as non-human | Any option from the NonHumanPopulation enum |
Communication Degree | Yes | No | I | The degree to which alters in the system are able to communicate | Any option from the IntegrationDegree enum |
Memory Sharing Degree | Yes | No | E | The degree to which alters in the system are able to share memories | Any option from the IntegrationDegree enum |
Real Life Outness Degree | Yes | No | L | The degree to which the system is open about their plurality in real-life interactions | Any option from the OutnessDegree enum |
Online Outness Degree | Yes | No | O | The degree to which the system is open about their plurality in online interactions | Any option from the OutnessDegree enum |
Preferred Term | No | No | P | The term by which alters in the system prefer to be called | Any option from the PreferredTerm enum |
Fuzziness
Some values can be labelled with a "fuzziness" value, which is represented by a flag of the form Fn
where n
is the value that follows the main flag and value. Fuzziness indicates the degree of certainty that the system has with regards to that value. For example, they may know that their member count is roughly 13, but not be sure exactly what it is. In this case, instead of just C13
, they could use C13F1
to indicate that 13 is just a rough estimate.
SystemSpec Short-Form
SystemSpec, when handled by a website or other program, should be formatted as JSON (as defined by the SystemSpec type in this library). If a system would like to share their SystemSpec in a more concise form, the Short-Form or Shortform is a standardized way of doing so. In Short-Form, each field is represented as its initial followed by an integer representing its value. Conversion to Short-Form is very straightforward:
- For fields whose values are numbers, simply use the number
- For fields whose values are enum options, use the index of the value in its enum
- For example, Female has an index of 0 in the Gender enum, and therefore its representation would be G0
- For the "System Has Non-Human Alters" field, use 1 for true and 0 for false