Talk
Branching conversations, generated at build time: no runtime model, no connection needed.
Why this works
They are not here to teach improvisation. They are here to make the predictable situations automatic, so that when a conversation goes somewhere unplanned you still have attention left to spend on it.
Every reply is marked for register, and at least one on every turn is a trap.