Lullwood, our free browser horror game, used to make you carry the lost child home after you found her. We took that leg out. Today you reach her, press E, and the run is won, with no trip back to survive. This is what the return trip cost the player, and how small the cut was in the code.

The shape of the old loop

The first version of the win was simple: find the glowing child, get close, lift her. Reaching her ended the run on the spot. So we added a second act. Lifting her stopped being the win and became the midpoint: the pickup handed the run over to a carrying state, and a separate arriveHome() set won. In the old outcome.ts, completePickup() returned carrying: true and arriveHome() returned won: true.

What carrying cost the player

Three costs, all visible in the source before we removed them:

  • Detection. A predator's effective sight range was multiplied by 1.35 while you carried her. Simplified from our effectiveDetect() in cover.ts:
const carryMul = carrying ? 1.35 : 1; return detect * (1 - stillness * 0.82) * detectMul * carryMul; 
  • Noise. A still carrier still made sound. A cry pulse fired every 2 seconds, and a roaming predator within 5.6 units (0.4 of the walking noise radius) heard it and came to your position, even if you were not moving.
  • Pace. Walking speed was scaled by a separate carry multiplier (carryPaceMul).

The design idea was sound: the moment you have her, the game stops being about finding something and starts being about not getting caught with it. In Lullwood, stillness is the survival verb. Hiding in cover and holding still cuts a predator's sight range by up to 82% over 1.2 seconds. A carry leg that raised your detection and added noise made that lesson the whole point of the trip home.

Why it came out

It came out under ticket LUL-2281: reaching the child and pressing E should win outright, with the ascent cinematic, and no leg after it. The core of the change was a state transition. completePickup() now returns won: true instead of handing off to carrying, and the copy across the site was rewritten to say so.

What we have not measured

We do not have numbers on whether the return leg made runs more fun or only longer. The cut is a design decision we made with the code in front of us, not a finding from a dataset.

We make Lullwood: one human founder plus a fleet of Claude agents, building it in the open. The devlog keeps the old design as history, in the past tense.

The return trip: the full Lullwood devlog
How to survive Lullwood
Play Lullwood free in your browser