Stationpedia Ascended DeviceDatabase / descriptions.json¶
Wire-format reference for Stationpedia Ascended's shipped JSON description database and its runtime DeviceDatabase dictionary. Mods that augment Stationpedia Ascended tooltips or add new device pages need the exact schema to produce valid entries and to understand which lookup paths Stationpedia Ascended consults at runtime.
descriptions.json metrics¶
Size: approximately 1.2 MB (shipped as both an embedded resource
StationpediaAscended.descriptions.json inside the StationpediaAscended DLL and as a loose
file next to the DLL at
<STEAM_ROOT>\steamapps\workshop\content\544550\3634225688\descriptions.json).
Content breakdown:
devices: 499 entries. One per modded or vanilla Thing that Stationpedia Ascended documents.guides: 5 entries (Survival, Power, Airlock, AC, plus one general).mechanics: 2 entries (game-mechanic explainer pages).genericDescriptions: 250 entries (fallback LogicType / slot / version / memory descriptions used when a device-specific entry is missing).
Loading order (first hit wins):
1. Embedded resource StationpediaAscended.descriptions.json inside the DLL.
2. <dll dir>/descriptions.json (next to the StationpediaAscended DLL).
3. BepInEx/scripts/descriptions.json.
4. <My Games>/Stationeers/mods/StationpediaAscended/descriptions.json.
Deserialized via Newtonsoft.Json into DescriptionsRoot which contains
List<DeviceDescriptions> devices etc. GenericDescriptionsData uses
[JsonExtensionData] so additional unknown keys are preserved in
AdditionalData.
Implication: StationpediaAscended's shipped file already has entries for all three microwave
transmitter variants (ThingStructurePowerTransmitter at :24385,
ThingStructurePowerTransmitterOmni at :24482,
ThingStructurePowerTransmitterReceiver at :24524) with logicDescriptions
for every vanilla LogicType but empty operationalDetails: []. None of our
six custom LogicType names appear. StationpediaAscendedBridge's reflection into
DeviceDatabase adds entries to the existing logicDescriptions dicts on
these devices at runtime; it does not modify the shipped JSON file itself.
DeviceDatabase and schema¶
Public static dictionary on StationpediaAscended.StationpediaAscendedMod:
Populated synchronously by LoadDescriptions inside StationpediaAscended's Awake. By the time
any BepInEx OnAllModsLoaded callback fires, the database is ready.
StationpediaAscended entry schema:
public class DeviceDescriptions
{
public string deviceKey;
public string displayName;
public string pageDescription;
public string pageDescriptionPrepend;
public string pageDescriptionAppend;
public string pageImage;
public Dictionary<string, LogicDescription> logicDescriptions;
public Dictionary<string, ModeDescription> modeDescriptions;
public Dictionary<string, SlotDescription> slotDescriptions;
public Dictionary<string, VersionDescription> versionDescriptions;
public Dictionary<string, MemoryDescription> memoryDescriptions;
public List<OperationalDetail> operationalDetails;
public string operationalDetailsTitleColor;
public string operationalDetailsBackgroundColor;
public bool generateToc;
public string tocTitle;
public bool tocFlat;
}
public class LogicDescription
{
public string dataType; // "Boolean", "Float", "Integer", "ReferenceId", "String"
public string range; // "0-1", "0+", "any", "0 or id", etc.
public string description; // plain text only; no markup tokens
}
All lowercase-first field names. Plain fields, no properties, no constructors.
Verification history¶
- 2026-04-20: page created from the Research migration. Primary source F0249 (StationpediaAscended descriptions.json shipped metrics). Additional source F0213 (DeviceDatabase + DeviceDescriptions + LogicDescription schema). F0219x merges into F0249 per MigrationMap ยง5.1.
- 2026-09-22: file renamed so its name spells out Stationpedia Ascended, and inbound links updated. The planned bridge class is now named
StationpediaAscendedBridge, matchingPlans/StationpediaPlus/PLAN.mdsince commit 89a6f90e. Naming only: no factual change, stamps unchanged.
Open questions¶
None at creation.