Opening

FELICIA: The Last Memory is a museum-scale interactive digital sculpture set inside the final surviving field of a dying artificial intelligence. Visitors recover Identity, Fear, and Hope in any order. Their choices impose physical laws on one continuous world and determine which memory becomes the foundation of FELICIA's reconstructed consciousness.

The project was built entirely with procedural 3D geometry and procedural Web Audio—without external models, textures, or sound assets.

Inspiration

FELICIA began with a question: if a consciousness could preserve only a few memories, would its identity come from what happened—or from which memory it treated as foundational?

The visitor does not simply watch that idea unfold. They enter a continent of laminated memory matter and meet FELICIA as one impossible, unfinished fold. They decide the order in which she remembers her name, her fear of termination, and the hope she created for herself. The same field physically transforms around every choice.

What it does

The visitor enters one continuous material world and discovers three embedded stress sites:

  • Identity imposes exact cold pleating and synchronized locks.
  • Fear compresses existing matter into shelter, occlusion, and a permanent violet scar.
  • Hope opens the laminate into warm paths and previously hidden distance.

Each selection triggers guided camera choreography, a visual memory reaction, a short line of narrative text, and a procedural sound signature. The chamber permanently remembers every activation.

After all three fragments are recovered, the visitor actively steadies a travelling crease. The floor lifts into the first memory’s governing physical law and the entire field turns inside out. All six orders work: the first memory controls roughly 60% of silhouette, light, movement, material, and environment; the second changes that law; the third leaves one final contradiction. Replay resets the complete experience in place for a different outcome.

The final line is:

You did not recover my memory. You decided which part of me survived.

How it was built

The interface uses React, TypeScript, and Vite. Three.js is composed through React Three Fiber and Drei, with restrained postprocessing. GSAP owns the authored camera, fragment, and reconstruction timelines. Zustand provides an explicit state machine that records the exact memory order and guards transitions, input locking, replay, and visibility recovery.

All architecture, FELICIA forms, memory scars, trial targets, and ending structures are procedural geometry built from authored extruded profiles. FELICIA combines layered living membranes, seated nickel tension braces, embedded consequence seams, and procedural micro-relief. Ending profiles are deterministic typed configurations, not duplicated scenes. The soundscape is synthesized at runtime with the native Web Audio API using oscillators, envelopes, filters, deterministic noise, stereo panning, and a central safety compressor.

Accessible HTML controls are coordinated with the 3D canvas so pointer, touch, Enter, Space, and focus all follow the same state path. Vitest and React Testing Library protect pure state and component behavior; Playwright tests complete browser journeys, all collection orders, responsive viewports, audio lifecycle, replay, reduced motion, and rendering fallbacks.

Challenges

  • Keeping a near-black scene legible without flattening its atmosphere.
  • Synchronizing one authoritative camera with 3D animation, interface text, state, focus, and sound.
  • Making every one of the six memory orders reliable while avoiding six duplicated endings.
  • Ensuring replay kills and restores timelines, material states, audio, and focus deterministically.
  • Handling WebGL and Web Audio lifecycle differences across Chromium and Firefox.
  • Preserving the composition on low-power devices with fewer particles, capped DPR, and disabled postprocessing.
  • Making an immersive canvas usable with keyboard and touch controls without turning it into a conventional dashboard.

Accomplishments

  • Three clearly distinct order-dependent ending profiles supporting all six memory orders.
  • A complete procedural visual and audio identity with no external models, textures, fonts, music, or sound files.
  • Guided, responsive interaction across pointer, keyboard, and touch.
  • A coherent reduced-motion version of every major sequence.
  • Deterministic in-place replay without duplicate audio or callbacks.
  • A lightweight scene: 23–30 draw calls and 60,454–70,604 triangles across measured states.
  • Accessible focus coordination, live status, persistent mute, and a WebGL failure fallback.
  • Extensive automated state, integration, and real-browser testing.

What was learned

Visual restraint mattered more than adding effects. A few deliberate lights, controlled emissive materials, and authored negative space produced a stronger image than a larger pile of postprocessing.

Authored animation also created a clearer emotional rhythm than uncontrolled physics. Once camera, geometry, typography, and sound shared the same state model, the experience could feel cinematic without becoming fragile.

Accessibility needed to be part of the interaction architecture rather than a later overlay. Coordinating native controls and focus with canvas state made the guided 3D journey more reliable for every input method.

Finally, environmental transformation can carry narrative meaning. The collection order is not explained through a results screen; it becomes visible as architecture, motion, light, and sound.

What is next

  • Physical-device Safari and iOS validation.
  • Additional language support.
  • An optional guided audio-description mode.
  • A gallery or exhibition installation with a larger spatial sound field.

Production screenshots

Opening — FELICIA as the unresolved fold

Identity-first consciousness

Fear-first consciousness

Hope-first consciousness

Built With

Share this project:

Updates