What we’re trying to do
Our NPC dialogue uses a typewriter effect: the line appears letter by letter while a voice mumbles. It’s a common horror and RPG pattern. We also want the game fully localized.
The problem
As far as we can tell, the two don’t work together in Verse today:
- A typewriter needs a
string, so we can slice it (first N characters, growing over time). - Localized text is a
message, and amessagecan’t be sliced, measured or partly shown. Localize(message)returns a string, but it runs server-side and doesn’t resolve to each player’s own language.
So creators have to choose between a typewriter effect and translated dialogue. We had to ship our dialogue English-only to keep the effect.
What would solve it (any one of these)
- Per-player localization:
Localize(Message:message, Agent:agent):string, returning the text in that player’s client language, so it can be sliced like any string. - A reveal property on
text_block: e.g.SetVisibleCharacterCount(Count:int)orSetRevealFraction(F:float), applied client-side after localization. This is the cleanest option, because the engine handles every language, including right-to-left and multi-byte scripts. - A built-in typewriter animation on
text_block: e.g.PlayTypewriter(CharsPerSecond:float), with an event when it finishes.
Why it matters
Typewriter dialogue is everywhere in narrative, horror and RPG islands, and localization is key for reaching players worldwide. Right now, using one means giving up the other.