Lamplighter's Round
Commits
Every published commit of this world, on every branch, newest first.
ea9749977cLamplighter's Round: playtest fixes, README and retrospective
Playtested end to end with real keyboard input and fixed what it found:
- the horse trough stood on the player spawn, wedging the lamplighter inside
a solid for the whole round; moved it down the west arm and the district
now reports any solid left standing on the spawn at build
- the follow camera sat on the stock low ring, 0.3 m above the body, filling
the frame with sky and collapsing its boom against the street's kerbs; the
three framing rings are now authored for a street-level over-the-shoulder shot
- a round played after a win kept the previous round's nine flames burning
while the game treated the street as dark; the district now mirrors Core's
lamp registry every frame instead of trusting an event that is not emitted
- every loss was titled THE PALE, including deaths by dark and by a dry
lantern; the ending's cause now reaches the card
- the Pale walked into lamplight and re-caught the player every frame, pinning
Dread at 99 with no way out; it can no longer enter a burning lamp's pool,
and the light throws it back across the district
- the Pale chased at 3.4 m/s against a 2.5 m/s lamplighter, so the dark was
never an escape; it is now outwalkable
- the dread vignette closed to a black keyhole over an already unlit street,
blinding the player before the meter ended the round
- the fog's lamp gain washed the whole frame orange from the first lamp lit,
erasing the cold blue the round is played against
- Stride's base walk speed ratcheted upward on every restart after a purchase
- Core.state.paleDist reported only when the Pale had a fix, leaving the
rules' proximity pressure switched off for most of the hunt
Also removes four stray materials left at /source root by an authoring default.57df2373dfdread: the HUD's entrance plays once, not on every refresh
The panels carry a one-shot slide-and-fade entrance. The HUD hands the
engine a new tree several times a second, and an entrance left on every one
of them restarts with each swap — a time-sampled collage caught the whole
HUD missing for a frame. The entrance is now attached to the first tree
after mount and dropped from every tree after it.d2acd5b2f4dread: a heart to hear, and a dark that stops hiding you at arm's length
The heartbeat is now audible as well as felt: a thump baked from PCM into
ui/heartbeat.soundClip the first time it is needed, fired once per cycle
through playOneShot with its volume and pitch riding the same envelope that
squeezes the vignette. Silent below a quarter of the meter, 138 bpm at the
top of it.
The Pale could not previously kill anyone. Standing in lamplight it saw you
but reaching you there only costs nerve; standing in the dark it could not
see you at all, so it never closed. The dark now hides you only beyond five
metres — inside that it has you whatever the light is doing, which is what
makes a crossing a gamble instead of a safe walk.
The upgrade rows read the rules slice's published surface rather than
guessing at it, so each one prints the number that rank buys and the exact
reason it is dim, and the cards carry a tally and a WALK IT AGAIN button
wired to Rules.restart.104203f426district: regenerated material previews and asset sidecarsc9247d24c0dread: the Pale, the HUD and the dreadveil
The HUD is two screens: a slow one carrying the lamp rail, the Dread meter,
the oil gauge, the embers and the three upgrade tracks, and a fast one
carrying the hold-to-light ring, the prompt, the Pale warning and the win
and lose cards. The upgrade rows read the rules slice's own published
surface, so each row shows the number that rank buys and the exact reason
it is dim; clicking one spends the ember through Rules.buyUpgrade.
The feel is one post pass, dreadveil, at priority 240 on the scene layer:
colour drains and cools as Dread climbs, the vignette shuts to a keyhole,
a double-thump heartbeat squeezes it at 52 to 138 bpm, and the Pale
noticing you bruises the rim red.
The Pale is a three-metre hooded figure with a cold light for a face,
hunting on the vendored stalker brain fed only by Core.lightAt: lamplight
makes you safe but visible, the dark hides you and feeds your Dread.1017579ebedistrict: nothing rests exactly on the surface under it
Every solid now sits on a footing carried 0.30 m below whatever it
stands on, the kerb moved out of the pavement's own footprint and stands
proud of the flags, and the cornice reaches down INTO the wall instead
of capping it. Two horizontal faces at the same height shimmer against
each other at a grazing angle, which is every angle a street is seen
from.77831a98b4rules: the round made playable — Dread, oil, the taper, and the Ember economy
Retunes the placeholder numbers (death in 14s standing still) into a round
worth finishing: a 32.7s clock in the dark that accelerates with a panic
ramp, so a crossing is cheap and being lost is lethal; a lantern that is
shelter rather than light and burns faster the faster you move; and relief
that lands hard the moment a lamp takes.
Hold-to-light is now an act of nerve: the taper is the engine's own
'interact' control (keyboard/pad/touch), holding it pins the body in place
at zero walk speed, and letting go makes the flame gutter back rather than
vanish. Three upgrade tracks priced 1/2/3 embers against a nine-ember
round, bought only in lamplight. Prelude, win and both losses resolve here,
and the Pale can reach you under a burning lamp but cannot have you.c45b4e07b0district: final fog balance — a lit lamp clears more of its own stretch
clearing 0.50 -> 0.68 so the pocket a burning mantle opens is a stretch
of visible street rather than a brighter patch of fog; lampGain 3.4 ->
2.9 and a colder moon so eight lamps at once no longer add up to a warm
wash over the whole district.09a2a0487fdistrict: a Victorian crossroads and the fog the gaslight lives in
Replaces the placeholder ring of boxes with a real street: two 12 m
carriageways meeting at a horse trough, kerbed pavements, 28 terraced
houses with pitched slate roofs and chimney stacks, area railings,
hoardings closing the four ends of the round, and nine wrought-iron gas
standards on the pavement.
Three procedural surfaces and one volumetric pass carry the look:
art/wet_cobbles.shader jittered Worley setts over world XZ, roughness
varying stone to stone so gaslight streaks
art/soot_brick.shader stretcher-bond brick with its windows, sills,
plinths and soot cut from world space, so the
window lattice runs along a whole terrace
art/lamp_fog.shader the fog, raymarched between the eye and the
depth buffer, gathering the lamps' light out
of the AIR — a hooded halo hanging under each
mantle, and a pocket of visibility that opens
on the stretch a lamp burns on
Nothing is baked into the scene: build() spawns all 447 parts and
registers the nine lamps through Core.registerLamp, and despawns with
the District root.f4f608396bplan: document the commit gate and scene ownershipe362d5bad3plan: keep the scene code-owned — no baked district geometryc5daea71baplan: Lamplighter's Round — Victorian fog horror RPG skeleton