I wanted to build a world worth walking through slowly.
A place where a long bridge could prepare you for a room, where a narrow passage could make the next ceiling feel impossibly high, and where staying still might be the most interesting thing to do.
That became Vesper: eighteen places of light, weather and memory, connected by real architecture in Three.js. Two walking loops meet at a plaza. You can follow the journey, leave it, turn around and come back through the same doorway.
The rooms need each other
The eastern loop begins at dusk. A bridge leads toward a monumental dome. Inside Rain Oculus, a circular opening lets weather into a coffered room. The building gives the light its shape: a small piece of sky becomes a visible shaft against a much larger volume of shadow.
Then the route contracts. A passage brings you into Cathedral of Color, where ribs, columns and stained glass pull your attention upward. From there it moves through Red Thread, an indoor sun, a concrete sanctuary, a field of lights over dark water and a court facing the dawn.
I wanted the emotional rhythm to come from those changes in scale and atmosphere. The quiet room matters more after the golden hall. A doorway matters more when the room beyond it has a different kind of light.

The western loop takes a longer route through daylight and into another night: pendulums, a glasshouse, an archive, dunes, a foundry, ice, tide, storm, an inverted forest and an aurora. These spaces have different materials and different tempos, but the passages keep them part of one walk.
The sky follows an authored time of day for each place. Entering another room can gradually move the world toward night or dawn. That is part of the journey's pacing, rather than a simulation of a geographically consistent sun.

Build the architecture before the atmosphere
The most useful art-direction rule was to work from silhouette, to architectural relief, to surface detail.
The silhouette should identify a dome, a nave or a glasshouse before any effect is switched on. Then the surfaces need depth: coffers, ribs, column bases, capitals, cornices, door reveals and steps. Material detail comes after those decisions.
A normal map can help stone catch the light. It cannot give a flat doorway the spatial weight of a deep opening. Fog can reveal distance, but it cannot supply the missing architecture behind it.

The references are credited as inspirations inside the experience. Rain Oculus interprets the Pantheon; Cathedral of Color draws on Sainte-Chapelle and Sagrada Família. Red Thread is an homage to Chiharu Shiota's installations around memory and connection. These are authored interpretations, with different dimensions and constraints, rather than scans or exact reconstructions.
Generated imagery supplies details such as glass designs, reliefs and memory objects, alongside documented CC0 material sources. The rooms themselves remain geometry. You can change your position and look behind a column because there is a column there.

Give the visitor one meaningful action
Each place has a focused interaction. In Rain Oculus, you can wait for the weather to change. In the Hall of Pendulums, an escapement draws drifting motions toward synchronization. At the archive's desk, letting a letter go begins its release. In the inverted forest, touching an old root wakes a sequence of light.
These actions belong to the spaces around them. I did not want the interface to carry the experience through a long list of tasks. A visitor should be able to notice something, approach it, act and watch the consequence.
The world keeps a visitor's progress, and the interface offers a way back into the journey. There is also an atlas and a guided passage for someone who wants to look without steering every step. Manual movement remains available, so the guided route does not define every possible visit.

Make the rooms agree on their doorways
I built the project with coding agents, with Fable 5.2 coordinating architecture and integration and Opus 5.5 workers handling independent parts of the world. That made shared contracts particularly important. A room could be beautiful in isolation and still fail the project if its door did not meet the next passage.
A typed world manifest describes placements, footprints, entrances, exits and reserved connections. Each chamber module supplies its geometry, navigation, atmosphere, lights and behavior. The validator checks that paired doors agree in position, size and facing, that footprints do not overlap, and that every zone is reachable from the start.
Eighteen chambers and eighteen connecting zones make thirty-six zones for the engine to manage. Walking audits exercise the route as well as the individual spaces. The guided camera and collision audit share path-building logic, helping keep the authored journey connected to the geometry a visitor can traverse.
There is also a reviewed extension mechanism. A new room can attach to a reserved doorway through validated data and an already-shipped module. It gives the world somewhere to grow without requiring an engine rewrite. New rooms are authored and reviewed; the current experience does not generate itself while people visit.
Light has a frame budget
Vesper uses Three.js's WebGL2 renderer. A local backend comparison on the development Mac informed that choice, alongside the existing GLSL materials and post-processing. The project keeps one rendering path.
Its indirect-light cues are approximations: authored ambient probes, reflection probes, screen-space ambient occlusion and mostly static shadow maps. Those tools can ground a column or give polished stone something to reflect, but they do not amount to dynamic global illumination.

Performance work became part of making the world feel continuous. Streaming a room is not enough if its first visible frame freezes while the graphics driver prepares a shader pipeline. Linking programs ahead of time also did not remove every first-draw stall on the development machine.
The work therefore included sliced construction, shader warm-up draws, bounded preparation work and reflection captures spread across frames. Repeated architecture uses instancing or merged geometry, while quality tiers and render-scale controls limit the cost of effects.
Those are implementation steps, not a guarantee of smooth performance everywhere. The November 11 deployment handoff records a passing build and 338 passing tests, with 89 skipped. It explicitly leaves full GPU acceptance and a freeze-free claim open. A successful recording and a collection of screenshots cannot settle those questions for every device or route.
Leave room to wander
The current experience is single-player. There is no proximity chat, autonomous world expansion or generation running in a visitor's browser. Some rooms and interactions still need visual review, and performance remains a continuing part of the work.
The visitor controls are simple: WASD or arrows to move, mouse or drag to look, E to interact, G for guided passage and M for the atlas. Settings include quality, sensitivity, reduced motion, effect intensity and audio controls. Application sound starts after entry; the music in the film is a separate presentation of the recorded journey.

What I want to keep exploring is how much a connected place can communicate before anyone explains it. The height of a room, the time spent crossing it, a change in temperature suggested by the light, the small action you leave behind.
Vesper gives those ideas a world I can keep working on. The next room has to earn its place in the walk.


