Como traduzir visual novels NScripter / ONScripter
O RuneTranslate traduz visual novels NScripter e ONScripter para o português e mais de 30 idiomas — decodificando o nscript.dat ofuscado por XOR, tratando Shift-JIS / CP932 e exportando uma cópia pronta para rodar. Novo; relate qualquer coisa que não carregar.
O RuneTranslate lê uma das famílias de motor mais antigas das visual novels japonesas: o NScripter e seu irmão de código aberto ONScripter. Essas VNs doujin clássicas — as que vêm como uma pasta de arquivos .dat enigmáticos e scripts Shift-JIS — historicamente foram as mais dolorosas de abrir à mão, e as que as ferramentas de tradução automática costumam pular. O RuneTranslate detecta o motor, lê o texto do script, e pode até traduzir o japonês pintado na tela de título e nos botões de menu.
Este suporte a motor é recém-adicionado e ainda não verificado em jogos reais, então, se você apontar o RuneTranslate para um jogo NScripter / ONScripter e ele não detectar ou não carregar, por favor nos avise — mais sobre isso no final.
O que o NScripter e o ONScripter realmente são
O NScripter é um motor de scripting de VN para Windows de código fechado, de Naoki Takahashi, amplamente usado no Japão a partir do início dos anos 2000. Sua licença livre de royalties para uso pessoal e comercial, seu empacotador de arquivos integrado e sua linguagem de scripting famosamente de baixo nível fizeram dele um pilar da cena doujin; estúdios como a Nekonekosoft se apoiaram nele quase exclusivamente.
O ONScripter é uma reimplementação separada e de código aberto (GPL) do runtime do NScripter por um programador conhecido como Ogapee. Construído sobre SDL e compatível de forma drop-in, ele roda onde o NScripter não consegue — Linux, macOS, Android e mais — então a comunidade de localização o adotou (e forks como o ONScripter-EN e o Ponscripter para fontes Unicode proporcionais) como o runtime de fato para distribuir builds traduzidas.
Versão curta: o NScripter é o motor Windows fechado original no qual os jogos foram criados; o ONScripter é o runtime aberto e multiplataforma no qual os tradutores amadores rodam suas builds. O RuneTranslate trabalha a partir dos scripts e assets do jogo, então ele cobre títulos de qualquer um dos campos.
Por que esses jogos têm sido tão difíceis de traduzir
Comparado a um motor moderno como o Ren'Py ou o Kirikiri, o NScripter / ONScripter é um campo minado de peculiaridades da época do motor. Quatro em particular fizeram dele uma barreira tanto para tradutores manuais quanto para ferramentas de MT ingênuas:
- Codificação Shift-JIS / CP932. Scripts legados são Shift-JIS (CP932). Decodifique errado e você recebe mojibake; recodifique de forma descuidada e alguns runtimes antigos corrompem a memória e travam. Scripts nativos modernos podem ser UTF-8, mas o catálogo antigo é CP932.
- O `nscript.dat` ofuscado por XOR-`0x84`. O script compilado geralmente mora em
nscript.dat(oupscript.datno Ponscripter), com cada byte submetido a XOR contra a constante0x84. Não é criptografia — apenas uma proteção contra spoilers acidentais — mas mesmo assim você não consegue abri-lo em um editor de texto. Jogos em texto puro distribuem o script como0.utf/0.utf.txt(UTF-8) ou0.txt/00.txt(Shift-JIS). - Texto embutido em arte de imagem. Telas de título, menus e botões são frequentemente bitmaps pré-renderizados, então o japonês neles são pixels, não strings — um extrator de strings não consegue tocá-los.
- A sutil: linhas que começam com Latim são reinterpretadas como comandos. O parser do NScripter começa cada linha em modo comando. Isso era seguro quando o motor só aceitava japonês de dois bytes, mas uma linha começando com uma letra Latina de um byte parece exatamente um comando e o motor tenta executá-la. A correção da comunidade é um marcador de texto reservado (o acento grave `
`no ONScripter legado;^` no Ponscripter) que força o modo texto — que um find-and-replace ingênuo não vai adicionar.
O que o RuneTranslate faz agora
O RuneTranslate trata o NScripter / ONScripter como um motor de primeira classe e cuida das duas metades do problema:
- O texto do script. Ele lê o script do jogo — um arquivo solto em texto puro ou um
nscript.datofuscado com XOR0x84— decodifica os diálogos em Shift-JIS / CP932, lista cada linha traduzível no editor, e na exportação escreve o script de volta na forma que o motor espera, reaplicando o XOR quando o original o usava. Ele também insere o marcador de texto de um byte automaticamente para que o português traduzido não seja mal interpretado como um comando. (Um script que mora apenas dentro de um arquivo.nsa/.sar, sem cópia solta, ainda não é lido — veja as limitações.) - O texto pintado em imagens. O japonês nas telas de título e menus é tratado pela tradução de texto em imagem: delimite as palavras, reconheça-as, traduza com o seu próprio provedor e regrave o resultado para que o jogo carregue sua arte traduzida.
Japonês → português é o ponto forte — é sobre isso que gira a história de fan-translation deste motor — mas você pode mirar em mais de 30 idiomas. Em scripts Shift-JIS legados, um destino não-latino é limitado pelas fontes que o motor consegue renderizar.
O que você precisa
- RuneTranslate para Windows — gratuito, todos os motores e provedores desbloqueados.
- Uma pasta de jogo NScripter ou ONScripter — o diretório com o
.exedo jogo (ou um binário ONScripter), seu script (nscript.dat, ou um0.txt/0.utfsolto) e quaisquer arquivos.nsa/.sar. - Um idioma de destino — português, inglês, espanhol, francês, alemão, chinês, e mais de 30 outros.
- Um provedor. O Google Translate gratuito funciona de imediato; o DeepL tem um tier gratuito; o OpenAI, o Anthropic, um modelo local e qualquer API compatível com OpenAI exigem sua própria chave. Esses jogos têm muitos diálogos, então um LLM ou o DeepL lê melhor.
Passo 1: Abra a pasta do jogo
Inicie o RuneTranslate, clique em Novo projeto e aponte-o para o diretório do jogo. A detecção roda automaticamente: um nscript.dat / pscript.dat, ou um 0.utf / 0.utf.txt em texto puro, basta por si só. Um 0.txt Shift-JIS sozinho ou um arquivo .nsa isolado só é reconhecido ao lado de um sinal corroborante — um binário ONScripter, uma fonte de jogo ou um arquivo acompanhante — para evitar correspondências falsas. Sua pasta de jogo original nunca é modificada.
Passo 2: Como o script é lido
O RuneTranslate lê o script que o jogo distribui solto em sua raiz e o decodifica para você:
- `nscript.dat` ofuscado — revertido por XOR contra
0x84e lido como Shift-JIS, para que você pule uma etapa separada densdec. - Scripts em texto puro —
0.utf/0.utf.txt(UTF-8) ou0.txt/00.txt(Shift-JIS), lidos diretamente. - Imagens arquivadas — extraídas dos arquivos
.nsa/.sardo jogo para a etapa de texto em imagem. (O próprio script é lido dos arquivos soltos da raiz; um script empacotado apenas dentro de um arquivo ainda não é lido.)
Diálogos e texto exibido são listados no editor, agrupados por arquivo. A marcação do motor e os tokens de comando são mascarados atrás de placeholders numéricos antes de chegar ao provedor, e então restaurados na saída — e o marcador de texto de um byte é aplicado onde necessário, para que o motor não confunda uma linha traduzida com um comando.
Passo 3: Traduza
Escolha um provedor e rode. Um LLM (OpenAI / Anthropic) é o melhor para a voz dos personagens, o DeepL é rápido e limpo para narração, e o Google Translate gratuito serve bem para strings curtas de menu. Coloque seu elenco no glossário logo de início para que os nomes sejam renderizados de forma idêntica — veja o Glossário 101. Quando terminar, uma passagem opcional com o refinador por IA relê cada linha em contexto e aperta o fraseado engessado e literal que a MT costuma deixar.
Passo 4: Traduza o texto nas imagens
Como boa parte da interface do NScripter é arte pré-renderizada, esta etapa importa mais aqui do que na maioria dos motores. Abra uma imagem de título ou menu, delimite cada trecho de japonês, reconheça-o, traduza-o com o mesmo provedor e, na exportação, o RuneTranslate regrava a tradução e a escreve solta na cópia exportada, para que o motor carregue sua arte traduzida por cima do original arquivado. (Sua pasta original permanece intocada; arte comprimida em SPB e algumas variantes exóticas de imagem ainda estão sendo aprimoradas.) Tutorial completo: tradução de texto em imagem.
Passo 5: Exporte uma cópia pronta para rodar
Clique em Exportar. O RuneTranslate escreve uma cópia traduzida do jogo — o script recodificado para Shift-JIS / CP932 e reofuscado com XOR 0x84 se o original o usava, escrito como um script solto que o motor carrega por cima de qualquer cópia arquivada, mais quaisquer imagens traduzidas ao lado. Rode-o e ele joga no seu idioma de destino, seja no runtime original do NScripter ou no ONScripter / ONScripter-EN.
Limitações conhecidas
- A ofuscação XOR-
0x84é tratada, mas um jogo com criptografia personalizada genuína pode não abrir. - Um script empacotado apenas dentro de um arquivo
.nsa/.sar, semnscript.dat/0.txtsolto na raiz, ainda não é extraído — a maioria dos jogos o distribui solto, mas alguns não. - A tradução de texto em imagem alcança menus, títulos e botões pintados, mas arte comprimida em SPB e logos muito estilizados podem querer um retoque manual.
- O motor exato pode variar por lançamento — alguns títulos associados ao NScripter foram reengenheirados para relançamentos específicos de Steam / console. Verifique na sua cópia.
É novíssimo — conte-nos o que quebra
Este motor é uma adição recente, ainda não testada em campo. O NScripter / ONScripter tem décadas de variantes, forks e peculiaridades por estúdio que nem todas vimos. Então, se você apontar o RuneTranslate para um e ele não detectar, não carregar, ou exportar algo que o runtime não abre, por favor relate — o nome do jogo e como ele está empacotado (0.txt solto, nscript.dat, arquivos .nsa) nos ajuda a fortalecê-lo mais rápido.
Baixe o RuneTranslate, aponte-o para aquela VN clássica que você pretendia ler, e experimente. Para um motor de VN mais moderno, leia o tutorial de Ren'Py a seguir.
Pronto para experimentar o RuneTranslate?
O plano gratuito libera todos os motores + todos os provedores de tradução. O plano Supporter ($3/mo) libera velocidade total.
Baixar para Windows
