Hong Kong folk horror
Ancestral halls, joss sticks, talismans, laundry-strung alleys and Lingnan village houses — a culture of fear players have rarely explored, grounded in real local belief.
A third-person folk-horror game set in a rain-soaked Hong Kong village, where exploration, ritual and reflected moonlight become the player’s means of survival.
Design pillars
Ancestral halls, joss sticks, talismans, laundry-strung alleys and Lingnan village houses — a culture of fear players have rarely explored, grounded in real local belief.
Sophie cannot shoot her way out. She can only strike from inside moonlight, so every encounter becomes a question of positioning, not aim.
Every ghost attack has a tell, one committed strike and real recovery time. Tension comes from pressure and pacing, never from cheap chain damage.
Rain, fog, practical lights and wet surfaces build tension while preserving the silhouettes and navigation cues needed for fair play.
Project gallery
Environment, atmosphere and encounter imagery selected from the same set shown on the projects page. Open any image to view it at a larger size.
Selected gameplay
A selected excerpt from the current Unity build. The public showcase is intentionally limited to keep encounters and story beats unspoiled.
Mechanics in brief
The current slice combines positioning, timing and readable enemy states. These selected development captures explain the player loop and the systems underneath it.

Raise the Bagua mirror inside a shaft of moonlight, hold aim to build focus, then release the reflected light. A well-timed reflect interrupts an incoming attack and rewards accuracy without turning the encounter into a shooter.
Implementation
Aiming owns the character-facing state while focus, moonlight validity and reserve are evaluated separately. The HUD mirrors those states so failed shots always have a readable cause.

Some committed ghost attacks can become a short grab. Repeated input breaks the hold; success creates room to escape, while failure resolves damage once and still returns control cleanly.
Implementation
The struggle is a bounded combat state with explicit input ownership, a single damage-resolution gate, repel or stun feedback and a short post-hit protection window.

Ghosts patrol, investigate and attack, but do not follow forever. They give up beyond their encounter space, return toward their origin and can resume wandering or re-engage when the player comes back.
Implementation
A spawn-anchored state machine separates pursuit, attack recovery, return and wander. Leash and re-engagement bands prevent oscillation and keep the threat inside authored spaces.
Character & world direction
The public artwork focuses on period architecture, weather, material studies and the protagonist’s production pipeline. Narrative characters and unreleased locations remain private.



A grounded modern protagonist developed through concept iteration, image-to-3D studies, cleanup, humanoid rigging and in-engine animation tests.



Technical production
The rendering work is treated as an engineering migration rather than a visual preset swap. It covers lighting data, custom shaders, physical exposure, fog, reflections and performance budgets.

Rain streaks, reflected practical light and a controlled flashlight cone keep the bridge readable while preserving the low-key night exposure.

Scene-level navigation diagnostics make agent paths, walls and avoidance visible while encounter anchors keep pursuit inside the intended play space.

The HDRP pass is reviewed in gameplay framing so exposure, shadow priority, foliage readability and local fog are judged together rather than as isolated effects.
The project began in URP Forward+ and now maintains an HDRP vertical slice. The migration replaces URP-specific renderer features and shaders with HDRP-native lighting, fog, reflection and material workflows.
Adaptive Probe Volumes provide spatially coherent ambient light across interiors, wet lanes and open village areas. Lighting scenarios and probe blending support atmosphere changes without flattening the night scene.
The URP prototype used an SSGI package with ambient-light override. The HDRP path moves this to native Screen Space Global Illumination for more stable indirect light and simpler rendering maintenance.
The URP build used a custom fullscreen fog pass and mesh light cones. HDRP uses native Volumetric Fog and Local Volumetric Fog for mist, moonlight shafts and room-scale density control.
A custom village wet-surface shader exposes global wetness controls, so rain, puddles and reflections respond consistently across stone, wood and roof materials.
Practical lights are tiered by importance: key lights cast shadows while supporting lights shape colour and depth without entering the shadow atlas. Physical light units and exposure are retuned for HDRP.
State-driven encounters, bounded attack resolution, area ownership and camera hand-off keep combat readable while allowing the presentation layer to change independently.
Editor bake and validation tools assemble the village, manage scene positions and catch broken references before Play Mode; an asset indexer links visual references back to design documents.
Private review
Detailed gameplay systems, story material and milestone planning are available for studios, collaborators and publishers on request.