Standout Builder Studio · planning Index / Examples / Mechanics library review Updated 12 Jun 2026

The mechanics library

The keystone of the Builder Studio ontology: a mechanic is isolated from an existing game, given a canonical label and trait vocabulary, and recorded as a first-class library entry. Every new game, variant, or reskin then references that record — rather than copying opaque config — so the whole build pipeline knows what kind of game it is working with before a single config value is set.


The mechanic record

Mechanics are first-class records that games reference, not inline config blobs that games own. A MechanicRecord can be pointed at by many games simultaneously; changing the record's metadata (label, certification status, trait tags) does not change any game's config. Today's nearest ancestor is the template registry in packages/shared/src/templates.ts, where each GameTemplate carries a manifest with mechanic, sessionMode, and defaultRtp — the library formalises and extends that pattern. In the grown GameSpec data model, a spec points at one or more library entries via mechanicRefs[].

Field Type Description
id string Stable slug used in mechanicRefs[] on GameSpec and in picker queries. E.g. crash-shared-world.
label string Human-readable name shown in the picker and the variant diff UI. E.g. "Crash — shared-world multiplier curve".
traits[] TraitTag[] Tagged vocabulary covering: session mode (shared-world / single-player / multi), pacing (real-time / turn-based), decision shape (cashout-timing / n-choice pick / press-your-luck ladder / pure reveal), volatility levers (curve bounds / multiplier ranges / thresholds / prize table), and bonus hooks (earned-through-play / triggered / none). See Labelling vocabulary.
configSchemaRef string Points at the engine plugin's config schema (e.g. games/crash/server/src/types.ts#CrashConfig). The Builder renders the mechanic-specific config form from this ref.
lineage string Human note on provenance: the game or version from which this record was extracted. E.g. "extracted from crash v1.2" or "extracted from games/trunk-raider". Audit trail; not machine-parsed.
certificationStatus "certified" | "in-review" | "concept" Whether the mechanic has been through the certification process. Certified mechanics can be used in production paths; concept entries can be used in prototype and sandbox paths only.

The labelling vocabulary

Every mechanic record carries a set of traits[] drawn from the vocabulary below. The vocabulary is the shared language used across the picker, the variant diff UI, the Math-Sim agent's config validation, and the mechanics library's own filter query. Tags are grouped into five axes — a record carries exactly one tag per axis, except volatility levers (a mechanic may expose more than one lever type).

Session mode
shared-world single-player multi
Pacing
real-time turn-based
Decision shape
cashout-timing n-choice pick press-your-luck ladder pure reveal
Volatility levers
curve bounds multiplier ranges thresholds prize table
Bonus hooks
earned-through-play triggered none

Example records

Five full entries follow — three GROUNDED (values extracted verbatim from packages/shared/src/templates.ts and the engine game sources) and two CONCEPT entries for mechanic types not yet in the library. Every card carries a honesty badge.

Crash

Crash — shared-world multiplier curve crash-shared-world
GROUNDED · matches main
shared-world real-time cashout-timing triggered certified
houseEdge
0.03 default (3%) — drives RTP 0.97
crash point range
1.0× minimum — 100.0× maximum
useBonus
true
RTP
0.97 (97.0%)
configSchemaRef
games/crash/server/src/types.ts#CrashConfig
extracted from games/crash — real-time, shared-world via Durable Object per room; all players see the same multiplier curve tick by tick

Trunk Raider

Trunk Raider — three-choice pick'em trunk-raider-pickm
GROUNDED · matches main
single-player turn-based n-choice pick earned-through-play certified
RTP
0.96 (96.0%)
silentPick threshold
15 regular rounds to earn
informant threshold
32 regular rounds to earn
cheatCode threshold
65 regular rounds to earn
configSchemaRef
games/trunk-raider/server/src/types.ts#GameConfig
extracted from games/trunk-raider — bonuses (silentPick, informant, cheatCode) are earned through cumulative play, not externally triggered

Silk Road

Silk Road — press-your-luck caravan ladder silk-road-pyl
GROUNDED · matches main
single-player turn-based press-your-luck ladder none certified
minBet
tunable — default 0.25
maxBet
tunable — default 1000
targetRtp
0.97 default (97.0%) — only three tunables exposed
configSchemaRef
games/silk-road/server/src/types.ts
extracted from games/silk-road — deliberately minimal config surface; all internal curve and risk parameters are owned by the engine, not exposed as levers

Prize-table instant win

Prize-table instant win instant-win-prize-table
CONCEPT · no engine ancestor
single-player turn-based pure reveal none concept · not certified
prize table
configurable prize tiers and values; drives RTP via table sum
odds
per-tier probability weights; must sum to 1.0 (validated at build time)
configSchemaRef
not yet defined — no engine plugin exists
no engine ancestor — would require a new plugin in standout-games before a record can graduate from CONCEPT to certified

Weighted-reel slot

Weighted-reel slot slot-weighted-reel
CONCEPT · no engine ancestor
single-player turn-based pure reveal triggered concept · not certified
reels
number of reels (e.g. 3 or 5)
paylines / ways
fixed payline count or all-ways multiplier
symbol weights
per-reel symbol weight tables; drives hit frequency and RTP
bonus trigger
scatter count threshold that activates bonus rounds
configSchemaRef
not yet defined — no engine plugin exists
no engine ancestor — the most commonly requested mechanic type from studio partners; engineering scoping required before any prototype

How the picker queries the library

When a builder chooses the New game path in the Build Path Picker, the second step is selecting a mechanic — or proposing a new one. Rather than presenting a raw list, the picker exposes a filtered view of the library: a builder can describe the kind of game they are making ("something with a shared-world curve", "a pick'em with earned bonuses") and the library returns matching entries ranked by certification status. Only certified records are eligible for production paths; concept entries are offered as starting points for prototype or variant explorations with an explicit warning that a new plugin will be required.

Filtered library view — "show everything with a shared-world multiplier curve" CONCEPT · proposed
Mechanics library — filtered view CONCEPT · proposed
Active filters session: shared-world decision: cashout-timing 1 result
Mechanic
RTP
Status
Crash — shared-world multiplier curve
shared-world · real-time · cashout-timing · triggered bonus
97.0%
certified
No CONCEPT entries match these filters. To propose a new mechanic, choose "Propose a new mechanic" from the New game path — it will enter the library as a CONCEPT entry and require an engineering prototype before it can be certified.

How new mechanics enter the library

New mechanic records do not enter the library by fiat. The path is engineering-assisted and proceeds in three stages: the engine holds fifteen games today while the template registry covers three — the extraction backlog and the auto-extraction fix are traced in Variant → Live's gap table.

  1. Prototype plugin in standout-games. A game developer implements the mechanic as a new plugin — a TurnBasedPlugin or RealTimePlugin — in the vhslab/standout-games repository, following the plugin contract and registering it in the engine's static plugin registry. This is the only stage that requires direct engineering engagement; it cannot be agent-automated yet.
  2. Extraction. Once the plugin exists and a first game is playable in sandbox, the mechanic's trait vocabulary is extracted: session mode, pacing, decision shape, volatility levers, and bonus hooks are labelled from the plugin's config schema and default values. The configSchemaRef is set to the plugin's config type.
  3. Record. A CONCEPT entry is created in the library. From that point on, games can reference the entry in prototyping and sandbox paths. Promotion to certified status requires the full certification process, including Math-Sim proof artefacts and compliance review.
Certified-RNG constraint — do not bypass
The engine uses a certified and locked RNG implementation in the game-rng package. Mechanics never own RNG directly — they consume game-rng via the plugin API. A new mechanic plugin must not introduce its own random-number logic, fork game-rng, or attempt to override its outputs. Any change to game-rng itself requires a full recertification cycle, which is time-consuming and expensive. This constraint is absolute: if a proposed mechanic cannot be expressed using the existing game-rng API, the correct path is to raise an engineering change request — not to work around it in the plugin. See architecture open questions for the related Math-Sim proof compliance question.