backdrop
Everything behind and around the play plane: the depth of Ashcross, the light in it, and the air.
Backdrop — NINE BELLS
Everything behind and around the play plane: the depth of Ashcross, the light in it, and the air.
What it builds
start() dresses BackdropRoot with six parallax bands, three weather fields
and a painted light for every rung of the district. Everything it spawns is
named bd_* under that root, and re-running start() clears the previous run
first, so a hot reload never stacks two districts on top of each other.
The bands
Each band is ONE quad locked to the camera, filling the portrait frame, with an
infinite procedural district inside its material. The Backdrop component
writes scroll_x / scroll_y on that material every frame at the band's own
fraction of the camera's travel — the camera is orthographic, so depth by
itself moves nothing. Nothing recycles because nothing ends.
| z | material | parallax | what it is |
|---|---|---|---|
| -56 | art.backdrops.sky | 0.03 | the void: graded fog, drifting banks, a low burn |
| -34 | art.backdrops.band_far | 0.14 | three ranks of rooftops and gothic towers |
| -26 | art.weather.haze_far | 0.20 | aerial perspective between far and mid |
| -18 | art.backdrops.band_mid | 0.42 | the far side of the street, deep in fog |
| -12 | art.weather.haze_band | 0.52 | aerial perspective again, closer and thinner |
| -7 | art.backdrops.band_near | 0.72 | the wall immediately behind the play plane |
| +6 | art.backdrops.band_fore | 1.24 | scaffold, chain and sheets, in FRONT of the doctor |
Alleys are what give the stack its depth: a hashed fraction of bays in each house band is a gap rather than a house, filled with lit fog, and the band behind shows through it.
The light
Every light in Nine Bells is painted — an additive quad over the picture, never
a Light component, because the sprites are unlit and a scene light would do
nothing to them. Lanterns and window shafts ride the near band; braziers, their
ground pools and their smoke stand in the street. Lit windows are drawn inside
the house bands themselves.
The air
Ash falls through the whole depth, rain crosses in front of the street, embers rise off the fires, miasma lies in the street at the levels the district pools it, and smoke leans off the roofs.
Events it answers
bell (the air thickens and the light drops, once per toll) · puff (a green
censer bloom) · brazier (a flare) · patient.treated (a lantern that swells,
and one that stays) · infected.treated · hurt · gate.reached · phase.
Reachable from other slices
NB.ext.backdrop.lightAt(kind, x, y, size?) paints a light of a named kind —
"lantern", "brazier", "censer", "shaft" or "pool" — at a district
point. NB.ext.backdrop.puffAt(x, y) throws a censer bloom that dies on its
own.
Design
See /zero/source/design/spec.md, slice E.
Scoped to this part · feeds back into the world's score.