A garden that grows while you sleep: time in Lantern Valley
· 3 min read · game-dev, game-design, cozy-game, three.js
Fishing was a verb that happens in a moment: you cast, you wait, you pull. Farming is the opposite. A seed is planted now and gives something much later, and a game has to answer a question that fishing never asked: what happens to the garden when I am not looking?
In Lantern Valley the answer is that it grows. And that has a surprising effect on the design of the clock.

How you play it #
Mrs. Wheat lends you a watering can and six wheat seeds. The garden is in the yard of the Golden Mill: four beds of two by three, 24 holes. When you get near a hole, the prompt changes by itself:
- Plant Wheat, if the hole is empty and you have a seed,
- Water, if the plant is dry and you have the can,
- Harvest Wheat, if it is ripe,
- nothing, if it is damp and still growing.
Tab switches the kind of seed. Watering is a wave: it wets the hole and its neighbors in a cross, so a bed takes a few waterings, not twenty-four.
Sleeping is the fast-forward #
Sit on a bench and sleep, "until dusk" or "until morning", and the garden grows while the screen is black. When the light returns, the camera visits the garden and the plants wake up one by one, each with its own note, a pentatonic scale in G, and the ripe ones ring a bell. A ripe plant glows with golden sparks.
Harvesting gives two crops per plant, one more if it was watered with care and one more by surprise 15% of the time. It also gives one seed back, so nothing runs out. The notes of the harvest rise with each plant in a row.
At the mill, three wheat make one flour, and the blades spin faster while it is grinding.
The design is in the clock #
A day in the valley lasts 9 real minutes, so one game hour is 22.5 seconds. Each crop has a time in game hours with damp soil:
| Crop | Hours | Watered in the afternoon, ripe... |
|---|---|---|
| Carrot | 10 | at dusk or the next morning |
| Wheat | 16 | the next morning, which is what a night on a bench shows |
| Honey flower | 24 | after one day and one night |
| Pumpkin | 40 | about two nights |
Wheat, the first crop, is ready the next morning, which is exactly what a night on a bench shows. The garden teaches its loop through the clock: water, sleep, come back.
The garden's rule is one function: advanceTo(total) moves everything forward to a given instant of the game clock, in segments that end at each dawn. The same code serves the game minutes that pass while you play and the hours that are skipped when you sleep. Time never goes backward, so a debug jump does not make things grow twice, and the first look at the clock does not grow anything, which is what happens when an old save is loaded.
Nothing dies, nothing rots #
Dry soil only grows at half speed, and the soil dries again at every dawn, at 6 o'clock in game time. So whoever waters every day harvests one more. There is no way to ruin a garden: without the can or a seed, the prompt simply does not appear.
The part of the design that I like most is a small one. Planting and watering are two goals of the same quest step, in any order, and there is no way to block it. Harvesting and grinding are asked as "you have this many", so harvesting a plant early, or grinding the flour before that step, still counts.
The garden is saved with the game, in the same place as everything else, and an old save without a garden loads with an empty one.
What is not there yet #
I wrote down what is missing: a real accelerated-time sleep, with the clock running and the light changing instead of a jump in the dark, rain that waters by itself, seasons and bees on the honey flowers, which depend on weather and fauna that arrive later in the game.
You can try it at lanternvalley.vercel.app.
Related projects
- Lantern Valley — Cozy adventure game for the browser