lines
The narrator of First Light: Goura, written down.
local Lines = require("game.sound.lines")
Nine entries, one per spoken line: the words, the .soundClip they were read
into, roughly how long the read runs, and how far the mix ducks under it.
The words are the durable half. A line's audio is generated once by
game.sound.bake and cached; the TEXT lives here, ships with the world, and
is what sound.say(id) returns and what the caption draws. A line whose
generation failed, or that a muted player never hears, is still said.
The script
open and begin set the night up at the title and over the opening beat.
first_call, first_failance and first_seen fire once each, the first time
the game does that thing to you. won, lost_caught, lost_failance and
lost_light close the run, one per way it can end.
One reading voice, because audio_gen's speech operation declares text
and nothing else — there is no speaker to pick. The lines are separated by
what they say, not by a voice picker that does not exist.
API
Lines.all (the ordered list), Lines.byId(id), Lines.text(id).
Consumed by
Soundscape (which speaks them and captions them) and game.sound.bake
(which generates and caches the reads). Any slice wanting the words without
the audio reads them through FL.get("sound").text(id).
Scoped to this part · feeds back into the world's score.