Floor
The forest floor of *First Light: Goura* — the place the run crosses. Mounted once, on `mount_floor`.
Floor
The forest floor of First Light: Goura — the place the run crosses. Mounted
once, on mount_floor.
It lays out 120 metres of New Guinea rainforest floor as a lane along world -Z
and builds every piece of it at runtime, under one root entity (floor_root)
it owns and despawns.
What it builds
| Piece | What it is |
|---|---|
| ground | eleven chunks of grid displaced by a height field, painted per-vertex: darker in the cover pools, warmer down the worn trail, buried in shadow where it is low. The lane lies in a shallow hollow; the floor climbs away to the sides and, past the roost, into the ridge the flock's calls come down from. |
| gate trunks | sparse buttressed trunks close in on alternating sides, entering frame at its edges as she passes |
| trunk ranks | the forest behind them, in three bands per side, standing only outside a funnel that opens toward the roost — an evenly dense rainforest is a wall at twenty metres and the destination would never be seen |
| canopy | masses of foliage the trunks disappear into, with a corridor of open sky left over the lane. This is why the floor is dark and why the first light arrives down one strip of sky. |
| cover pools | a fallen log, a buttress root arch, or a bank of fern beds — with the floor darkened under it, moss on the rise beside it, and litter drifted against it |
| undergrowth | ferns, saplings, moss and litter on the banks, pushed out of the lane so it stays walkable |
| lane drift | leaf fall down the lane itself, which is the floor she actually crosses |
| the roost tree | a 62 m buttressed trunk, ten root arches, nine limbs carrying a crown of sixty-four foliage masses between 34 and 66 metres up |
What it publishes
FL.provide("cover", { spots }) — { x, z, r } per pool. The pools are the
positions the objects were placed at, so what the eagle reads and what the
player sees are one thing. The dawn slice shrinks them as the light rises.
The crown's gold
The roost crown catches the first light before the floor does. Each of the 64
crown masses carries its own exposure — how open it is to a low sun from
screen-right and from above — and the component writes colour and strength into
instance-data lane 2 as dawn.light() rises. fl_frond and fl_surface
both read that lane as emissive, so one material serves every mass and each
catches the light at its own strength. Nothing else in the scene is touched.
How it is built
Geometry comes from game.floor.flora as a small set of PROTOTYPE meshes, each
worn by many entities. What keeps two copies of one trunk from being the same
trunk is that fl_surface and fl_frond read their noise in WORLD space: the
same mesh standing somewhere else shades differently, for free.
Everything is spawned temporary = true under floor_root, the root is
re-derived from the world every frame (an edit/play flip can restore the
component without the entities it built), and the prototype GPU meshes are
released on rebuild and on destroy.
Fields
| Field | Default | Means |
|---|---|---|
coverSpacing | 9.0 | metres along the lane between cover pools |
coverRadius | 2.8 | metres a cover pool reaches in the dark |
trunkSpacing | 7.0 | metres between the rows of trunks closing the lane's sides |
density | 1.0 | multiplier on how much scattered undergrowth is placed |
goldStrength | 1.35 | how brightly the roost crown catches the first light |
Materials
mat_ground, mat_bark, mat_deadwood, mat_moss on fl_surface;
mat_fern, mat_litter, mat_canopy on fl_frond. All seven live beside
this component.
Scoped to this part · feeds back into the world's score.