Motor compatible · TyranoBuilder / TyranoScript
TyranoBuilder (y el TyranoScript subyacente) es un motor de novelas visuales japonés popular para lanzamientos indie en itch.io, DLsite y Steam. RuneTranslate detecta tanto las versiones envueltas en Electron (resources/app.asar que contiene tyrano/tyrano.js + data/scenario/*.ks) como las versiones HTML5 independientes (archivos sueltos en la raíz). Traduce cada archivo de escenario .ks (incluidos los _preview.ks y los espejos system/_*.ks que usan los juegos con versiones cifradas), tyrano/lang.js para las cadenas de interfaz, data/system/Config.tjs para las cadenas de configuración, E inyecta los nombres de personajes en un bloque chara_define.ks — la abreviatura inline de hablante [<JP-id>] se convierte automáticamente en entradas [chara_new name=... jname=...] correctas. Combínalo con la función de Glosario del plan Supporter para fijar cada nombre de personaje de la lista de reparto a una representación específica antes de que se ejecute el primer lote de traducción. El idioma de origen es japonés por defecto, pero es un ajuste por proyecto — chino, coreano, inglés y más funcionan todos, así que una versión de Tyrano en un idioma distinto del japonés se extrae de la misma manera.
La inyección de nombres de personajes de TyranoBuilder ya te da una lista corta y limpia de hablantes — pero todo lo demás en el script (nombres de lugares, nombres de organizaciones, nombres de jutsu / hechizos característicos) sigue desviándose por defecto. Añádelos al glosario. Las etiquetas inline de KAG ([r], [p], [font color=...]) se enmascaran como etiquetas para que las sustituciones del glosario nunca aplasten accidentalmente una directiva inline — un modo de fallo común de las traducciones de Tyrano editadas a mano. Glosario 101 →
Apunta RuneTranslate a la raíz del juego. La detección del motor gestiona ambas disposiciones: envuelta en Electron (resources/app.asar que contiene tyrano/) y HTML5 independiente (data/scenario/ en la raíz). Para las versiones de Electron, RuneTranslate lee y reempaqueta app.asar de forma transparente mediante @electron/asar.
RuneTranslate escanea data/scenario/**/*.ks (incluidos los _preview.ks y los espejos system/_*.ks que usan las versiones cifradas), tyrano/lang.js para la interfaz del motor, y data/system/Config.tjs para las cadenas a nivel de configuración. Las etiquetas inline de KAG ([r], [p], [改ページ], [font color]) y las etiquetas con nombre japonés se enmascaran mediante una expresión regular consciente de Unicode para que el LLM no pueda corromperlas.
Cuando el escenario usa la abreviatura inline de hablante [<JP-id>] sin entradas coincidentes en chara_define.ks, RuneTranslate genera un bloque chara_define.ks con entradas [chara_new name="<EN>" jname="<JP>"] — preservando la búsqueda de personajes del motor. Las referencias inline quedan intactas, así que las partidas guardadas y las galerías de CG siguen coincidiendo.
Para las versiones HTML5, RuneTranslate escribe los archivos .ks modificados en su sitio. Para las versiones de Electron, se reempaqueta el app.asar modificado. Los archivos .ks binarios / cifrados (detectados mediante una comprobación de UTF-8) nunca se sobrescriben. La versión traducida se ejecuta en TyranoBuilder de forma idéntica al original japonés.