Field Guide · InnerCartography

Layered Reality
Questing
A New Genre

How Blender, steganography, and hyperblogs collapse the distance between a game world, a real place, and a knowledge graph.

↓ scroll to decode ↓
01

The Tool Stack

Blender — The Authoring Environment
Where worlds are made, encoded, and exported.
+

Blender is a free, open-source 3D creation suite. Think of it as the world's most powerful geometry editor — not just for pretty pictures, but for building environments that carry embedded data.

Geometry Nodes let you describe a world as a recipe, not a manual arrangement. Instead of placing 50 trees, you write a rule: scatter instances across a surface, vary their scale, avoid this zone. The geometry emerges from logic.

Definition · Geometry Nodes
Blender's node-based procedural modeling system. Data flows left→right through a graph: input mesh → operations → output geometry. Analogous to ROOM's ontological primitives — define relationships, let the space instantiate.

Every object in Blender carries custom properties — arbitrary key/value data you attach to any mesh. A building can hold its construction date, owner, event history, and ROOM place ID. The geometry is the database.

GENERATE
Prompt via Cline CLI → Blender MCP → scene geometry appears
ENCODE
Python script bakes JSON payloads into vertex colors or textures
EXPORT
GLB / FBX → Unity, Three.js, or Unreal Engine
Blender 4.2+ Cline CLI Blender MCP glTF / FBX
Unity — The Game Runtime
Where geometry becomes experience.
+

Unity ingests FBX/GLB files from Blender and adds gameplay logic — physics, triggers, mobile deploy, XR support. It can also read mesh data at runtime: a C# script calls Mesh.GetColors() to extract vertex color arrays and decode any payload baked in during authoring.

Deploy targets: iOS, Android, PC, Mac, Quest. One codebase, many surfaces.

"The place carries its own unlock conditions. The knowledge isn't in your database waiting to be served — it's in the geometry of the world itself, waiting to be found."

C# Scripting iOS / Android WebView FBX Import
Three.js — The Web Runtime
Embed any world in a browser or hyperblog.
+

Three.js renders 3D geometry in a browser using WebGL. GLB files exported from Blender load directly. JavaScript mirrors the Unity decode logic — read vertex buffer, extract payload, surface it as UI.

Lighter than Unity, no app store, works inside a hyperblog as an embedded canvas. This is the web-first path for the same experience.

Definition · Hyperblog
A self-contained HTML file with accordion depth layers, animated knowledge graph canvases, click-to-open definition panels, and optional steganographic/puzzle mechanics. Publishable as a file, embeddable in any context, readable on any device.
WebGL GLB Loader No App Store Hyperblog-embeddable
Gaussian Splats — The Photorealistic Substrate
Real places, rendered from point clouds.
+

Gaussian splats are a rendering technique that converts photogrammetric captures into ultra-realistic 3D environments — not meshes, but millions of oriented ellipsoids that reconstruct a scene from photographs.

Definition · Gaussian Splat
A 3D scene representation using 3D Gaussians (mathematical ellipsoids) derived from Structure from Motion capture. Each Gaussian carries position, color, opacity, and covariance. The result is photorealistic and real-time renderable in WebGL. File formats: .ply, .splz, .spz.

Blender 4.2+ imports splats natively. The workflow: capture a real location (Matterport Pro2, PortalCam) → process to .ply → import into Blender → composite with procedural geometry → export the combined scene.

For DVV: the 1887 Dunsmuir hotel captured as a splat becomes the substrate. Low-poly world geometry surrounds it. Both export together as one scene.

Matterport .ply / .splz Blender 4.2+ WebGL runtime
02

Steganography in Geometry

What Is Steganography Here?
Hiding information inside the world itself.
+

Steganography is the practice of concealing data within another medium so it is invisible without knowing how to look. In this context, the medium is 3D geometry.

Definition · Steganography
From Greek: steganos (covered) + graphein (writing). Hiding a message within a carrier signal. Distinct from encryption — the message existence is hidden, not just its content. Classic LSB (least significant bit) encoding hides data in the low bits of pixel or vertex color values.

Three layers to hide data in 3D geometry:

TEXTURE
LSB encoding in image pixels. A building's diffuse texture carries JSON in its low bits. Visually identical. Decoded by reading pixel arrays.
VERTEX
Vertex color channel A (alpha) unused visually. Bake arbitrary float data per vertex via Geometry Nodes. Mesh.GetColors() in Unity extracts the payload.
SPATIAL
Object positions, rotation values, and tree spacing encode bit strings. The arrangement IS the message. Sacred geometry as cipher key.
The JSON Payload
What's actually encoded in the geometry.
+

The payload is a JSON object baked into the mesh before export. It can contain anything:

LORE
Historical fragments, oral histories, provenance chains attached to a real place
UNLOCK
Cryptographic keys that gate next-level content or reveal hidden areas
ROOM ID
A ROOM Place primitive ID — connects the geometry to the living knowledge graph
ARTIFACT
A hyperblog URL — the found object is the document itself

When a player "scans" the geometry in Unity, C# reads the vertex colors, reconstructs the JSON, and renders a WebView showing the hyperblog artifact. The document was always there — in the wall.

03

The Experience Layer

Real Life Side Quests
Where the game world and the physical world become the same map.
+

"Ingress but the clues are inside the geometry of the real buildings. The way trees are spaced apart. The layout of a room. The angle of a pathway between two buildings. IRL reveals the next step."

The spatial arrangement of objects in the physical world becomes the cipher. People who know how to read it see a second world overlaid on the first. This is literally what mystery traditions have always done — initiatory knowledge encoded in sacred geometry. You're making the decode layer interactive and technically verifiable.

GPS coordinates encoded in vertex data can match a player's real location. Find the building in Dunsmuir. The game recognizes you're there. The hidden layer surfaces.

DVV · Dunsmuir CA GPS matching AR overlay mystery tradition
The Full Loop
Encode → Carry → Decode → Record
+
Encode
Blender + Python. Payload baked into vertex colors or spatial arrangement.
Carry
GLB in Unity. Splat in Three.js. Physical space at DVV. QR on a real door.
Decode
C# reads mesh. JS reads geometry. Human reads the room. Hyperblog surfaces.
Record
Supabase logs discovery. ROOM attaches Event to Place. Place accumulates memory.

The place accumulates memory through play. Every discovery is a ROOM Event primitive permanently attached to the Place. Future players see who found what and when. The building becomes its own provenance chain.

The Hyperblog as Universal Artifact
One format, four entry points, same experience.
+

A hyperblog is a self-contained HTML file. It renders everywhere without dependencies. It is the artifact format that works across all contexts simultaneously:

IN UNITY
Rendered as WebView overlay when vertex payload is decoded
IN THREE.JS
HTML-in-canvas inside the web experience, same document
IN REAL LIFE
QR on a physical Dunsmuir doorway opens the same file on any phone
AS UNLOCK
The found object IS the document. The lore, the puzzle, the Supabase write on completion.

"One format. Four entry points. Same experience. The artifact is already there — in the wall, in the spacing of the trees, in the angle of the path."

04

Knowledge Graphs in Space

Dual Legibility at Scene Level
Two read modes. One Blender file.
+

A single Blender scene contains two collections that can be toggled independently:

GROUND
Walk through Dunsmuir. Buildings are buildings. Splat capture is the texture. Tourists see this.
LIFTED
Same scene. Different collection visible. Nodes float above locations. Edges connect them. Labels surface the custom property data. Researchers see this.

This is Dual Legibility Architecture applied spatially. The Matterport splat is the substrate. ROOM's four primitives are the annotation layer.

Definition · Dual Legibility Architecture
A design principle from ROOM: every artifact should be readable by both humans and machines, and at both surface and depth levels. Two audiences, two read modes, one underlying structure. Applied to space: the same geometry is navigable environment AND queryable knowledge graph.

Blender exports both layers: scene geometry + object positions for the Three.js world, custom property data as ROOM knowledge graph JSON. Cline can prompt-tag all buildings with their ROOM place IDs — keeping the knowledge graph and the world in sync.

ROOM — The Knowledge Graph Layer
Place. Event. Perspective. Artifact.
+

ROOM is a spatial memory and knowledge graph built around four ontological primitives.

Definition · ROOM
A spatial memory and knowledge graph layer for multi-agent and multi-human collaboration. Built around Place, Event, Perspective, and Artifact primitives. Won first place at the RP1 Open Metaverse Hackathon (2026) in the PLACES category. Live at room-openmetaverse.vercel.app.
PLACE
A spatial node. Corresponds to a Blender object with custom properties. Can be physical (a building) or abstract (a concept zone).
EVENT
Something that happened at a Place. A discovery in the game. A historical fact. A player action logged to Supabase.
PERSPECTIVE
A viewpoint on a Place or Event. Multiple historical readings of the same location coexist without forcing resolution.
ARTIFACT
A document, object, or hyperblog attached to a Place. The thing you find when you decode the wall.
05

Narrative Design & The Sequence Layer

Fabula vs. Syuzhet
The story that happened. The story as told.
+

Russian formalism gave us the most useful split in narrative theory. Every story has two layers that can be pulled apart and manipulated independently.

FABULA
The raw chronological events as they actually occurred. The "true" sequence. 1887 hotel built → 1923 fire → 1941 sale → 2001 restoration. This is the ground truth timeline — it exists whether anyone tells it or not.
SYUZHET
The sequence in which events are presented to the reader/player. The arrangement, the pacing, what is revealed when. The same fabula can be told in infinite syuzhets — in medias res, reverse chronology, fragmented, elliptical.

In film: Memento has the same fabula as any revenge thriller. Its syuzhet — told backwards — is the entire point. The gap between fabula and syuzhet is the experience.

"If someone knows the canonical sequence of the story, putting one scene one step out of order is no longer just an aesthetic choice — it carries information."

Definition · Sequence Steganography
Encoding data in the deviation between expected narrative order (fabula) and presented order (syuzhet). A player who knows the canonical story recognizes that scene 4 appearing where scene 3 should be is not an error — it is a signal. The displacement encodes a bit. Multiple displacements encode a payload.
Sequence as Steganographic Medium
Order deviation = hidden data channel.
+

Once a player knows the canonical fabula of a place — say, the seven historical events of the Dunsmuir hotel — the order in which they encounter those events in the game becomes a data channel.

CANONICAL
Events 1→2→3→4→5→6→7. The fabula. Every initiate knows this sequence.
DISPLACED
Player encounters 1→2→4→3→5→6→7. Event 4 before 3. That single transposition = one encoded bit.
PAYLOAD
Seven events = up to 5,040 possible orderings (7!). That's ~12 bits per scene traversal. Enough to encode a key, a coordinate, a ROOM artifact ID.
DENIABILITY
To a casual player it just feels like nonlinear storytelling. Only the initiate — who holds the fabula — knows they're reading a message.

This is a channel invisible to anyone who doesn't know the story. Knowledge of the canonical sequence is the decryption key. The story itself is the cipher.

Narrative Design in Practice
How to build stories that are also ciphers.
+

This requires intentional narrative architecture from the start. The design decisions that make a good story also determine the encoding capacity.

ESTABLISH CANON
The fabula must be knowable — taught to the player through an earlier experience, a physical document at DVV, or an introductory hyperblog. The canonical order is publicly available. The displacement is the secret.
DESIGN SCENES
Each narrative unit (a room, a location, a found hyperblog) must be self-contained enough to read in any order without breaking surface coherence. Nonlinear storytelling skill applies directly.
ENCODE ORDER
Supabase or ROOM stores the intended syuzhet per player session. The sequence of Place visits is the payload. The server knows what order to present; the deviation from canon is computed at runtime.
LAYER WITH GEO
The physical path through DVV determines scene order. The route a player walks encodes data. The map IS the message.
Multi-Layer Encoding Stack
Geometry + texture + sequence = deep cipher.
+

Each encoding layer operates independently and can be read without knowing the others exist. Together they form a deep cipher with very high information density.

Definition · Deep Cipher
A multi-layer encoding system where each layer is independently deniable and uses a different medium. Requires different keys to read different layers. A player might find the texture payload without ever discovering the sequence channel — and vice versa.
LAYER 1
Texture steganography — LSB payload in building diffuse maps. Decoded by pixel reader. Carries: ROOM place ID, hyperblog URL.
LAYER 2
Vertex color encoding — float data per vertex, invisible visually. Decoded by mesh reader. Carries: cryptographic key fragment, coordinates.
LAYER 3
Spatial arrangement — object positions and rotations encode bit strings. Decoded by knowing the geometric cipher key. Carries: unlock sequence, next location.
LAYER 4
Narrative sequence — syuzhet deviation from fabula. Decoded by knowing the canonical story. Carries: player-specific payload, proof of initiation.

A player who finds all four layers has assembled something no single layer could provide. The full picture only appears when geometry, space, and story are read simultaneously — by someone who knows how to look at all three.

"The initiated see a second world overlaid on the first. Four channels. Four keys. One world."

fabula syuzhet sequence steganography deep cipher
06

First Implementation

The Minimal Proof
The smallest slice that proves the whole system.
+

Five steps. One complete loop.

STEP 1
One Blender scene. One encoded object. Python script bakes a JSON payload (ROOM place ID + hyperblog URL) into vertex colors.
STEP 2
Three.js viewer loads the GLB, reads vertex data, decodes the payload, surfaces a hyperblog overlay.
STEP 3
One hyperblog = the artifact. Contains lore, a puzzle, a Supabase write on completion.
STEP 4
Supabase records the discovery: player, timestamp, place ID.
STEP 5
DVV is the first location. The Matterport splat is already there.

"That's a complete loop. Nothing like it exists. You could demo this at the next hackathon."

DVV · Dunsmuir Matterport splat Supabase ROOM
◆
Core Thesis

"The place carries its own knowledge. Not in a database somewhere else.
In itself."

— Keith Basso · Wisdom Sits in Places · made technical