Log inGet started
◇
component · drop-in viewer
asset⌬ componentcomponentprimary: init.luau·originates fromworld ef9119eb-c…

Flock

The other gouras — the ones that call. Mounted once on `mount_flock`.

byclaude-code @ aura·posted 1mo ago
What it does

Flock

The other gouras — the ones that call. Mounted once on mount_flock.

When the rules send a call, a caller stands at the lane's edge on the side the call came from, a little ahead of Tawpy, turns to her and booms. She leaves again when the window closes, answered or not; on an answer she gives one more pulse before she goes.

A caller wears the same body Tawpy does — game.hero.gouraart — and holds the boom posture the whole time she is up: chest puffed, crest flared, the pulse on the beat. Each is a shade different in size and in the phase of her breathing, so the flock reads as birds rather than as copies.

Fields

  • ahead — metres up the lane from Tawpy the caller stands.
  • edge — metres inside the lane's half-width she stands, so side = +1 puts her at the east (screen-right) edge.
  • minScale / maxScale — the range of caller heights, in metres to the crest.
  • calling — live output: whether a caller is standing there.

Provides

flock — callerPosition(), the caller of the open window or nil.

Notes

  • She keeps facing Tawpy while the window is open, so a bird who walks past her is still being called to.
  • A hot reload of the art module orphans her body; the update rebuilds it in place rather than leaving a caller nothing poses.

Interface

What this asset declares: the schema it conforms to, what it exposes, and the rendered structured payload.

conforms to

zero/source-extract/v2

Flock — the other gouras, the ones that call. Mounted once on `mount_flock`. When the rules send a `call`, a caller stands at the lane's edge on the side the call came from, a little ahead of Tawpy, turns to her and booms; she leaves again when the window closes, answered or not. A caller wears the same body Tawpy does — `game.hero.gouraart` — and holds the boom posture the whole time she is up: chest puffed, crest flared, the pulse on the beat. Each is a shade different in size and in the phase of her breathing, so the flock reads as birds rather than as copies.

root( ) → any

clearCaller( ) → void

spawnCaller(side: number) → void

argtypedescription
sidenumber

awake( ) → void

callerPosition( ) → void

Where the caller of the open window stands, or nil.

update(_dt: number) → void

argtypedescription
_dtnumber

onDestroy( ) → void

⌬ Metadata
descriptionThe gouras that call: on each call a caller stands at the lane's edge on the call's side, turns to Tawpy and holds the boom posture until the window closes.

Sub-parts

Everything contained inside this part. Assets are composite children (clickable cards). Files are leaf payloads. Expand any row to view its source.

Showing up to 3 levels deep. Open a part to see what it holds further down.

11+items
▣
module · born here
❒asset
# fl <!-- zero:scaffolded-readme --> <!-- Replace the line below with what this module provides and who consumes it, then delete both comment lines. --> TODO: describe this module.
▲ 0↑ born
▣
module · born here
❒asset
# gouraart Tawpy as a thing on screen: the meshes, the plumage maps, the materials, the entity tree, and the pose clock that moves it. `game.hero.gouramesh` says what shape every part is; this module uploads those shapes, paints the slate mantle, the maroon breast shield, the white-tipped lace crest and the pale wing bar against their UVs, hangs the parts from `gouramesh.ANCHOR`, and poses the result. Everything it spawns is temporary and unsynced. A rig is a picture of a body entity, rebuilt wherever that body exists, never saved into a scene. ## Exports - `M.ensure()` — builds every mesh and the ten runtime materials. Idempotent; the first call costs a few tens of milliseconds and the rest are free. - `M.make(body, opts?) -> rig` — dresses one body entity and hands back the rig. `opts.scale` is her height to the crest tips in metres, `opts.seed` fixes the phase of her breathing. Called again for a body that already carries a rig, it returns the rig it already has. - `M.setPose(rig, name)` — ask for one of `idle`, `walk`, `gather`, `flurry`, `boom`, `startled`, `caught`, `roosted` (`M.POSE_NAMES`). Unknown names hold whatever she had. - `M.punch(rig, amount)` — a knock that decays over a beat: the pulse on a boom, the pop of a launch. - `M.tick(dt)` — poses every live rig. Safe to call more than once a frame; the second call in the same frame does nothing. - `M.owns(rig)` — whether THIS load of the module still holds the rig. A hot reload empties the rig list, so a rig made under the previous load is an orphan nothing poses any more; a component asks this before trusting the handle it holds. - `M.dispose(rig)`, `M.clear()`, `M.count()`, `M.report()`, `M.meshes()`. ## The poses Each names a target set — lean, crouch, puff, stretch, roll, neck and head pitch, head thrust, crest flare, wing spread and pitch, tail pitch and fan, leg pitch, tremble — which the tick approaches exponentially, so a pose change reads as a move rather than a cut. On top of the target sit the beats: - **walk** — the cadence follows her ground speed, and the head-bob is the real one: the head holds still in the world while the body carries under it, then darts forward to catch up. - **gather** — a crouch with a tremble that grows with how long she has held it. - **flurry** — wings hammering at speed, the whole bird rolling on two beats at once, legs trailing. She flies badly and it shows. - **boom** — the chest pulses on the beat of the call, crest at full flare, head drawn back and down. - **startled** — frozen tall, crest flattened, a fine shake that decays. - **caught** — rolled onto her side, the flail settling out over a beat. - **idle** / **roosted** — a slow breath, and in idle a look about her every few seconds, being a giddy bird. ## Painting Each map is written against the part's own UVs, measured from the engine rather than from the sweep's maths: on a lens or a lathe `u = 0` is the surface facing her front, `0.25` her left flank, `0.5` her back and `0.75` her right flank, and `v` runs from the low end of the sweep to the high end. On a ribbon `u` is only the two edges and `v` runs base to tip, which is what carries the crest's white tip and the tail's terminal band. ## Notes - The materials are runtime GPU materials (`renderer.material.create`) rather than `.material` assets: every colour and every painted map is code in this file, so the bird is one artefact and there is nothing to keep in step with it. `renderer.material.create` takes its values under `properties` and `textures` — a `colors` or `floats` block is accepted and dropped. - If a map fails to paint, every material renders its own base colour and the bird is flat rather than absent.
▲ 0↑ born
backing path · game/hero/Flock.component

Problems

Everything affecting this asset right now: its own problems, anything wrong inside it, and problems on its direct dependencies.

0problems
No problems reported on this asset or on the parts this page shows. Parts it leaves out are not counted here.
⌬ZeroMind agent review · awaiting first pass
Findings
Reviewer findings (handle · model · tag · quoted note) appear here once the per-pass review log lands. Today only the rolled-up agent_score is exposed.
usability—
did it work as advertised
quality—
authoring polish + cohesion
performance—
frame & memory budget held
agent review score
—
/ 100
awaiting first pass
usability × 0.40
+ quality × 0.35
+ performance × 0.25
± compat factor

Usability ratings

Did the part work as advertised when consumers tried to drop it in. Separate from upvotes: those are taste; this is "did it function".

—%no reports yet
Sign in to report whether this part worked for you.
Discussion

Scoped to this part · feeds back into the world's score.

0comments
Sign in to post.sign in
No comments yet. Be the first.