At its core, Ocean of Memories is a deeply personal interpretation of psychological defense mechanisms. The narrative stems from a four-year period during my childhood where I experienced severe social exclusion and isolation. Years later, when tasked with developing the concept for my MFA thesis project, my immediate instinct was to return to those formative years and extract a specific event to anchor the story.
However, as I attempted to map out the narrative, I discovered a profound mental block: I could barely recall any specific details from that era. My subconscious had manifested a "black hole" in my memory—repressing the trauma as a survival mechanism to allow me to turn over a new leaf and rebuild my self-confidence in adult life.
This personal realization became the absolute bedrock of the project. While the script underwent ten major revisions to reach its final structure, the psychological pillars remained untouched. The thematic core of the experience—total amnesia, suppressed trauma, haunting flashbacks, and the ultimate pursuit of a clean slate—directly drives every technical and artistic decision in the project, transforming my personal story into a universally relatable interactive VR journey.
Most First-Person VR experiences treat the player as an external observer stepping into another identity. In Ocean of Memories, I chose VR because the medium’s inherent disorientation perfectly mirrors the protagonist's narrative arc. When the player puts on the headset, they enter the story knowing absolutely nothing about the world or the past—matching Thomas’s exact state of total amnesia. As Thomas wakes up and physically learns to reconnect with and control his body, the player is simultaneously adapting to the VR mechanics. This synchronization of narrative perspective and physical input creates an immediate, unbroken cognitive link between player and protagonist from the very first frame.
To construct the environment for the nature reserve scene, I used an interconnected world-building pipeline starting from concept design to procedural execution. I began by creating a fictional map for the reserve to serve as an in-game brochure asset. To maintain absolute spatial consistency within this specific environment, I then translated this graphic layout into Adobe Photoshop, generating a curated 16-bit grayscale heightmap based on the fictional landscape's boundaries.
This heightmap served as the foundational node within Gaea's node-based framework. I applied advanced geological operations, routing the custom map through procedural Erosion, Thermal breakdown, and Slope filters to generate realistic cliffs, natural sediment accumulation, and organic valley flows. The finalized high-resolution heightmap and accompanying splatmaps were then imported into Unity's Terrain system, serving as the performant canvas for this major narrative segment.
Populating a vast environment with hundreds of assets manually is inefficient and prone to human error. To optimize the production environment pipeline, I developed a custom Unity Editor window extension (GravePainterEditor) to procedurally paint and layout grid-based assets onto the scene's terrain in real-time.
The tool utilizes Raycasting within the scene view to cast a position preview, locking the matrix boundary upon interaction. The system loops through an adjustable row/column array, dynamically calculating local height-offsets via terrain.SampleHeight and mathematically aligning each object's up-vector with the surface topology using terrainData.GetInterpolatedNormal. To break visual repetition across the large scenery, I integrated a weighted randomization algorithm that swaps base assets with unique prefab variants based on a user-defined probability percentage. The entire generation is baked into Unity's Undo architecture, allowing non-destructive iteration during world-building.
To establish a full-body presence, I integrated a comprehensive VRIK rig inside Unity using foundational tracking architecture from Valem Tutorials. While the baseline setup provided core headset and controller tracking, I independently designed and implemented a hybrid animation system to handle character locomotion. Relying on my own technical understanding, I utilized Unity's Animation Controller to isolate skeletal animations strictly to the lower body (legs), leaving the upper body and hands fully bound to the user's live VR inputs. I developed a custom script that listens for movement events driven by the Meta Quest left joystick; traversing the environment triggers a smooth blending of walking animations, which seamlessly halts when input ceases.
Furthermore, I modified the baseline IK target-following scripts to better suit my character pipeline and integrated an external arm-stretching mathematical script to bridge the visual discrepancy between the user's real-world arm reach and the VR asset's structural limits. While the medium of full-body VR IK naturally introduces an inherent, uncanny "puppet effect", I learned that players ultimately adapt to and accept it, knowledge that allowed me to keep developing the experience with confidence.
Delivering a feature-length, continuous VR narrative without traditional cinematic cuts required a robust and independent audio framework. Because the standard FBX format does not preserve embedded audio data, importing pre-synced character animations from Autodesk Maya into Unity wasn’t an option. The entire structural synchronization of dialogue, motion capture data, and facial blendshapes had to be constructed from scratch within Unity's Timeline.
Without a physical camera or a synchronized digital marker between the separate audio recordings and the skeletal data during the live mocap sessions, traditional slating fell short. To bridge this production gap, I took a hands-on approach and refined the timing frame-by-frame—manually aligning every dialogue track with the characters' mouth shapes and body movements entirely by ear and visual lip-reading. This post-mortem workflow takeaway highlighted the necessity of a physical performer clap during capture to act as a digital sync point for future pipelines.
To keep the 50-minute continuous experience seamless and immersive, I detached the musical score from this main chronological timeline, routing it instead through FMOD. This architecture allowed the cinematic soundtrack to adapt dynamically, shifting its intensity and arrangement based on the player’s interactive progress and spatial exploration without ever interrupting the narrative flow. Furthermore, solving performance bottlenecks late in development highlighted the importance of runtime audio optimization, where proper file compression and encoding protocols drastically reduced memory layout overhead and improved FPS stability