Mechanics Families¶
Status: 🟡 ACTIVE ARCHITECTURE NOTE
Layer: author-layer capability families under tangl.mechanics
Core Idea¶
tangl.mechanics is not a bucket of miscellaneous game systems.
It is a library of reusable consequence grammars plus the semantic,
projection, and writeback bindings that make those grammars story-capable.
Mechanics remain grouped by broad families at the package level:
gamesprogressionassemblydemographicspresencelater:
sandbox,credentials, other world- or plugin-provided families
Within each family, we reason about implementation through a common internal layer model rather than by forcing a filesystem reorganization up front.
Internal Layers¶
Each mechanic family should describe which of these layers it implements and which are intentionally absent:
1. Kernel¶
Pure deterministic rule logic.
no story-specific prose
no media delivery concerns
no hidden global state
no implicit randomness
Examples:
matchup algebra
slot or budget validation
stat delta math
option-generation policy
2. Domain¶
Semantic bindings that map abstract slots or operations onto a themed ontology.
vocabularies
YAML catalogs
semantic labels
rarity or affiliation systems
world-specific configuration overlays
3. Runtime¶
The live artifacts used while resolving a mechanic instance.
Typical shapes:
spec
state
offer / option
intent
resolution record
receipt / audit artifact
4. Render¶
Projection from runtime artifacts into narrative or media-facing outputs.
journal fragments
media specs
UI-facing choice text
concise logs versus lush recap styles
5. Writeback¶
Explicit consequence application to persistent story state.
relationship shifts
deck or inventory edits
world-state toggles
reputation or progression changes
follow-on affordances
6. Facade¶
Thin author-facing surfaces that expose the family ergonomically.
HasGameHasDemographicsHasLookfuture
HasOutfit,HasCredentials, etc.
The facade should stay thin. The real logic belongs in kernel, runtime, render, and writeback layers.
Review Lens¶
For this mechanics resurrection pass, and likely for the wider engine later, every family should be reviewable through four questions:
Shape¶
What artifacts exist at rest?
specs
state models
offers
intents
records
fragments
resources
Behavior¶
What transitions or computations occur?
planning
option generation
resolution
projection
writeback
Attachment Points¶
Where does the family plug into the system?
compiler or materializer
namespace contribution
VM phase hooks
media adapters
orchestrator or service response shaping
Appearance¶
What does the family look like when it acts?
prose
journal fragments
media fragments
DTOs
player-facing choices
This rubric is intentionally broader than mechanics. It is a useful way to describe StoryTangl subsystems in general:
what shape does it have,
what does it do,
where does it attach,
what does it look like when it does it.
Support and Promotion Criteria¶
A fully supported mechanic family should satisfy all of the following:
It declares which internal layers it implements.
It can be described clearly through the review lens above.
Randomness is explicit and controllable.
Writeback is explicit rather than hidden inside opaque side effects.
Projection is separable from kernel and writeback.
It does not depend on
scratch/.It does not depend on example-only internals from another active family.
Not every current family is fully supported yet. During this pass we use a broader classification:
Reference: strongest current integrated example
Foundation: reusable kernel/runtime or domain surface, not fully integrated
Redesign: valuable intent, but current shape should not be extended blindly
Incubating: active design direction, not yet engine contract
Archive: idea inventory only
Current Family Matrix¶
games — Reference¶
Why it stays:
already spans kernel, runtime, projection, and limited writeback
already attaches to VM planning, update, journal, and namespace hooks
already gives us a thin author-facing
HasGamefacade
Review lens:
Shape: game state, move payloads, round records, journal fragments
Behavior: move provisioning, resolution, terminal-state routing
Attachment points: VM phase handlers plus namespace injection
Appearance: interactive choices and round recap fragments
progression — Foundation¶
Why it stays:
strong kernel and runtime primitives
clear stat system, task, handler, and outcome surfaces
Current gap:
render and writeback are still thinner than the family wants long-term
Review lens:
Shape: stat systems, stats, tasks, effects, contexts
Behavior: competency math, modifier aggregation, task resolution
Attachment points: currently mostly direct library use
Appearance: still modest and mostly caller-defined
assembly — Foundation¶
Why it stays:
it is a useful constrained optimization kernel, not an incidental example
slot and budget algebra are reusable across outfits, vehicles, credentials, and other authored loadouts
Review lens:
Shape: slots, groups, budgets, slotted containers
Behavior: assignment, validation, resource constraint checking
Attachment points: facet-style embedded containers on entities
Appearance: generally projected by higher-level families
demographics — Foundation, first modernization spike¶
Why it stays:
useful domain/profile facet
valuable for actor identity, namespace publication, and future projection
Current gap:
historically written as a standalone generator library rather than a v38 mechanics facet
Review lens:
Shape: demographic profiles, regions, countries, subtypes, name banks
Behavior: controlled sampling and profile construction
Attachment points: actor composition and namespace export
Appearance: naming and identity metadata today; richer prose/media later
presence/wearable and presence/ornaments — Foundation¶
Why they stay:
they are reusable presence/runtime primitives
they feed future look, outfit, and presentation families
Review lens:
Shape: wearable tokens, ornament entities, states, coverage regions
Behavior: state transitions and visibility or coverage reasoning
Attachment points: future loadout and appearance surfaces
Appearance: item or body-detail description
presence/look — Redesign¶
Why it stays, but under redesign:
the intended appearance layer is strong
the current implementation still needs broader render/media intersections cleaned up even after the first facade rescue
Required direction:
keep the new deterministic description surface and structured media payload contract, then continue separating richer render/media intersections from the body-trait profile itself
stop depending on example-only assembly code
keep it thin enough to act as a facade over better runtime and projection surfaces
sandbox — Incubating¶
Direction:
schedule + namespace + fanout + redirects
not a standalone traversal subsystem
credentials — Incubating¶
Direction:
game kernel + asset collection + render + writeback
not a direct legacy port target
scratch/mechanics — Archive¶
Use:
idea source
prior art
test inspiration
design vocabulary
Do not treat it as a promotable runtime surface without rederiving the design against v38 contracts.
CalvinCards as Exemplar¶
scratch/mechanics/calvin_cards is the clearest local example of the target
mental model.
What it demonstrates:
the same kernel can be rebound to multiple semantic catalogs
mechanical artifacts can be projected through different narrative voices
a compact resolution grammar can produce strong story output
Why it matters:
it separates abstract strategy and matchup logic from vocabulary and flavor
it implies explicit runtime artifacts such as offers, intents, records, and receipts
it makes writeback visible as the difference between a toy and a story-capable mechanic
This is why StoryTangl mechanics are better framed as families of consequence grammars rather than just “minigames.”
Current Implementation Priorities¶
Document the family model and promotion rules.
Refresh nearby README and docs surfaces to match the model.
Modernize
demographicsas the first facet-oriented spike.Rescue
presenceby promoting real outfit/loadout logic out of examples and reducinglookto a cleaner domain/runtime plus render shape.Later, grow
progressionandassemblyinto fuller story-capable families, and convertsandbox/credentialsfrom design notes into composed v38 implementations.