Como traduzir jogos RPG Maker
O RPG Maker é o motor mais fácil de traduzir que existe — o texto fica em arquivos de dados comuns. Veja como identificar a sua versão, exportar uma build traduzida jogável e manter os códigos de controle intactos.
O RPG Maker é o motor que você tem mais chance de encontrar quando sai atrás de jogos indie japoneses, e também é o mais amigável de traduzir. O texto do jogo não está compilado dentro do executável — ele fica em arquivos de dados comuns, em JSON ou serializados em Ruby, distribuídos ao lado do jogo. É por isso que traduzir RPG Maker funciona, e é por isso que o processo abaixo termina em uma build que você realmente joga, e não em uma sobreposição que tenta adivinhar o que está na tela.
Este guia cobre como identificar qual RPG Maker você tem, o fluxo de exportação, o que exatamente é traduzido, como os códigos de controle sobrevivem a um tradutor automático e o que fazer quando uma linha volta errada. Ele foi escrito para ser útil quer você use o RuneTranslate para isso ou não.
Qual RPG Maker eu tenho?
A maioria das pessoas que faz essa pergunta não sabe qual versão tem em mãos, e a resposta muda o que é possível. Abra a pasta do jogo e procure o primeiro item desta lista que corresponda:
- Uma pasta `www/` contendo
www/data/*.json— RPG Maker MV. O jogo é um aplicativo nw.js; o executável costuma ser oGame.exeao lado dawww/. - Uma pasta `data/` solta, com arquivos
.jsone semwww/— RPG Maker MZ. O MZ subiu tudo um nível, e essa é a forma mais rápida de diferenciar os dois. - Uma `Data/` com
.rxdata,.rvdataou.rvdata2— RPG Maker XP, VX e VX Ace, respectivamente. Se aData/parecer vazia, procure na raiz porGame.rgssad,Game.rgss2aouGame.rgss3a; são os mesmos dados dentro de um arquivo criptografado. - `RPG_RT.exe` na raiz, com arquivos
.lmte.lmu— RPG Maker 2000 ou 2003. Outra geração de motor por completo. - Um
.exede dezenas ou centenas de megabytes, semwww/nemdata/ao lado — provavelmente uma build Enigma Virtual Box, com os dados empacotados dentro do executável. Veja abaixo.
MV e MZ são parecidos o bastante para as pessoas confundirem o tempo todo, e diferem em pontos que importam assim que você começa a editar. A comparação entre MV e MZ percorre o layout de pastas, o formato de plugin e as diferenças da caixa de mensagem.
O texto de jogos RPG Maker 2000 e 2003 não é suportado. O RuneTranslate lê os arquivos de save .lsd deles pelo editor de saves, e nada além disso. Se você tem um jogo com RPG_RT.exe e quer traduzir o script dele, a ferramenta certa é o EasyRPG, não esta. Melhor você sair desta página agora do que gastar uma hora para descobrir isso do jeito difícil.
O fluxo em quatro passos
- Aponte o Novo projeto para a pasta do jogo. Escolha a pasta que contém o
Game.exe. O motor é detectado pelo que está dentro dela — você não escolhe MV ou MZ num menu suspenso, e se a detecção discordar do que você esperava, vale ler isso como informação. - Escolha um provedor e um idioma de destino. São nove provedores disponíveis, e três deles não exigem chave de API nem conta nenhuma.
- Traduza. O runner agrupa as unidades em lotes, repete as falhas com backoff e mostra uma barra de progresso real com ETA. Você pode editar qualquer linha da tabela enquanto ela roda e depois que termina.
- Exporte uma build jogável para uma pasta que você escolher. O que aparece lá é uma cópia completa e executável do jogo, com os arquivos de dados traduzidos no lugar.
A pasta original do jogo nunca é modificada. Toda gravação vai para a pasta de saída que você escolheu, o que significa que uma exportação ruim não custa nada além de espaço em disco — apague e exporte de novo. Também significa que você pode manter a build japonesa instalada e jogável lado a lado.
O RuneTranslate roda no Windows 10 e 11, e no Linux e no Steam Deck sob Wine ou Proton. É preciso entrar com uma conta gratuita do Patreon no primeiro início. O tier gratuito libera todos os motores e todos os provedores — ele limita a velocidade e mantém um projeto por vez, em vez de trancar recursos atrás de um paywall.
O que é traduzido de fato
No MV e no MZ, o extrator percorre cada arquivo de mapa e cada lista de comandos de evento, e puxa os comandos que produzem texto visível para o jogador:
- `401` Mostrar Texto — a linha de diálogo. É o grosso de qualquer jogo RPG Maker.
- `405` Mostrar Texto Rolante — introduções, créditos, cartas, blocos de exposição que sobem na tela.
- `102` Mostrar Escolhas — as entradas da janela de escolha. Os rótulos do ramo
When [choice]são desenhados a partir desse mesmo array, então traduzir a escolha traduz os dois. - `320` / `324` / `325` — Alterar Nome, Apelido e Perfil do Ator, que os jogos usam para revelações e transformações no meio da história.
- O banco de dados —
Actors.json(nome, apelido, perfil),Classes.json,Skills.json(nome, descrição e as falas de batalhamessage1/message2),Items.json,Weapons.json,Armors.json,Enemies.json,States.json. - `System.json` — o título do jogo, a unidade de moeda e a tabela de termos inteira: cada rótulo de menu, nome de comando e string de status básico que o motor desenha.
- Os nomes de mapa do `MapInfos.json` e o
CommonEvents.json— os eventos comuns carregam uma quantidade surpreendente de script em jogos que passam o diálogo por um handler compartilhado. - Parâmetros de plugin em
plugins.js, e os argumentos de comando de plugin do MZ (código de comando357). É aí que muitos jogos MV/MZ modernos guardam o texto dos menus.
Comentários de evento (108 e suas linhas de continuação 408) são anotações do desenvolvedor que o motor não mostra ao jogador, então ficam excluídos por padrão. Eles não são apagados — aparecem como linhas de opt-in que você pode marcar, porque um punhado de plugins de balão e de mensagem popup realmente os renderiza. O mesmo tratamento vale para tudo o que o classificador lê como identificador de código ou caminho de arquivo: excluído, visível, reversível.
Códigos de controle, e por que eles quebram traduções
Diálogo de RPG Maker não é texto puro. Ele carrega códigos de escape inline que o motor expande na hora de desenhar:
\C[1]— troca a cor do texto para o índice 1 da paleta.\N[2]— substitui pelo nome do ator 2.\V[3]— substitui pelo valor da variável 3.\G— a unidade de moeda.\I[123]— desenha o ícone 123 inline.\.\|\!\{\}— espera um instante, espera um segundo, espera pela entrada do jogador, aumenta a fonte, diminui a fonte.
Entregue qualquer um deles cru a um tradutor automático e eles voltam destruídos. O Google Tradutor reordena. Modelos locais pequenos perdem um colchete, deixam a letra em minúscula ou trocam os colchetes ASCII por colchetes de largura total. Um LLM de vez em quando decide que \C[1] é um erro de digitação e o remove, prestativo. O resultado dentro do jogo é uma caixa de texto que imprime uma barra invertida literal, perde a cor no meio da frase ou mostra um vazio onde deveria estar o nome de um personagem.
O RuneTranslate mascara cada código como um placeholder numerado — [[T0]], [[T1]] — antes de o provedor sequer ver a string, e depois os restaura a partir do mapeamento. A restauração é deliberadamente tolerante: ela aceita um placeholder que voltou sem um dos colchetes, com espaço em branco a mais dentro, com a letra em minúscula ou com colchetes de largura total, porque na prática as quatro coisas acontecem. Se um código sumir por completo, a unidade é sinalizada, e não enviada em silêncio.
Dois casos menos óbvios são cobertos pelo mesmo mecanismo. O RPG Maker também usa substituições no estilo printf — %1 e %2 nos Terms e nas mensagens de batalha das habilidades, como em %1の攻撃!, onde %1 vira o nome do ator — e essas também são mascaradas, porque um provedor fraco inventa lixo de colchetes no lugar delas. E muitos jogos trazem um plugin de substituição de nome com tokens entre colchetes simples, como [名前] ou [呼名], que o motor troca pelo nome do jogador em tempo de execução; esses também são mascarados, de forma estreita o bastante para deixar em paz a prosa comum entre colchetes.
Códigos de várias letras definidos por plugin, como \FFF[20] ou \FH[ON], batem com o mesmo padrão e são protegidos sem nenhuma configuração por plugin.
Quebra de linha em 46 caracteres
O japonês cabe muito mais significado por caractere do que o inglês. Uma linha que preenchia a caixa de mensagem confortavelmente em japonês vai passar da borda direita depois de traduzida, e o RPG Maker não quebra a linha por você — ele simplesmente desenha para fora da janela, e o que sobra fica invisível. Você não percebe até um jogador avisar que falta metade da frase.
Na exportação, o diálogo dos comandos 401 e 405 é quebrado em 46 caracteres por linha, que é mais ou menos o que a janela de mensagem padrão comporta no tamanho de fonte padrão. As quebras entram em limites de palavra, e as quebras de linha já presentes na origem são preservadas, então as quebras de página e as divisões de linha propositais do autor sobrevivem. Jogos com um sistema de mensagem personalizado ou uma fonte menor podem querer outro número; um jogo que desenha texto numa janela mais larga vai só quebrar antes do necessário, o que é cosmético e não quebrado.
Imagens e arquivos criptografados
MV e MZ trazem uma opção de criptografia de assets que renomeia as imagens para .rpgmvp ou .png_ e aplica um XOR sobre um cabeçalho. O RuneTranslate não presume o esquema padrão — ele recupera o tamanho do cabeçalho, o comprimento da sequência de XOR e a chave a partir dos próprios bytes do arquivo, usando a assinatura PNG como texto claro conhecido e o CRC32 do IHDR como verificação. Isso importa porque existem plugins de criptografia que usam outros parâmetros (cabeçalho de 32 bytes, sequência de 32 bytes, chave espelhada) e porque muitos jogos tiveram a chave removida do System.json. O esquema do próprio RPG Maker valida na primeira iteração, então nada fica mais lento no caso comum, e o que é gravado de volta é recriptografado com o mesmo esquema, para o decodificador do próprio jogo continuar carregando.
Para XP, VX e VX Ace, o arquivo .rgssad / .rgss2a / .rgss3a é lido diretamente e os dados do Ruby Marshal lá dentro são analisados em TypeScript — sem instalar Ruby, sem descompactador externo. O suporte ali é de melhor esforço: jogos XP e VX guardam texto como strings de bytes Shift-JIS em vez de UTF-8 marcado, o que torna os casos-limite de codificação mais prováveis do que no MZ.
Texto pintado na arte — uma tela de título, um botão de menu, uma placa numa CG — não está em nenhum arquivo de dados, e nenhum extrator alcança isso. É para isso que serve o Image Studio: detectar as regiões de texto, limpar a chapa, compor o substituto e gravá-lo de volta no formato de imagem do próprio jogo, criptografia incluída.
Jogos empacotados com Enigma Virtual Box
Boa parte dos jogos RPG Maker distribuídos não tem pasta www/ nem data/ visível, porque o sistema de arquivos virtual inteiro foi empacotado no executável com o Enigma Virtual Box. O sinal é o marcador EVB\0 no exe, mais uma pasta de jogo que parece suspeitamente vazia.
Esses casos são detectados e tratados. O sistema de arquivos empacotado é descompactado num espaço de trabalho por projeto, os dados são extraídos e traduzidos normalmente, e na exportação o sistema de arquivos virtual inteiro é gravado como uma pasta executável — o executável interno restaurado, suas DLLs e a www/ — com os dados traduzidos aplicados. Você roda o executável interno extraído, que a essa altura é um jogo comum, desempacotado, lendo arquivos de dados soltos.
Tem que funcionar assim. Uma abordagem anterior deixava uma www/ traduzida ao lado do executável empacotado, e ela silenciosamente não fazia nada: o wrapper em execução resolve a www/ a partir do próprio sistema de arquivos virtual embutido e ignora os arquivos em disco. Se você estiver fazendo isso à mão com outra ferramenta, essa é a armadilha — a tradução parece ter sido aplicada e o jogo carrega o texto original mesmo assim.
Qual provedor escolher
São nove provedores suportados, e três deles não exigem chave de API nem conta em lugar nenhum: o Google, o endpoint gratuito do DeepL e o DeepL com escolha entre modelo Classic e Next-gen. Dá para traduzir um jogo RPG Maker inteiro sem pagar a ninguém e sem se cadastrar em nada. As opções pagas são a API do DeepL, o OpenAI, o Anthropic Claude, o DeepSeek, qualquer endpoint compatível com OpenAI, e um modelo local via Ollama ou LM Studio, se você preferir que nada saia da sua máquina.
A versão curta para RPG Maker especificamente: os scrapers gratuitos dão conta de menus, nomes de itens e linhas curtas, e são por onde a maioria deveria começar. Eles sofrem com onomatopeia — se um provedor devolver a origem inalterada, a unidade é marcada como falha, com uma nota, em vez de deixar o japonês passar caladinho para a sua exportação. Um LLM é nitidamente melhor em diálogos longos, em tom, e em qualquer coisa em que o registro de quem fala importe. A comparação de provedores tem as trocas de verdade, e o refinador por IA cobre rodar uma segunda passagem sobre uma tradução pronta para limpá-la.
Mantendo os nomes consistentes
A reclamação mais comum sobre um jogo RPG Maker traduzido por máquina é que o protagonista é chamado de quatro jeitos diferentes. Um glossário resolve isso — fixe a forma que você quer para cada personagem, lugar, item e habilidade antes da execução, e todos os lotes a usam. O guia de glossário mostra como montar um. A memória de tradução ajuda na mesma direção: strings de origem idênticas recebem traduções idênticas no projeto inteiro, o que importa num motor em que a mesma descrição de item aparece numa loja, num menu e num evento de baú.
Uma armadilha específica do RPG Maker: alguns plugins se apoiam na string do nome do falante com igualdade exata — a família TRP Skit para MZ é a mais conhecida. Traduza o nome no Actors.json e deixe-o como está nos dados do plugin, e a correspondência falha em silêncio: o retrato ou o skit nunca dispara. O RuneTranslate sincroniza os dois lados na exportação. Se você estiver editando à mão, lembre que um nome no RPG Maker pode ser texto de exibição e chave de busca ao mesmo tempo.
Quando algo dá errado
Uma linha continua em japonês
Três causas de sempre. Ela nunca foi extraída, porque mora em algum lugar que o extrator não percorre — o arquivo de dados de um plugin próprio, ou texto pintado numa imagem. Ela foi extraída, mas excluída, porque o classificador a leu como identificador; procure por ela como linha de opt-in e marque. Ou o provedor devolveu a origem inalterada, o que aparece como uma unidade falha que você pode rodar de novo em outro provedor. Se você traduziu o jogo antes de atualizar o aplicativo, use Reescanear origem no menu ⋯ Mais do editor — reescanear só acrescenta unidades, nunca apaga as traduções que você já tem.
O texto estoura a caixa de mensagem
A quebra padrão mira a janela padrão. Um jogo com sistema de mensagem personalizado, uma fonte maior ou um retrato ocupando metade da caixa vai precisar de linhas mais curtas. Edite a unidade problemática direto e insira suas próprias quebras de linha — as quebras manuais são preservadas na exportação. Essa também é a saída quando uma tradução é simplesmente prolixa demais: reescreva mais curto, em vez de brigar com a quebra.
O jogo não inicia depois da exportação
Quase sempre é um arquivo de dados quebrado, e não texto ruim. Confira se você iniciou o executável da pasta de saída, e não o original. Numa build EVB, confirme que está rodando o executável interno extraído. Se um evento específico trava, o suspeito é um código de controle que não sobreviveu — abra aquela unidade e compare os códigos dela com os da origem. Mantenha a pasta original do jogo intocada, para você sempre ter uma referência funcionando com que comparar.
Uma string de plugin não pode ser traduzida
Os parâmetros de plugin misturam texto de exibição com nomes de switch, caminhos de arquivo, atalhos de teclado e flags de modo no mesmo bloco. Tudo que se lê como identificador de código ou caminho é excluído automaticamente, mas um plugin que usa palavras japonesas como chaves internas passa despercebido. Marque essas unidades como excluídas e elas ficam no idioma de origem na exportação. Os filtros por regex fazem isso em massa quando os parâmetros de um plugin compartilham um padrão de nomenclatura.
Limites honestos
- O texto de jogos RPG Maker 2000 / 2003 está fora do escopo. Só arquivos de save, pelo editor de saves. Use o EasyRPG para o script.
- XP, VX e VX Ace são de melhor esforço. O leitor de arquivos e o parser de Ruby Marshal são TypeScript puro e funcionam, mas o tratamento antigo de strings Shift-JIS é uma superfície mais áspera que a de MV/MZ.
- Texto compilado no JavaScript de um plugin próprio só é alcançável quando se parece com dado. Um plugin que fixa strings dentro da própria lógica é edição manual.
- Builds MZ protegidas nativamente — em que os dados são descriptografados abaixo da camada JavaScript — são tratadas por um caminho de captura em tempo de execução e sobreposição, e não revertendo a criptografia. Funciona; trate como melhor esforço e verifique a exportação antes de se comprometer com uma execução longa.
- Nada aqui substitui jogar a build. Contagens de extração e uma barra de progresso verde não são prova. Inicie o jogo exportado e leia os primeiros dez minutos.
Duas coisas vizinhas que vale conhecer
O Modo Trapaça lê os switches, as variáveis e os itens do próprio jogo RPG Maker e deixa você mexer neles, que é a forma mais rápida de chegar a um evento de fim de jogo cuja tradução você precisa conferir — e é como a maioria verifica uma exportação sem rejogar vinte horas. O editor de saves abre saves de MV/MZ, de XP/VX/VX Ace e os .lsd de 2000/2003 diretamente, então uma jogatina travada ou um item-chave faltando não encerra a partida.
Se você quiser o panorama primeiro, a lista de motores cobre todos os dezessete formatos suportados, a página do motor RPG Maker tem o detalhe do formato, e o guia geral é a versão deste guia que não é específica de motor. Quando estiver pronto, a página de download tem o instalador.
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
