Blame
|
1 | # Hold The Horde — Save and Content State |
||||||
| 2 | ||||||||
| 3 | **Status.** First-pass design contract, not an implementation, storage schema, owner-selected save policy, or proof that every station arrangement is valid. The continuity promises below preserve current owner decisions; the save/resume package is a provisional default offered for review. The order of a death-triggered shift and an in-progress survivor transfer, survivor loss, full-station behavior, and alive-return population behavior remain unresolved. |
|||||||
| 4 | ||||||||
| 5 | ## What continuity promises the player |
|||||||
| 6 | ||||||||
|
7 | Within one loaded continuity, the same completed act remains true after return, death, quit, load, or a later shift unless its owning rule says it is temporary. Under the provisional single-line policy, ordinary loading does not roll it back; the disclosed recovery fallback and reloadable alternative are explicit exceptions, not owner-set prohibitions. One item cannot exist in two places and spent oxygen or material cannot reappear within the loaded history. Everything in the astronaut's carried property at death returns aboard, including each active rig part and each inactive or loose cargo item once. Something dropped, consumed, handed over, or installed in a station/ship fixture or another location outside that carried set does not. Loading and quitting cause no death, shift, delivery, completed work, or new knowledge. |
||||||
|
8 | |||||||
| 9 | The game must distinguish **world truth** from **astronaut knowledge**. A room may have a current neighbour the astronaut has not observed; that fact belongs to world state but cannot fill the journal. A recorded route may remain useful evidence while becoming historical after a death shift. A persistent join, opened door, installed part, or completed fastener remains a known fact without revealing any unobserved adjacency. |
|||||||
| 10 | ||||||||
| 11 | ## Minimum identities and state ownership |
|||||||
| 12 | ||||||||
| 13 | Names below describe required distinctions, not field names or a technical format. |
|||||||
| 14 | ||||||||
| 15 | | Identity or state | Minimum durable meaning | What must stay separate | |
|||||||
| 16 | |---|---|---| |
|||||||
| 17 | | **Reusable room-module definition** | Authored layout/behavior shared by possible uses | Not a placed room. Editing a definition cannot merge the histories of its instances. | |
|||||||
| 18 | | **Placed room instance** | One actual playable room with a stable identity across shifts | Current neighbours, orientation, transient power/population, and durable internal work. A shift changes arrangement, not identity. | |
|||||||
| 19 | | **Arrangement generation** | The current post-death arrangement plus stable identities for every older generation still referenced by evidence | Not a map reveal. It dates observations and prevents applying one death twice. | |
|||||||
| 20 | | **Threshold face and selected join** | The two specific placed faces and a stable join identity; whether the persistent latch exists | Walking connection, mechanical latch, and diagnostic power remain separate. Unbound adjacency is transient. | |
|||||||
| 21 | | **Mechanism instance and checkpoint** | The placed machine, each named completed stage, deliberate mode/disable state, and reset rule | Current animation/timer/charge and enemy occupancy are transient unless that machine explicitly commits them. | |
|||||||
|
22 | | **Object instance** | One reusable part, canister, objective item, or loot object with one definition and exactly one current location/state | Astronaut-carried property contains active rig equipment and inactive/loose cargo as distinct substates, each counted once. Station/ship fixture, deposit/recipient, world source, and consumed are outside that set and mutually exclusive with it. “Collected” is a past event, not a current location. Fill, stored charge, and rig links belong to the same instance. | |
||||||
| 23 | | **Astronaut expedition state** | Current place, carried manifest—including every active rig part and inactive/loose cargo item once—rig arrangement, suit oxygen, condition, and active life/expedition identity | Ship oxygen supply is unlimited, but gas already breathed remains spent. Moving a carried part between rig and inactive cargo changes operation, not return membership or carrying count. Ordinary condition restoration aboard does not refill canisters or reset parts. | |
|||||||
|
24 | | **Evidence record** | One committed capture, note revision, testimony, or instrument report with provenance, room instance, arrangement/life, and factual limit | Record existence, player annotation, attributed interpretation, and present truth. A historical mark never becomes current automatically. | |
||||||
|
25 | | **Survivor** | One authored person, last confirmed transfer state and source, and—once resolved—their actual location/state | Never cargo. Waiting, Prepared, In transfer, At abort refuge, and Sent are not interchangeable. Sent commits only when this same survivor has completed arrival aboard and the required ship airlock is closed; confirmation provenance remains separate from world state. | |
||||||
|
26 | | **Population/transient hazard state** | Exact state needed to suspend a live expedition | Not durable clearance beyond its owning encounter rule. Later population may differ without replacing earned world work. | |
||||||
| 27 | ||||||||
| 28 | Every transition names the identity it mutates, its precondition, the point at which it commits, and what an interruption preserves. A collectible changes from source to carried in one commit; it is never copied and then deleted later. Incremental oxygen transfer is the exception in granularity, not conservation: each committed increment moves gas between the same two object states. |
|||||||
| 29 | ||||||||
| 30 | ## Provisional save and resume policy |
|||||||
| 31 | ||||||||
| 32 | **Recommended default for review: one authoritative continuity line with suspend-anywhere resume.** Durable commits are recorded after each completed atomic change, and quitting records a suspend point containing the current live state without advancing it. Loading resumes the newest verified point. A save records state; it is not a world action and cannot finish an action, consume time, trigger an alarm, return property, or shift the station. This does not decide whether any general menu pauses play; only the journal pause is owner-set. |
|||||||
| 33 | ||||||||
| 34 | An unfinished action remains unfinished at its recorded phase. Resume does not round it forward to a checkpoint or backward across a completed increment. Ordinary cancel, displacement, withdrawal, and death still apply their owning interruption rules. Quit does none of those things. Deliberate death is a gameplay choice and uses the same death transaction as any other death. Loading is not revival and creates no new arrangement. |
|||||||
| 35 | ||||||||
| 36 | The default offers no selectable earlier timeline. Its strength is one legible consequence chain: installed parts, consumed resources, discoveries, and shifts cannot be casually undone, and the state space for a long mystery is narrower. Its cost is less freedom to revisit an accidental choice and greater dependence on reliable recovery. If the newest record cannot be verified, the player may be offered the last verified compatible point with an explicit statement of what boundary would be rolled back; the game must never perform that rollback silently. |
|||||||
| 37 | ||||||||
| 38 | **Credible alternative: manual named checkpoints plus autosave.** Players could preserve and reload earlier branches. This supports experimentation, shared households, accessibility needs, and recovery from misunderstood commitments. It also lets a player search death shifts or undo installs, spends, and story choices; authoring and support must tolerate more divergent histories. If adopted, no in-fiction punishment, weakened reward, or “save-scumming” label is added. The owner must choose the policy and any slot/overwrite restrictions; this article recommends the single-line default provisionally, not as canon. |
|||||||
| 39 | ||||||||
| 40 | ## One death-and-shift transaction |
|||||||
| 41 | ||||||||
| 42 | A lethal condition and a unique death-transaction identity are committed together. There is no saveable gap in which the astronaut is lethally dead but the transition does not exist. |
|||||||
| 43 | ||||||||
| 44 | 1. **Seal the death instant.** Commit gas actually transferred or breathed, material already consumed, completed pickups/drops/installs and completed work checkpoints. Mark the current incomplete stage interrupted; do not complete it. |
|||||||
|
45 | 2. **Partition property once.** Snapshot the astronaut-carried membership by object identity: every active rig part plus every inactive/loose cargo item, each once. Move those same instances aboard, preserving rig-versus-cargo substate. Leave station/ship-fixture installations, deposits, handovers, world-source objects, and consumed resources outside the return set in their actual states. For example, an active Sensor and Projector, an inactive loose Fork, and a carried partial canister return once each; a different Fork in a station fixture and scrap already consumed by a Cycler do not. Restore ordinary condition for the next expedition under the current rule; ship-side refilling remains separate. |
||||||
|
46 | 3. **Hold the survivor boundary honestly.** A person already Sent remains aboard. With no transfer in progress, other survivor states remain under their own rules. If death occurs during transfer, preserve the last confirmed state and mark present location/outcome unconfirmed. The unresolved ordering rule must later choose one actual outcome before this branch can ship; persistence must not invent delivery, refuge, loss, or safety. |
||||||
| 47 | 4. **Shift exactly once.** Advance the arrangement generation once. Preserve selected joins and their bound groups, stable room identities, completed mechanism/checkpoint states, and objects attached to their room/fixture identities. Recompute only the unbound arrangement under the eventual shift rules. Do not use a rescue or installed object as an unchosen joining exception. |
|||||||
| 48 | 5. **Reclassify knowledge.** Retain records and notes. Mark prior-life route and adjacency claims historical; keep completed work and join facts known. Reveal only what can currently be sensed from the ship/airlock or another valid instrument. |
|||||||
| 49 | 6. **Commit the aboard result.** The next resumable gameplay state is aboard with the returned manifest and one new arrangement. A later refill, repack, or departure is not part of death itself. |
|||||||
| 50 | ||||||||
| 51 | **Before, during, and after recovery.** A suspend committed before any lethal boundary resumes the same living state and causes no death or shift. Once the lethal boundary/transaction identity exists, any interruption resumes that transaction at its last completed phase rather than returning to play. Completed phases are idempotent: an item already moved is not moved again and an advanced shift is not advanced again. After the aboard result commits, every load resumes post-death; it cannot replay delivery, work, carried return, or the shift. |
|||||||
| 52 | ||||||||
| 53 | ## Five state walkthroughs |
|||||||
| 54 | ||||||||
| 55 | | Case | Before / interruption | Resume, withdrawal, or death result | |
|||||||
| 56 | |---|---|---| |
|||||||
| 57 | | **1. Interrupted canister handover** | A carried canister is entering the equipment sleeve. Before the handover commit it remains carried. Any separately completed incremental gas transfer has already changed the two fill amounts. | Quit/load resumes the unfinished handover without completing it. Cancel, displacement, or death before commit leaves the canister carried, so death returns it. After commit it has one sleeve/recipient location, leaves the manifest, and does not return on death. | |
|||||||
| 58 | | **2. Installed reusable part through a shift** | Fork Relay installation in a named fixture is complete; its current power may be transient. | Death returns other carried items, not this Fork. The room instance keeps the installed object through the shift even if its neighbours change. The journal may show “installed at [known room]” while the old walking route becomes historical; load neither clones nor retrieves it. | |
|||||||
| 59 | | **3. Partly completed mechanism** | Bolt A is cut; Bolt B is halfway through its current stage. | Suspend/load resumes Bolt B at that unfinished phase. Withdrawal or death loses only Bolt B's unfinished stage; Bolt A remains cut. A later obstruction may block the next attempt but cannot restore Bolt A. | |
|||||||
|
60 | | **4. Journal and history** | A committed still and note identify a room and route in arrangement 12. Quit and load occur before death. | Both retain their recorded time, place, source, and claim on resume; unchanged arrangement does not verify their interpretation or present truth. Any resumed live reading is separately observed. After death creates arrangement 13, the records persist, route/adjacency claims become historical, and a known installed part or cut bolt remains a durable fact. No unseen route, translation, or corrected conclusion appears. | |
||||||
| 61 | | **5. Rescue near delivery** | The named survivor is In transfer and the ship airlock has not closed. A quit suspends that exact state; it does not send them. | Loading after quit resumes In transfer. Sent commits only if that same survivor completes arrival aboard and the required airlock closure then confirms the aboard state; an empty closure or one with them outside does nothing. If death commits before that complete predicate, the transaction records last confirmed In transfer and an unconfirmed current outcome. It chooses no refuge, ship, loss, or safety; this branch remains blocked until the owner resolves ordering and allowed outcomes. | |
|||||||
|
62 | |||||||
| 63 | ## Content-authoring requirements |
|||||||
| 64 | ||||||||
| 65 | A later authoring tool must represent these facts without prescribing a storage technology: |
|||||||
| 66 | ||||||||
| 67 | - Stable, never-reused identities for definitions, placed rooms, faces, joins, mechanisms/checkpoints, objects, evidence, survivors, authored objectives/scenes, and arrangement generations. References name an identity, not a display name or current coordinate. |
|||||||
| 68 | - For every action, an explicit precondition, commit boundary, interruption result, persistence class, and owning article/rule. Temporary state must name its reset boundary; persistent state must name any deliberate reversal. |
|||||||
| 69 | - Placement constraints for required entrances, compatible faces, control access from the necessary sides, safe recovery from reversible mistakes, mechanism clearance, short-rescue geometry, and objects attached to stable room/fixture identities. A constraint declaration is not proof that all generated arrangements satisfy it. |
|||||||
| 70 | - Explicit allowed destinations for each object and survivor transition. Collection, installation, consumption, deposit, handover, and return must conserve one instance. Critical controls cannot be authored only on a side made unreachable by their own persistent state. |
|||||||
| 71 | - Separate author facts from discoverable facts and player records. A condition may test real state, but its presentation may expose only authorized observation, testimony, or instrument output. |
|||||||
| 72 | - Content version and compatibility requirements. Removed or changed content needs an authored compatibility/migration decision later. An unknown identity, invalid reference, impossible placement, or contradictory lifecycle must produce an inspectable authoring/load error; it must not silently substitute a similarly named room, drop an item, reset a checkpoint, or invent a survivor result. |
|||||||
| 73 | ||||||||
| 74 | Before content is admitted, a paper/static check must find no duplicate object location, rolled-back completed work, repeated death shift, orphaned persistent join, unreachable required recovery control, current label on historical geography, or survivor state stronger than its confirmation. These are design checks, not executed tests or proof of runtime correctness. |
|||||||
| 75 | ||||||||
| 76 | ## Scope and open decisions |
|||||||
| 77 | ||||||||
| 78 | **First-pass package estimate:** Systems authoring **8–14 role-hours**, focused review **3–5**, and one response **2–4**; **13–23 role-hours total**. This advances the outline's save/persistence specification row and Design Coverage gap; it is not added again in full to those older envelopes. It excludes UI cue/screen inventories, equipment and oxygen rules, actual rooms/objectives/cast, technical architecture/storage/schema/migrations, implementation, assets, and test execution. |
|||||||
| 79 | ||||||||
| 80 | **Later detailed SMALL state specification:** Systems/technical-design authoring **26–44 role-hours**, review **6–10**, response **3–5**; **35–59 total**. Unique work is the complete transition/commit catalogue, placement and reference matrix, resolved survivor/shift branches, compatibility policy, and concrete authoring-tool requirements. It excludes the same implementation and content production, and must not be added wholesale to overlapping survival, information, trap, station-connection, or Development and Validation Handoff estimates. |
|||||||
| 81 | ||||||||
| 82 | Open owner/design decisions are: single-line versus reloadable saves and exact slot behavior; save availability and non-journal menu pause behavior; survivor transfer/death/shift ordering and loss eligibility; the final shift mechanism and whole-station completion behavior; alive-return population/transient reset rules; and the player-facing recovery policy for incompatible or damaged saves. No answer is inferred from silence. |
|||||||
