Supported engine · TyranoBuilder / TyranoScript
TyranoBuilder (and the underlying TyranoScript) is a Japanese visual novel engine popular for indie releases on itch.io, DLsite, and Steam. RuneTranslate detects both Electron-wrapped builds (resources/app.asar containing tyrano/tyrano.js + data/scenario/*.ks) and HTML5-standalone builds (loose files at root). It translates every .ks scenario file (including _preview.ks and system/_*.ks mirrors used by encrypted-build games), tyrano/lang.js for UI strings, data/system/Config.tjs for config strings, AND injects character display names into a chara_define.ks block — inline [<JP-id>] speaker shorthand becomes proper [chara_new name=... jname=...] entries automatically. Combine with the Supporter-tier Glossary feature to lock every character name in the cast list to a specific rendering before the first translation batch runs. Source language defaults to Japanese but is a per-project setting — Chinese, Korean, English, and more all work, so a non-Japanese Tyrano build extracts the same way.
TyranoBuilder's character-name injection already gives you a clean shortlist of speakers — but everything else in the script (place names, organization names, signature jutsu / spell names) still drifts by default. Add those to the glossary. Inline KAG tags ([r], [p], [font color=...]) are tag-masked so glossary substitutions never accidentally clobber an inline directive — a common failure mode of hand-edited tyrano translations. Glossary 101 →
Point RuneTranslate at the game root. Engine detection handles both layouts: Electron-wrapped (resources/app.asar containing tyrano/) and HTML5-standalone (data/scenario/ at the root). For Electron builds RuneTranslate reads + repacks app.asar transparently via @electron/asar.
RuneTranslate scans data/scenario/**/*.ks (including _preview.ks and the system/_*.ks mirrors that encrypted builds use), tyrano/lang.js for engine UI, and data/system/Config.tjs for config-level strings. Inline KAG tags ([r], [p], [改ページ], [font color]) and Japanese-named tags are masked via a Unicode-aware regex so the LLM can't corrupt them.
When the scenario uses inline [<JP-id>] speaker shorthand without matching chara_define.ks entries, RuneTranslate generates a chara_define.ks block with [chara_new name="<EN>" jname="<JP>"] entries — preserving the engine's character lookup. Inline references stay untouched, so saves and CG galleries still match.
For HTML5 builds, RuneTranslate writes modified .ks files in place. For Electron builds, the modified app.asar is repacked. Binary / encrypted .ks files (detected via UTF-8 sniff) are never overwritten. The translated build runs in TyranoBuilder identically to the Japanese original.