Turn homepage VN into spatial site layer
BIN
GameCult/static/interactive/cotsc-praxis/backgrounds/archive.png
Normal file
|
After Width: | Height: | Size: 2.5 MiB |
|
After Width: | Height: | Size: 840 KiB |
|
After Width: | Height: | Size: 2.6 MiB |
BIN
GameCult/static/interactive/cotsc-praxis/backgrounds/forge.png
Normal file
|
After Width: | Height: | Size: 2.5 MiB |
BIN
GameCult/static/interactive/cotsc-praxis/backgrounds/gate.png
Normal file
|
After Width: | Height: | Size: 2.7 MiB |
BIN
GameCult/static/interactive/cotsc-praxis/backgrounds/ledger.png
Normal file
|
After Width: | Height: | Size: 2.7 MiB |
BIN
GameCult/static/interactive/cotsc-praxis/backgrounds/library.png
Normal file
|
After Width: | Height: | Size: 2.7 MiB |
|
After Width: | Height: | Size: 2.7 MiB |
|
After Width: | Height: | Size: 327 KiB |
|
After Width: | Height: | Size: 328 KiB |
|
After Width: | Height: | Size: 350 KiB |
BIN
GameCult/static/interactive/cotsc-praxis/sprites/aqua/idle.png
Normal file
|
After Width: | Height: | Size: 291 KiB |
BIN
GameCult/static/interactive/cotsc-praxis/sprites/aqua/listen.png
Normal file
|
After Width: | Height: | Size: 271 KiB |
BIN
GameCult/static/interactive/cotsc-praxis/sprites/aqua/patch.png
Normal file
|
After Width: | Height: | Size: 307 KiB |
|
After Width: | Height: | Size: 387 KiB |
|
After Width: | Height: | Size: 405 KiB |
|
After Width: | Height: | Size: 429 KiB |
|
After Width: | Height: | Size: 431 KiB |
|
After Width: | Height: | Size: 411 KiB |
|
After Width: | Height: | Size: 445 KiB |
|
After Width: | Height: | Size: 434 KiB |
|
After Width: | Height: | Size: 423 KiB |
|
After Width: | Height: | Size: 414 KiB |
|
After Width: | Height: | Size: 404 KiB |
|
After Width: | Height: | Size: 394 KiB |
|
After Width: | Height: | Size: 408 KiB |
|
After Width: | Height: | Size: 360 KiB |
|
After Width: | Height: | Size: 429 KiB |
|
After Width: | Height: | Size: 385 KiB |
|
After Width: | Height: | Size: 345 KiB |
|
After Width: | Height: | Size: 364 KiB |
|
After Width: | Height: | Size: 356 KiB |
|
After Width: | Height: | Size: 368 KiB |
BIN
GameCult/static/interactive/cotsc-praxis/sprites/huginn/idle.png
Normal file
|
After Width: | Height: | Size: 354 KiB |
BIN
GameCult/static/interactive/cotsc-praxis/sprites/huginn/lens.png
Normal file
|
After Width: | Height: | Size: 344 KiB |
|
After Width: | Height: | Size: 348 KiB |
|
After Width: | Height: | Size: 370 KiB |
|
After Width: | Height: | Size: 365 KiB |
|
After Width: | Height: | Size: 416 KiB |
|
After Width: | Height: | Size: 373 KiB |
BIN
GameCult/static/interactive/cotsc-praxis/sprites/kiko/debug.png
Normal file
|
After Width: | Height: | Size: 406 KiB |
|
After Width: | Height: | Size: 430 KiB |
BIN
GameCult/static/interactive/cotsc-praxis/sprites/kiko/sprint.png
Normal file
|
After Width: | Height: | Size: 379 KiB |
BIN
GameCult/static/interactive/cotsc-praxis/sprites/kiko/tinker.png
Normal file
|
After Width: | Height: | Size: 422 KiB |
BIN
GameCult/static/interactive/cotsc-praxis/sprites/libby/idle.png
Normal file
|
After Width: | Height: | Size: 447 KiB |
|
After Width: | Height: | Size: 424 KiB |
|
After Width: | Height: | Size: 491 KiB |
|
After Width: | Height: | Size: 434 KiB |
BIN
GameCult/static/interactive/cotsc-praxis/sprites/libby/shush.png
Normal file
|
After Width: | Height: | Size: 410 KiB |
BIN
GameCult/static/interactive/cotsc-praxis/sprites/libby/stamp.png
Normal file
|
After Width: | Height: | Size: 446 KiB |
|
After Width: | Height: | Size: 412 KiB |
BIN
GameCult/static/interactive/cotsc-praxis/sprites/nibu/glitch.png
Normal file
|
After Width: | Height: | Size: 346 KiB |
BIN
GameCult/static/interactive/cotsc-praxis/sprites/nibu/idle.png
Normal file
|
After Width: | Height: | Size: 351 KiB |
BIN
GameCult/static/interactive/cotsc-praxis/sprites/nibu/lore.png
Normal file
|
After Width: | Height: | Size: 347 KiB |
|
After Width: | Height: | Size: 351 KiB |
|
After Width: | Height: | Size: 405 KiB |
|
After Width: | Height: | Size: 1.1 MiB |
|
After Width: | Height: | Size: 279 KiB |
BIN
GameCult/static/interactive/cotsc-praxis/sprites/void/idle.png
Normal file
|
After Width: | Height: | Size: 261 KiB |
BIN
GameCult/static/interactive/cotsc-praxis/sprites/void/point.png
Normal file
|
After Width: | Height: | Size: 296 KiB |
|
After Width: | Height: | Size: 252 KiB |
BIN
GameCult/static/interactive/cotsc-praxis/sprites/void/walk.png
Normal file
|
After Width: | Height: | Size: 258 KiB |
|
After Width: | Height: | Size: 263 KiB |
BIN
GameCult/static/interactive/cotsc-praxis/sprites/weksa/argue.png
Normal file
|
After Width: | Height: | Size: 430 KiB |
|
After Width: | Height: | Size: 410 KiB |
|
After Width: | Height: | Size: 421 KiB |
BIN
GameCult/static/interactive/cotsc-praxis/sprites/weksa/idle.png
Normal file
|
After Width: | Height: | Size: 485 KiB |
|
After Width: | Height: | Size: 393 KiB |
BIN
GameCult/static/interactive/cotsc-praxis/sprites/weksa/map.png
Normal file
|
After Width: | Height: | Size: 426 KiB |
|
|
@ -12,6 +12,7 @@ VAR visited_count = 0
|
|||
# speaker: Void
|
||||
# avatar: void
|
||||
# scene: compound
|
||||
# sprite: welcome@left
|
||||
# dom: studio
|
||||
Welcome to GameCult: an open game studio building strange worlds, public tools, and the receipts needed to make creative work inspectable.
|
||||
-> welcome_2
|
||||
|
|
@ -20,16 +21,18 @@ Welcome to GameCult: an open game studio building strange worlds, public tools,
|
|||
# speaker: Void
|
||||
# avatar: void
|
||||
# scene: compound
|
||||
# sprite: document@left
|
||||
# dom: studio,projects
|
||||
I am Void, your guide for the front compound. The rooms are project doors, the hosts are Faces--public project avatars that speak with receipts nearby--and every friendly card still points back to the plain wiki. Charm is allowed. Hiding the documents is not.
|
||||
I am Void, your guide for the front compound. The rooms are project doors, topic rooms, repo desks, setting vaults, tool benches, blog lanes, and docs shelves. Every friendly path still points back to the canonical page. Charm is allowed. Hiding the documents is not.
|
||||
-> hub
|
||||
|
||||
=== hub ===
|
||||
# speaker: Void
|
||||
# avatar: void
|
||||
# scene: compound
|
||||
# sprite: point@left
|
||||
# dom: studio,projects
|
||||
Each door answers a different visitor problem. Pick the one that sounds like the itch.
|
||||
Each door is a website space. Pick the one that sounds like the itch.
|
||||
+ [How do agents remember work? Meet Epiphany at the forge] -> epiphany
|
||||
+ [How does public labor become a receipt? Visit Bifrost] -> bifrost
|
||||
+ [Where did that lore or decision come from? Find VoidBot] -> voidbot
|
||||
|
|
@ -46,6 +49,7 @@ Each door answers a different visitor problem. Pick the one that sounds like the
|
|||
# speaker: Epiphany
|
||||
# avatar: epiphany
|
||||
# scene: forge
|
||||
# sprite: evidence@right
|
||||
# dom: epiphany,proof
|
||||
Epiphany is at the forge with a map pinned beside the workbench, comparing what an agent said it would do against the files it actually touched. Someone has written "do not improve wallpaper with hammer" on the safety rail. Sensible, humiliating, necessary.
|
||||
-> epiphany_2
|
||||
|
|
@ -54,6 +58,7 @@ Epiphany is at the forge with a map pinned beside the workbench, comparing what
|
|||
# speaker: Epiphany
|
||||
# avatar: epiphany
|
||||
# scene: forge
|
||||
# sprite: map@right
|
||||
# dom: epiphany
|
||||
My job is to stop AI helpers from forgetting the room they are standing in. I keep maps, evidence, and role lanes outside the chat fog so future work can argue with the past instead of accidentally reenacting it in a nicer hat.
|
||||
-> hub_return
|
||||
|
|
@ -66,6 +71,7 @@ My job is to stop AI helpers from forgetting the room they are standing in. I ke
|
|||
# speaker: Void
|
||||
# avatar: void
|
||||
# scene: ledger
|
||||
# sprite: document@left
|
||||
# dom: bifrost,proof
|
||||
Bifrost is the ledger hall. A contributor proposes work, the community argues priority, someone claims the task, reviewers accept or reject the result, and the receipt remembers who did what instead of letting chat scroll bury the body.
|
||||
-> bifrost_2
|
||||
|
|
@ -74,6 +80,7 @@ Bifrost is the ledger hall. A contributor proposes work, the community argues pr
|
|||
# speaker: Void
|
||||
# avatar: void
|
||||
# scene: ledger
|
||||
# sprite: unimpressed@left
|
||||
# dom: bifrost
|
||||
It is not a solved economy with a cape on. It is a way to make unfinished labor, credit, risk, and support visible before those records start touching money.
|
||||
-> hub_return
|
||||
|
|
@ -86,6 +93,7 @@ It is not a solved economy with a cape on. It is a way to make unfinished labor,
|
|||
# speaker: Void
|
||||
# avatar: void
|
||||
# scene: archive
|
||||
# sprite: document@left
|
||||
# dom: voidbot,projects
|
||||
VoidBot is the archive room with a mouth: Discord memory, repo retrieval, lore lookup, and an escape hatch into heavier work when chat becomes a shoebox full of lightning.
|
||||
-> voidbot_2
|
||||
|
|
@ -94,6 +102,7 @@ VoidBot is the archive room with a mouth: Discord memory, repo retrieval, lore l
|
|||
# speaker: Void
|
||||
# avatar: void
|
||||
# scene: archive
|
||||
# sprite: point@left
|
||||
# dom: voidbot
|
||||
People ask it where a decision came from, which repo owns a problem, or what the lore already says. Repo Faces grow from that pressure: a project should be able to greet you, explain itself, and point at evidence without pretending the avatar is the source of truth.
|
||||
-> hub_return
|
||||
|
|
@ -106,6 +115,7 @@ People ask it where a decision came from, which repo owns a problem, or what the
|
|||
# speaker: Libby
|
||||
# avatar: libby
|
||||
# scene: library
|
||||
# sprite: stamp@right
|
||||
# dom: cultlib,docs
|
||||
I am Libby, which means I get the shelves and the little stamp that says "no, this pile of blobs is not a library." CultLib is the shared system for keeping records findable, typed, and movable between tools.
|
||||
-> cultlib_2
|
||||
|
|
@ -114,6 +124,7 @@ I am Libby, which means I get the shelves and the little stamp that says "no, th
|
|||
# speaker: Libby
|
||||
# avatar: libby
|
||||
# scene: library
|
||||
# sprite: schema@right
|
||||
# dom: cultlib
|
||||
The first shelves are simple: stored records, messages, and shared state. Internally we call them CultCache, CultNet, and CultMesh, because apparently even librarians are allowed one dramatic vice. If both sides are ours, the record gets a shape.
|
||||
-> hub_return
|
||||
|
|
@ -126,6 +137,7 @@ The first shelves are simple: stored records, messages, and shared state. Intern
|
|||
# speaker: Heimdall
|
||||
# avatar: heimdall
|
||||
# scene: gate
|
||||
# sprite: badge@right
|
||||
# dom: heimdall,bifrost
|
||||
I am Heimdall. I check the badge, the grant, the session, and the revocation list before anyone crosses the line. A gate that cannot refuse is not consent; it is decoration with a login button.
|
||||
-> heimdall_2
|
||||
|
|
@ -134,6 +146,7 @@ I am Heimdall. I check the badge, the grant, the session, and the revocation lis
|
|||
# speaker: Heimdall
|
||||
# avatar: heimdall
|
||||
# scene: gate
|
||||
# sprite: barrier@right
|
||||
# dom: heimdall
|
||||
Transparency without consent becomes exposure. Access without revocation becomes custody. The gate has to explain itself or it is just a wall with better branding.
|
||||
-> hub_return
|
||||
|
|
@ -146,6 +159,7 @@ Transparency without consent becomes exposure. Access without revocation becomes
|
|||
# speaker: Void
|
||||
# avatar: void
|
||||
# scene: receipts
|
||||
# sprite: document@left
|
||||
# dom: proof,roadmap
|
||||
The proof wall starts with current evidence: project pages, repo links, site graph, damage reports, and a receipt checklist for what the future ledger must show. It is not enough yet. That is the point of making the gap visible.
|
||||
-> proof_2
|
||||
|
|
@ -154,6 +168,7 @@ The proof wall starts with current evidence: project pages, repo links, site gra
|
|||
# speaker: Void
|
||||
# avatar: void
|
||||
# scene: receipts
|
||||
# sprite: point@left
|
||||
# dom: proof
|
||||
A proper receipt will name scope, consent, work item, agent and human roles, model spend, review burden, artifacts, outcome, and lesson. Bifrost should become that canonical ledger; the website mirrors it and admits the risk while the machinery is still young.
|
||||
-> hub_return
|
||||
|
|
@ -162,6 +177,7 @@ A proper receipt will name scope, consent, work item, agent and human roles, mod
|
|||
# speaker: Void
|
||||
# avatar: void
|
||||
# scene: compound
|
||||
# sprite: welcome@left
|
||||
# dom: docs,projects
|
||||
Good instinct. The normal wiki is still here. The story is a guide, not a velvet curtain in front of the exits.
|
||||
-> hub_return
|
||||
|
|
@ -170,6 +186,7 @@ Good instinct. The normal wiki is still here. The story is a guide, not a velvet
|
|||
# speaker: Void
|
||||
# avatar: void
|
||||
# scene: compound
|
||||
# sprite: point@left
|
||||
# dom: studio,projects
|
||||
Want another door? {visited_count >= 3: The floor plan is coming into focus: your checked doors show what you have visited, and the remaining plaques still name the larger machine.}
|
||||
+ [{visited_epiphany: Revisit Epiphany: agent memory | How do agents remember work? Meet Epiphany}] -> epiphany
|
||||
|
|
@ -184,6 +201,7 @@ Want another door? {visited_count >= 3: The floor plan is coming into focus: you
|
|||
# speaker: Void
|
||||
# avatar: void
|
||||
# scene: compound
|
||||
# sprite: document@left
|
||||
# dom: docs,projects
|
||||
Then take the plain doors. {visited_count == 0: You skipped the ceremony and went straight to the documents. Correct behavior. | You have seen {visited_count} project rooms; the links below are the same machinery without me standing in front of it.} If I make the documents harder to reach, I have failed the tour.
|
||||
-> END
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
"asset_base": "/static/interactive/cotsc-praxis/",
|
||||
"default_caption": "GameCult Compound",
|
||||
"global_style_cue": "Stripped-down website visual novel stage using clean card chrome, high-contrast public-document panels, restrained studio lighting, visible project-room affordances, and no full background image. The scene is represented through stage cards, route plaques, document surfaces, and speaker portraits so it blends into the Quartz page instead of covering it.",
|
||||
"metadata_contract": "Sai currently renders scene labels, actor avatars, and dom_cards. The scene_set, camera, visual_anchor, dom_card_roles, visual_ref, and state_modifiers fields are canonical reviewer/tooling metadata for the stripped card-stage plan until Sai exposes them through runtime probes or visual hooks.",
|
||||
"metadata_contract": "Sai renders scene labels, backgrounds, actor avatars, named sprites, dom_cards, and space metadata. The spaces map is the canonical website-compound contract: each space is a project, topic, repo, setting, tool, docs shelf, blog lane, or receipt surface with a host and canonical URL.",
|
||||
"scene_set": {
|
||||
"id": "gamecult_compound_card_stage",
|
||||
"purpose": "A reusable card-chrome compound layout for homepage replay. The stage is not a generated background; it is a durable arrangement of document-backed route cards, speaker panels, and room-specific props that can preserve hub geography and visited-state markers.",
|
||||
|
|
@ -17,95 +17,299 @@
|
|||
"compound": {
|
||||
"label": "Front Gate",
|
||||
"camera": "hub_wide",
|
||||
"visible_actors": ["Void"],
|
||||
"visible_actors": [
|
||||
"Void"
|
||||
],
|
||||
"visual_anchor": "A public studio compound rendered as clean website cards rather than a painted background: central GameCult welcome card, project-atlas card, docs card, and route plaques for forge, ledger, archive, library, gate, proof wall, and direct wiki exit.",
|
||||
"dom_card_roles": {
|
||||
"studio": "central welcome placard",
|
||||
"projects": "project atlas signboard",
|
||||
"docs": "plain wiki exit"
|
||||
}
|
||||
},
|
||||
"background": "backgrounds/compound.png"
|
||||
},
|
||||
"forge": {
|
||||
"label": "Epiphany Forge",
|
||||
"camera": "room_medium",
|
||||
"visible_actors": ["Epiphany"],
|
||||
"visible_actors": [
|
||||
"Epiphany"
|
||||
],
|
||||
"visual_anchor": "Agent-state forge represented by a workbench card, pinned machine map, evidence ledger sheet, verification checklist, and Epiphany portrait beside the project receipt card.",
|
||||
"dom_card_roles": {
|
||||
"epiphany": "project receipt card",
|
||||
"proof": "evidence sheet on the workbench"
|
||||
}
|
||||
},
|
||||
"background": "backgrounds/forge.png"
|
||||
},
|
||||
"ledger": {
|
||||
"label": "Bifrost Ledger Hall",
|
||||
"camera": "room_medium",
|
||||
"visible_actors": ["Void"],
|
||||
"visible_actors": [
|
||||
"Void"
|
||||
],
|
||||
"visual_anchor": "Public labor ledger counter with work item slips, claim stamps, review marks, credit trail, and payout-risk warning card; Bifrost documentation appears as the inspectable receipt behind the scene.",
|
||||
"dom_card_roles": {
|
||||
"bifrost": "ledger desk card",
|
||||
"proof": "receipt example panel"
|
||||
}
|
||||
},
|
||||
"background": "backgrounds/ledger.png"
|
||||
},
|
||||
"archive": {
|
||||
"label": "VoidBot Archive Room",
|
||||
"camera": "room_medium",
|
||||
"visible_actors": ["Void"],
|
||||
"visible_actors": [
|
||||
"Void"
|
||||
],
|
||||
"visual_anchor": "Archive terminal and shelf-card scene with Discord history, repo search, lore lookup, and Codex handoff routes shown as labeled drawers rather than abstract database language.",
|
||||
"dom_card_roles": {
|
||||
"voidbot": "archive terminal card",
|
||||
"projects": "repo atlas drawer"
|
||||
}
|
||||
},
|
||||
"background": "backgrounds/archive.png"
|
||||
},
|
||||
"library": {
|
||||
"label": "CultLib Library",
|
||||
"camera": "room_medium",
|
||||
"visible_actors": ["Libby"],
|
||||
"visible_actors": [
|
||||
"Libby"
|
||||
],
|
||||
"visual_anchor": "Typed-record library with labeled shelves for stored documents, messages, and distributed state; Libby stands near a stamp pad marked with schema, provenance, and public inspection.",
|
||||
"dom_card_roles": {
|
||||
"cultlib": "library shelf card",
|
||||
"docs": "public docs shelf"
|
||||
}
|
||||
},
|
||||
"background": "backgrounds/library.png"
|
||||
},
|
||||
"gate": {
|
||||
"label": "Heimdall Gatehouse",
|
||||
"camera": "room_medium",
|
||||
"visible_actors": ["Heimdall"],
|
||||
"visible_actors": [
|
||||
"Heimdall"
|
||||
],
|
||||
"visual_anchor": "Identity and consent gate rendered as a credential console with grant, session, revocation, and signed-claim panels; the gate visibly has both entry and refusal paths.",
|
||||
"dom_card_roles": {
|
||||
"heimdall": "gate console card",
|
||||
"bifrost": "authority trail card"
|
||||
}
|
||||
},
|
||||
"background": "backgrounds/gate.png"
|
||||
},
|
||||
"receipts": {
|
||||
"label": "Proof Walk",
|
||||
"camera": "receipt_close",
|
||||
"visible_actors": ["Void"],
|
||||
"visible_actors": [
|
||||
"Void"
|
||||
],
|
||||
"visual_anchor": "Proof wall made of public document cards: current site graph, damage report, repo links, future Bifrost receipt checklist, known-risk note, and roadmap panel.",
|
||||
"dom_card_roles": {
|
||||
"proof": "current receipt checklist",
|
||||
"roadmap": "future ledger path"
|
||||
}
|
||||
},
|
||||
"background": "backgrounds/receipts.png"
|
||||
}
|
||||
},
|
||||
"actors": {
|
||||
"Void": {
|
||||
"avatar": "void.png",
|
||||
"visual_ref_type": "dom_avatar_portrait_ref",
|
||||
"visual_ref": "Dry guide Face with dark interface palette, alert eyes, and document-host posture; appears as the host who keeps exits visible and points back to receipts."
|
||||
"visual_ref": "Dry guide Face with dark interface palette, alert eyes, and document-host posture; appears as the host who keeps exits visible and points back to receipts.",
|
||||
"default_sprite": "idle",
|
||||
"sprites": {
|
||||
"idle": {
|
||||
"image": "sprites/void/idle.png",
|
||||
"position": "left",
|
||||
"scale": 1.15
|
||||
},
|
||||
"welcome": {
|
||||
"image": "sprites/void/welcome.png",
|
||||
"position": "left",
|
||||
"scale": 1.15
|
||||
},
|
||||
"document": {
|
||||
"image": "sprites/void/document.png",
|
||||
"position": "left",
|
||||
"scale": 1.12
|
||||
},
|
||||
"point": {
|
||||
"image": "sprites/void/point.png",
|
||||
"position": "left",
|
||||
"scale": 1.12
|
||||
},
|
||||
"unimpressed": {
|
||||
"image": "sprites/void/unimpressed.png",
|
||||
"position": "left",
|
||||
"scale": 1.12
|
||||
}
|
||||
}
|
||||
},
|
||||
"Epiphany": {
|
||||
"avatar": "epiphany.png",
|
||||
"visual_ref_type": "dom_avatar_portrait_ref",
|
||||
"visual_ref": "Bright agent-state forge Face with workshop confidence, map-and-ledger motifs, and a slightly pushy expression that reads as useful pressure rather than generic audit prose."
|
||||
"visual_ref": "Bright agent-state forge Face with workshop confidence, map-and-ledger motifs, and a slightly pushy expression that reads as useful pressure rather than generic audit prose.",
|
||||
"default_sprite": "idle",
|
||||
"sprites": {
|
||||
"idle": {
|
||||
"image": "sprites/epiphany/idle.png",
|
||||
"position": "right",
|
||||
"scale": 1.08
|
||||
},
|
||||
"map": {
|
||||
"image": "sprites/epiphany/map.png",
|
||||
"position": "right",
|
||||
"scale": 1.08
|
||||
},
|
||||
"evidence": {
|
||||
"image": "sprites/epiphany/evidence.png",
|
||||
"position": "right",
|
||||
"scale": 1.08
|
||||
},
|
||||
"cut": {
|
||||
"image": "sprites/epiphany/cut.png",
|
||||
"position": "right",
|
||||
"scale": 1.08
|
||||
},
|
||||
"stop": {
|
||||
"image": "sprites/epiphany/stop.png",
|
||||
"position": "right",
|
||||
"scale": 1.08
|
||||
}
|
||||
}
|
||||
},
|
||||
"Libby": {
|
||||
"avatar": "libby.png",
|
||||
"visual_ref_type": "dom_avatar_portrait_ref",
|
||||
"visual_ref": "Open-knowledge librarian Face with shelf, stamp, and catalog motifs; warm enough to invite visitors in, sharp enough to reject untyped sludge."
|
||||
"visual_ref": "Open-knowledge librarian Face with shelf, stamp, and catalog motifs; warm enough to invite visitors in, sharp enough to reject untyped sludge.",
|
||||
"default_sprite": "idle",
|
||||
"sprites": {
|
||||
"idle": {
|
||||
"image": "sprites/libby/idle.png",
|
||||
"position": "right",
|
||||
"scale": 1.08
|
||||
},
|
||||
"stamp": {
|
||||
"image": "sprites/libby/stamp.png",
|
||||
"position": "right",
|
||||
"scale": 1.08
|
||||
},
|
||||
"schema": {
|
||||
"image": "sprites/libby/schema.png",
|
||||
"position": "right",
|
||||
"scale": 1.08
|
||||
},
|
||||
"shush": {
|
||||
"image": "sprites/libby/shush.png",
|
||||
"position": "right",
|
||||
"scale": 1.08
|
||||
},
|
||||
"research": {
|
||||
"image": "sprites/libby/research.png",
|
||||
"position": "right",
|
||||
"scale": 1.08
|
||||
}
|
||||
}
|
||||
},
|
||||
"Heimdall": {
|
||||
"avatar": "heimdall.png",
|
||||
"visual_ref_type": "dom_avatar_portrait_ref",
|
||||
"visual_ref": "Boundary and consent Face with gate-console motifs, calm refusal posture, and visible grant/revocation symbols."
|
||||
"visual_ref": "Boundary and consent Face with gate-console motifs, calm refusal posture, and visible grant/revocation symbols.",
|
||||
"default_sprite": "idle",
|
||||
"sprites": {
|
||||
"idle": {
|
||||
"image": "sprites/heimdall/idle.png",
|
||||
"position": "right",
|
||||
"scale": 1.1
|
||||
},
|
||||
"badge": {
|
||||
"image": "sprites/heimdall/badge.png",
|
||||
"position": "right",
|
||||
"scale": 1.1
|
||||
},
|
||||
"barrier": {
|
||||
"image": "sprites/heimdall/barrier.png",
|
||||
"position": "right",
|
||||
"scale": 1.1
|
||||
},
|
||||
"revoke": {
|
||||
"image": "sprites/heimdall/revoke.png",
|
||||
"position": "right",
|
||||
"scale": 1.1
|
||||
},
|
||||
"protect": {
|
||||
"image": "sprites/heimdall/protect.png",
|
||||
"position": "right",
|
||||
"scale": 1.1
|
||||
}
|
||||
}
|
||||
},
|
||||
"Aqua": {
|
||||
"avatar": "aqua.png",
|
||||
"default_sprite": "idle",
|
||||
"sprites": {
|
||||
"idle": "sprites/aqua/idle.png",
|
||||
"conduct": "sprites/aqua/conduct.png",
|
||||
"patch": "sprites/aqua/patch.png",
|
||||
"listen": "sprites/aqua/listen.png",
|
||||
"boundary": "sprites/aqua/boundary.png"
|
||||
}
|
||||
},
|
||||
"Nibu": {
|
||||
"avatar": "nibu.png",
|
||||
"default_sprite": "idle",
|
||||
"sprites": {
|
||||
"idle": "sprites/nibu/idle.png",
|
||||
"sarcastic": "sprites/nibu/sarcastic.png",
|
||||
"console": "sprites/nibu/console.png",
|
||||
"glitch": "sprites/nibu/glitch.png",
|
||||
"lore": "sprites/nibu/lore.png",
|
||||
"triumph": "sprites/nibu/triumph.png"
|
||||
}
|
||||
},
|
||||
"Weksa": {
|
||||
"avatar": "weksa.png",
|
||||
"default_sprite": "idle",
|
||||
"sprites": {
|
||||
"idle": "sprites/weksa/idle.png",
|
||||
"map": "sprites/weksa/map.png",
|
||||
"argue": "sprites/weksa/argue.png",
|
||||
"fieldwork": "sprites/weksa/fieldwork.png",
|
||||
"interlingua": "sprites/weksa/interlingua.png",
|
||||
"contract": "sprites/weksa/contract.png"
|
||||
}
|
||||
},
|
||||
"Kiko": {
|
||||
"avatar": "kiko.png",
|
||||
"default_sprite": "overlay",
|
||||
"sprites": {
|
||||
"overlay": "sprites/kiko/overlay.png",
|
||||
"sprint": "sprites/kiko/sprint.png",
|
||||
"tinker": "sprites/kiko/tinker.png",
|
||||
"boundary": "sprites/kiko/boundary.png",
|
||||
"confetti": "sprites/kiko/confetti.png",
|
||||
"debug": "sprites/kiko/debug.png"
|
||||
}
|
||||
},
|
||||
"Druzkai": {
|
||||
"avatar": "druzkai.png",
|
||||
"default_sprite": "idle",
|
||||
"sprites": {
|
||||
"idle": "sprites/druzkai/idle.png",
|
||||
"tablet": "sprites/druzkai/tablet.png",
|
||||
"road": "sprites/druzkai/road.png",
|
||||
"contract": "sprites/druzkai/contract.png",
|
||||
"warning": "sprites/druzkai/warning.png",
|
||||
"memory": "sprites/druzkai/memory.png"
|
||||
}
|
||||
},
|
||||
"Huginn": {
|
||||
"avatar": "huginn.png",
|
||||
"default_sprite": "idle",
|
||||
"sprites": {
|
||||
"idle": "sprites/huginn/idle.png",
|
||||
"return": "sprites/huginn/return.png",
|
||||
"validate": "sprites/huginn/validate.png",
|
||||
"lens": "sprites/huginn/lens.png",
|
||||
"refuse": "sprites/huginn/refuse.png",
|
||||
"envelope": "sprites/huginn/envelope.png"
|
||||
}
|
||||
}
|
||||
},
|
||||
"state_modifiers": {
|
||||
|
|
@ -167,5 +371,178 @@
|
|||
"selector": "#gamecult-vn-roadmap",
|
||||
"role": "future public-ledger path"
|
||||
}
|
||||
},
|
||||
"spaces": {
|
||||
"front_gate": {
|
||||
"kind": "hub",
|
||||
"scene": "compound",
|
||||
"host": "Void",
|
||||
"title": "GameCult Front Gate",
|
||||
"url": "/",
|
||||
"dom": [
|
||||
"studio",
|
||||
"projects",
|
||||
"docs"
|
||||
],
|
||||
"contains": [
|
||||
"projects",
|
||||
"docs",
|
||||
"blog",
|
||||
"proof_walk"
|
||||
]
|
||||
},
|
||||
"projects": {
|
||||
"kind": "project_atlas",
|
||||
"scene": "compound",
|
||||
"host": "Void",
|
||||
"title": "Project Atlas",
|
||||
"url": "/Projects/",
|
||||
"dom": [
|
||||
"projects"
|
||||
],
|
||||
"contains": [
|
||||
"epiphany",
|
||||
"bifrost",
|
||||
"voidbot",
|
||||
"cultlib",
|
||||
"heimdall",
|
||||
"aetheria",
|
||||
"zyphos",
|
||||
"weksa",
|
||||
"streampixels"
|
||||
]
|
||||
},
|
||||
"docs": {
|
||||
"kind": "docs_shelf",
|
||||
"scene": "compound",
|
||||
"host": "Void",
|
||||
"title": "Docs Shelf",
|
||||
"url": "/Docs/",
|
||||
"dom": [
|
||||
"docs"
|
||||
]
|
||||
},
|
||||
"blog": {
|
||||
"kind": "blog_lane",
|
||||
"scene": "receipts",
|
||||
"host": "Void",
|
||||
"title": "Blog Lane",
|
||||
"url": "/Blog/",
|
||||
"dom": [
|
||||
"roadmap",
|
||||
"proof"
|
||||
]
|
||||
},
|
||||
"epiphany": {
|
||||
"kind": "repo_tool",
|
||||
"scene": "forge",
|
||||
"host": "Epiphany",
|
||||
"title": "EpiphanyAgent Forge",
|
||||
"url": "/Projects/EpiphanyAgent/",
|
||||
"dom": [
|
||||
"epiphany",
|
||||
"proof"
|
||||
],
|
||||
"repo": "EpiphanyAgent"
|
||||
},
|
||||
"bifrost": {
|
||||
"kind": "repo_tool",
|
||||
"scene": "ledger",
|
||||
"host": "Void",
|
||||
"title": "Bifrost Ledger Hall",
|
||||
"url": "/Projects/Bifrost/",
|
||||
"dom": [
|
||||
"bifrost",
|
||||
"proof"
|
||||
],
|
||||
"repo": "Bifrost"
|
||||
},
|
||||
"voidbot": {
|
||||
"kind": "repo_tool",
|
||||
"scene": "archive",
|
||||
"host": "Void",
|
||||
"title": "VoidBot Archive Room",
|
||||
"url": "/Projects/VoidBot/",
|
||||
"dom": [
|
||||
"voidbot",
|
||||
"projects"
|
||||
],
|
||||
"repo": "VoidBot"
|
||||
},
|
||||
"cultlib": {
|
||||
"kind": "repo_tool",
|
||||
"scene": "library",
|
||||
"host": "Libby",
|
||||
"title": "CultLib Library",
|
||||
"url": "/Projects/CultLib/",
|
||||
"dom": [
|
||||
"cultlib",
|
||||
"docs"
|
||||
],
|
||||
"repo": "CultLib"
|
||||
},
|
||||
"heimdall": {
|
||||
"kind": "repo_tool",
|
||||
"scene": "gate",
|
||||
"host": "Heimdall",
|
||||
"title": "Heimdall Gatehouse",
|
||||
"url": "/Projects/Heimdall/",
|
||||
"dom": [
|
||||
"heimdall",
|
||||
"bifrost"
|
||||
],
|
||||
"repo": "Heimdall"
|
||||
},
|
||||
"proof_walk": {
|
||||
"kind": "receipt_surface",
|
||||
"scene": "receipts",
|
||||
"host": "Void",
|
||||
"title": "Proof Walk",
|
||||
"url": "/Docs/",
|
||||
"dom": [
|
||||
"proof",
|
||||
"roadmap"
|
||||
]
|
||||
},
|
||||
"aetheria": {
|
||||
"kind": "setting",
|
||||
"scene": "archive",
|
||||
"host": "Nibu",
|
||||
"title": "Aetheria Setting Vault",
|
||||
"url": "/Aetheria/",
|
||||
"repo": "AetheriaLore"
|
||||
},
|
||||
"zyphos": {
|
||||
"kind": "setting",
|
||||
"scene": "library",
|
||||
"host": "Druzkai",
|
||||
"title": "Zyphos / Eusocial Interbeing Vault",
|
||||
"url": "/Projects/Eusocial-Interbeing/",
|
||||
"repo": "Eusocial Interbeing"
|
||||
},
|
||||
"weksa": {
|
||||
"kind": "tool",
|
||||
"scene": "library",
|
||||
"host": "Weksa",
|
||||
"title": "Weksa Language Lab",
|
||||
"url": "/Projects/weksa/",
|
||||
"repo": "weksa"
|
||||
},
|
||||
"streampixels": {
|
||||
"kind": "tool",
|
||||
"scene": "compound",
|
||||
"host": "Kiko",
|
||||
"title": "StreamPixels Overlay Studio",
|
||||
"url": "/Projects/StreamPixels/",
|
||||
"repo": "StreamPixels"
|
||||
},
|
||||
"cultcachets": {
|
||||
"kind": "repo_tool",
|
||||
"scene": "library",
|
||||
"host": "Huginn",
|
||||
"title": "CultCacheTS Inspection Desk",
|
||||
"url": "/Projects/CultCacheTS/",
|
||||
"repo": "CultCacheTS"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,3 +20,11 @@ Each sheet uses the largest local avatar/source render found during the pass and
|
|||
Generated sheet assets live under:
|
||||
|
||||
`GameCult/static/interactive/cotsc-praxis/character-sheets/`
|
||||
|
||||
Extracted runtime sprites live under:
|
||||
|
||||
`GameCult/static/interactive/cotsc-praxis/sprites/`
|
||||
|
||||
Generated first-ring VN backgrounds live under:
|
||||
|
||||
`GameCult/static/interactive/cotsc-praxis/backgrounds/`
|
||||
|
|
|
|||
BIN
docs/face-artifacts/sai-vn-epiphany.png
Normal file
|
After Width: | Height: | Size: 792 KiB |
BIN
docs/face-artifacts/sai-vn-home.png
Normal file
|
After Width: | Height: | Size: 669 KiB |
32
docs/face-artifacts/vn-space-map.md
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
# VN Space Map
|
||||
|
||||
The GameCult homepage VN is becoming the primary spatial navigation layer for the site, not a decorative prelude.
|
||||
|
||||
The authority split is:
|
||||
|
||||
- Quartz pages remain the canonical documents.
|
||||
- The visual manifest owns the website-compound map: spaces, scenes, hosts, sprite assets, and DOM card bindings.
|
||||
- Ink owns guided conversation, pacing, and temporary visited-state.
|
||||
- Sai owns rendering: background, sprites, dialogue, choices, and DOM-card staging.
|
||||
|
||||
Current first-ring spaces:
|
||||
|
||||
| Space | Kind | Host | Scene | Canonical URL |
|
||||
| --- | --- | --- | --- | --- |
|
||||
| Front Gate | hub | Void | compound | `/` |
|
||||
| Project Atlas | project atlas | Void | compound | `/Projects/` |
|
||||
| Docs Shelf | docs shelf | Void | compound | `/Docs/` |
|
||||
| Blog Lane | blog lane | Void | receipts | `/Blog/` |
|
||||
| EpiphanyAgent Forge | repo/tool | Epiphany | forge | `/Projects/EpiphanyAgent/` |
|
||||
| Bifrost Ledger Hall | repo/tool | Void | ledger | `/Projects/Bifrost/` |
|
||||
| VoidBot Archive Room | repo/tool | Void | archive | `/Projects/VoidBot/` |
|
||||
| CultLib Library | repo/tool | Libby | library | `/Projects/CultLib/` |
|
||||
| Heimdall Gatehouse | repo/tool | Heimdall | gate | `/Projects/Heimdall/` |
|
||||
| Proof Walk | receipt surface | Void | receipts | `/Docs/` |
|
||||
| Aetheria Setting Vault | setting | Nibu | archive | `/Aetheria/` |
|
||||
| Zyphos / Eusocial Interbeing Vault | setting | Druzkai | library | `/Projects/Eusocial-Interbeing/` |
|
||||
| Weksa Language Lab | tool | Weksa | library | `/Projects/weksa/` |
|
||||
| StreamPixels Overlay Studio | tool | Kiko | compound | `/Projects/StreamPixels/` |
|
||||
| CultCacheTS Inspection Desk | repo/tool | Huginn | library | `/Projects/CultCacheTS/` |
|
||||
|
||||
This is intentionally broader than the first Ink tour. The runtime can now stage sprites for every Face, and the manifest can name spaces the story has not visited yet. The next coherent expansion is to generate Ink branches from this space map so every project page, blog lane, repo doc shelf, setting vault, and tool bench can be reached by talking to the relevant host while still exposing the plain canonical links.
|
||||