Narrator
The **Konduktööri**, the tram conductor who narrates Helsinki Life. Mounted on `mount_deck` by the scene entrypoint; nothing has to attach him by hand.
Narrator
The Konduktööri, the tram conductor who narrates Helsinki Life. Mounted on
mount_deck by the scene entrypoint; nothing has to attach him by hand.
He listens to the game over the HL bus and, for every turn call, every event
card, every choice and every milestone, does two things at once: plays his
recorded line, and emits the same words as a caption.
What he answers to
phase (intro, title) · turnStart · choice · choiceMade · card ·
cardClosed · moveEnd (payday, study, graduation, the ferry) · milestone
(wedding, family) · finished · gameOver · money (going into the red) ·
beat (the wedding).
What he emits
say { line, voice, text, title?, kind, audible, durationMs, priority }
sayEnd { line }
text is the caption to print and title the card's heading when the line came
from one, so a card drawn as a heading over a body reads exactly as the clip
sounds. durationMs is how long he runs, so a caption strip can hold a line for
as long as he speaks it. kind is "event" / "career" / "home" / "line".
The words come first
audible says whether the line is also being HEARD. A line whose clip never
generated still says itself on screen, held for as long as it would have taken
to read aloud, and the missing clip is named once in the log. Nothing about the
game stops because a recording is not there.
One mouth
A line asks to be said and waits its turn. An important line (a card, a choice, the ending) cuts in on whatever is running, including on another important line, because the card it belongs to has already replaced the one on screen. Chatter (a turn call, a payday) queues behind and is dropped once it has gone stale. Dismissing a card stops him mid-sentence.
Fields
| Field | What it does |
|---|---|
volume | how loud he is, 0..1 |
gapSeconds | the silence held between two lines |
readSpeed | words per second assumed for a line with no clip |
chatter | whether the turn calls and paydays are spoken at all |
He speaks through his own non-spatial Audio source on the voice channel, so
audio.setChannelVolume("voice", x) ducks him under the music without touching
anything else.
Scoped to this part · feeds back into the world's score.