# Starlight Menagerie: changelog

## 1.3.6 (2026-10-21)

- **VHS tape look.** The whole picture now plays back like a VHS recording. Each line jitters sideways a hair and the frame wobbles slowly. The bottom lines tear where the heads switch, and now and then a tracking band rolls up the frame, more often in the emergency. Colour is stored the way tape stores it: softer luma, smeared chroma that runs late, a little less saturation, lifted blacks and rolled-off whites. On top sit scanlines, tape snow and the odd white dropout streak. It is folded into the grade pass, so it adds texture reads, not a full-screen pass, and low quality takes fewer of them.
- **On-screen display.** Over the cutscenes and the end screens, the corners show PLAY, SP and a running tape counter, like a camcorder playing back. During play the HUD keeps the corners.
- **A switch.** The title screen has a Picture choice (VHS tape or Clean) and the pause menu a checkbox, and the choice is remembered. `?vhs=0` turns it off from the address bar.

## 1.3.5 (2026-10-20)

- **Heretic World in the sky.** The machine planet from Apostate Engine III is parked between the station and Samhain, on the giant's upper limb, where the crown's skylight frames it. It is powered on. The globe turns slowly under plated metal, cyan and magenta arteries and gold and cyan city lights. A power wave sweeps it pole to pole every 16 seconds, the equatorial trench glows, and the nine heart sites fire magenta beams into space beside the polar beam. Its three planet-sized gimbal rings, the orrery, turn on their own axes in dashed gold and cyan. It is drawn in the sky shader, so the skylight, the portholes and the space cutscenes all show the same world, and the extra work is only spent on the patch of sky it covers.

## 1.3.4 (2026-10-20)

- **Air in the chamber.** Fine dust drifts through the station in a box that travels with the camera, so the big volume reads as air and not as empty space. In the calm it is a faint warm glint that twinkles as the motes turn. In the emergency the dust is almost black until a light finds it: it glows orange around burning wreckage and flares, red near the beacons, and white in Seven's headlamp beam. It all runs on the GPU in one draw call, with no per-frame uploads (3,200 motes on high, 1,400 on low).
- **Harness.** `W.fx` and `W.player` are exposed for look-dev scripts.

## 1.3.3 (2026-10-20)

An art pass on the station, then a speed pass for phones.

- **Depth in the air.** The calm fog is now a height fog with a warm horizon. It sits thick along the floor and thins upward, so the crown overhead falls into dark navy instead of grey, and far buildings keep their shape and contrast instead of washing out.
- **A colour grade.** The calm gets a gentle S-curve, a little more colour, cool shadows and warm highlights. The emergency keeps its own red look.
- **Light with direction.** A stronger, warmer sun and less flat fill light. Buildings past the reach of the shadow map get long baked shadows, so the far chamber still has shade on one side.
- **The crown's shadows.** The skylight crown's ribs and rings throw long soft shadows across the floors and grounds, slanted with the light.
- **Grounds with form.** The habitats' sand, grass, snow and soil get broad tonal drifts and a fine mottle. The savanna gets wind ripples and dune troughs, the lawns get worn patches, and the snow glitters.
- **Phones.** The floor shaders use a cheaper 2D noise everywhere and drop their fine layers on low quality. Low quality redraws the sun's shadow map every other frame. Once the emergency has put the sun out, nobody redraws it at all, which saves about 40% of draw calls in the breakout. The fog's world-space maths moved from every pixel to every vertex.
- **Cache.** The build number is bumped, so browsers fetch the new files.
- **Look-dev tool.** `tools/look.mjs` renders a fixed set of views at either quality and prints draw calls, triangles and shader programs for each.

## 1.3.2 (2026-10-16)

- **No more station hum.** The ambient loop that played everywhere was a 60 Hz hum with a layer of hiss on top, and it sounded like static. It is gone. Each habitat's own ambience now plays at full level inside and fades out over 45 m along the walks, so the paths carry the sound of whichever biomes are near. The Ombra Savanna gets grassland insects. The concourse, the pod bay and the indoor halls without a biome sound are quiet apart from their animals and the music.

## 1.3.1 (2026-10-16)

The zoo gets a guidebook.

- **A guide on the site.** The GameLab page now leads to a trailer, a gallery of every species from three angles, an encyclopedia, and a clickable map of the station (`gamelab/starlight-menagerie/`).
- **Portrait tool.** `tools/portraits.mjs` photographs every species in its habitat. It picks the animal and the facing that the camera sees most clearly, using a rendered visibility test, and clears props, grass and other animals out of the line of sight. Then it shoots a three-quarter view, a profile and the face.
- **Map tool.** `tools/maprender.mjs` draws the whole chamber from straight above, with the hull and the glass crown hidden, so the image lines up with the layout's metres.
- **Harness hooks.** `W.cull(camera)` runs the culling and the levels of detail for any camera without drawing, and `W.cullSets` lists every culled instance set.
- **Spider hair.** The hull spiders' hair is warmer and darker, so it no longer reads white under the headlamp.

## 1.3.0 (2026-10-15)

Something lives on the hull.

- **Hull spiders.** Giant spiders, modelled and rigged in Blender (`blender/spider/build_spider.py`): eight eyes, chelicerae with curved fangs, pedipalps, a banded and chevroned body, eight legs of four rigid segments on 43 bones. They lurk high on the chamber wall and on the tall buildings' walls, come down on silk lines, hunt, rear up, bite and back off, and climb home again.
- **Procedural legs.** Every leg is solved with inverse kinematics each frame in the spider's own frame, so one alternating gait walks the deck, the hull and the walls, with cadence and stride from speed and turning.
- **Billboard hair.** Thousands of camera-facing hair cards grown from the body at start-up and skinned to the same bones, with a translucent sheen so a flare behind a spider gives it a halo.
- **Red eyes.** Emissive eye meshes plus one glow-sprite cloud for every spider, bright enough to read through the breakout's fog.
- **Fire is the answer.** Seven gets flares (three to start; Q, T, the X button or the new flare button). Strike one to hold it up and keep spiders back; press again to throw it, and it keeps burning where it lands. Burning barrels from the meteor strikes are safe spots along the paths. Fifteen red flare lockers hold two flares each in the breakout. The stun gun only makes a spider flinch.
- **In the calm** the spiders stay up and watch, and a couple of times one drops down for a look and goes back up.
- **A shift clock.** The rounds now run on a five-minute countdown; when it runs out, the meteors hit. Logging all twelve habitats first brings the night on early.
- **Sound.** The insect and rain beds were a wall of 3 to 8 kHz hiss; they were re-cut with a notch and a high shelf, and every bed is now matched by measured loudness (EBU R128) rather than RMS. The reverb tail darkens as it decays instead of hissing like white noise. A gentle shelf and a limiter sit on the master, far sounds lose their top end with distance, and the PA's burst of radio static is now a soft two-note chime. New sounds from the library for the spiders and the flares.
- **Less pop-in.** Instanced props, clutter, animals and spiders dissolve out over the last stretch of their draw distance through a 4x4 ordered dither instead of vanishing, and the habitats and hull sectors cross-dissolve between their detailed and far models. Full quality draws everything further, casts shadows further out, and roughens far surfaces so their highlights stop shimmering.
- **Not plastic.** Animals, foliage, grass and the natural clutter get a subsurface lighting model: wrapped diffuse light, a warm (or green-gold) scatter at the terminator, light through thin parts from behind, and a velvet sheen at the silhouette, with less mirror-like reflection.

### Fixed

- The flat stones in the savanna and the highlands sampled a dark red patch of the nature atlas and read as black-and-red boxes.
- The shield and power bars could overlap a long objective panel.
- Six stretches of path (and so the breakout's amber route) ran straight through walls and barriers: through the koi pond in the garden, through the Umbra Vault, across the dune dome and the gorilla gorge, and over two corners of the savanna moat. The path now walks round the pond, the vault, the dome, the gorge and the moat; every stretch was checked against the colliders at Seven's width.
- On small landscape phones the compass stretched into a tall oval over the announcements.
- Found by an autopilot playthrough (`tools/playthrough.mjs`): it plays the whole game from the intro to the island, scanning placards, striking and throwing flares, stunning what gets close and routing to the pod, and records it frame by frame.

## 1.2.0 (2026-10-15)

The station looks lived in.

- **Clutter kit.** About forty new pieces modelled in Blender, from toolboxes, barrels, cones and hose coils to grass tufts, leaf litter, bones, ice shards, wax comb and a termite mound.
- **Biome generators.** Every enclosure is dressed for its home world's ground: grass and fallen branches on the green worlds, pebbles and bleached bones on the deserts, ice on Glacia, shells in the tanks, mushrooms in the dark, feathers in the aviary and wax in the insect pavilion.
- **Station mess.** Tufts and worn patches on the lawns, litter and stains along the paths, bins and wet-floor signs at the junctions, tools and spools along the wall foot, and the dock and pod bay piled with cargo, oil and tyre marks.
- **Wreckage.** When the barriers fail, broken glass, rubble, fallen plates and scorch marks appear.
- **Cost.** Instanced and culled per 24 m cell with draw distances by size, and thinner on low quality. About 11,000 pieces on low and 24,000 on high, for a handful of extra draw calls.

## 1.1.0 (2026-10-15)

A detailing pass, new surfaces and new light.

- **Station detail, modelled in Blender.** Every hull sector's near level now has I-beam ribs with downpipes, a three-pipe bundle on brackets, hoses between the brackets and down to floor sockets, a cable tray with cables, a catwalk with railings, braces and ladders, vent grilles, junction boxes, maintenance doors with keypads, framed portholes, vault purlins with a ring of lamps, a hazard-striped plinth and a drain grate along the wall foot.
- **Buildings.** Pipe runs under the eaves on brackets, downpipes, vent boxes, rooftop air handlers with fans, an air duct inside the halls, and pipes along the inner walls.
- **Dock and Pod Bay C.** Roof trusses, cable trays, hanging hoses, cargo crates and pallets, hoses from the airlocks to floor sockets, fuel tanks, hazard frames round the cradles, and fuel and power umbilicals from a wall gantry to each pod.
- **Textures.** `tools/make_textures.py` paints three tiling sets with numpy (fittings plating, large hull plating, deck plating), each with colour, normals, and packed occlusion, roughness and metalness. The Blender scripts now write UVs in metres, packed to 16 bits.
- **Surface shading.** Walls gather soot near the floor, a contact shade, broad tone variation and the wash of their strip lamps; the vault darkens as it climbs. Hazard stripes are drawn in world space.
- **Light.** An environment map of the chamber gives metal its reflections, with a red-lit copy for the breakout. The nearest lamp posts now light the ground warm in the calm. A light map painted at start-up adds lamp pools and wall shade to the deck. The ambient fill is lower, so the lamps do more of the work.
- **One draw call for painted fittings.** Pipes, hoses, rails, brackets and trims share one material with per-vertex colour.

### Mobile

- Low quality loads half-size textures, shortens the level-of-detail distances, and skips the hull's shadow pass.
- The game pauses and the sound suspends when the page goes to the background; the next touch wakes the audio (iOS can leave it suspended or interrupted).
- Rotation and browser bars: the view settles its size again after an orientation change or a visual viewport resize.
- The full-screen button hides where the browser has no full-screen API (iPhone Safari).
- A lost graphics context now shows a reload button instead of a frozen frame.
- In short landscape screens, announcements sit at the top under the compass instead of over Seven.
- Dialogs use dynamic viewport height, and text no longer inflates in landscape.

## 1.0.0 (2026-10-15)

First release.

- A walkable zoo station in one chamber the size of Omaha's Henry Doorly Zoo, with 12 habitats to log, a concourse, a koi garden and a pod bay, each placed after its Omaha counterpart.
- 53 animal species remodelled in Blender for 12 home planets, with retinted textures, planet growths and glowing eyes.
- The station modelled in Blender in parts: eight hull sectors and every habitat with two levels of detail, floor quadrants, an instanced prop kit, the exterior, the pod and the island.
- 93 sounds from the SFX library and the asset packs, inspected and ported to MP3, plus three synthesized music cues.
- Island V5's loader recipe with a full manifest, cache-busting and a shader warm-up pass for every scene.
- Explore mode: scan placards to fill the logbook.
- Breakout mode: emergency lights, falling debris, jump scares, an amber route to Pod Bay C, a hull timer, a stun gun that costs power and a shield that repairs from power.
- Cut scenes for the intro, the breakout, the game over and the escape to an island on Lumen.
- Keyboard and mouse, gamepad and touch controls, with portrait and landscape layouts.

### Fixed before release

- The giraffe and zebra played their clips on the wrong rest pose. The giraffe now uses its correctly bound spotted mesh, and the zebra's clips are retargeted from its animation rig.
- The island sea crashed the renderer because its shader asked for fog without fog uniforms.
- The headlamp stayed lit after a game over.
- The emergency grade and bloom washed out the island ending.
- In portrait, the camera sat too close to Seven, and the PA covered him.
- The jungle hall's back wall is rock, not foliage.
