O RuneTranslate agora traduz novels visuais do motor Artemis
O RuneTranslate agora traduz novels visuais do Artemis Engine — o motor baseado em Lua da iMel/Mikage por trás de ~730 lançamentos no VNDB — para o inglês e mais de 30 idiomas. Ele lê os arquivos .pfs do motor em TypeScript puro, incluindo a criptografia XOR com chave SHA-1 do PF8, extrai diálogos, nomes de personagens e escolhas dos scripts .ast (tabelas Lua) e .txt, preserva os comandos inline de ruby/placa de nome/cor, e exporta os scripts traduzidos soltos para que o jogo os carregue sem reempacotar. Recém-adicionado e ainda não verificado em muitos jogos reais — relate qualquer jogo que não abrir.
O RuneTranslate agora lê um motor que, até agora, era quase intocável para tradutores fãs: o Artemis Engine, o framework de novels visuais baseado em Lua por trás de centenas de lançamentos japoneses. Se você já abriu a pasta de um jogo Artemis, encontrou uma pilha de arquivos .pfs e nada legível, e desistiu — é esse o motor. O RuneTranslate agora o detecta, abre esses arquivos em TypeScript puro (criptografia e tudo), lê os diálogos, os nomes dos personagens e as escolhas de seus scripts, e exporta uma cópia traduzida que o jogo carrega sozinho. É o motor mais recente que o RuneTranslate suporta.
Este é um motor totalmente novo, e a parte honesta vem primeiro: o suporte a Artemis foi recém-criado e ainda não foi verificado em muitos jogos reais. Então, antes de mais nada — se você apontar o RuneTranslate para um jogo Artemis e ele não detectar, não abrir, ou exportar algo que o jogo não carrega, por favor nos avise. Mais sobre como, no final.
O que é realmente o Artemis Engine
O Artemis é um motor comercial japonês de novels visuais desenvolvido pela iMel Inc. (o estúdio também conhecido pelo Mikage). Enquanto motores mais antigos como Kirikiri ou NScripter expõem uma linguagem de script própria e específica de domínio, o Artemis é construído em torno de Lua — seus scripts de cenário são essencialmente tabelas de dados Lua —, o que o torna flexível para desenvolvedores, mas, na prática, uma parede para qualquer um que tente traduzir um jogo finalizado por fora. Cerca de 730 lançamentos no VNDB são construídos sobre ele, então está longe de ser uma curiosidade de nicho; é todo um catálogo histórico que as ferramentas de tradução automática vêm ignorando historicamente.
Em disco, um jogo Artemis é um .exe do Windows mais um ou mais arquivos de recursos .pfs que guardam os scripts, a arte e o áudio. Os scripts lá dentro são em sua maioria arquivos .ast (scripts de cenário em tabelas Lua) e arquivos .txt (um formato mais simples orientado a linhas). O RuneTranslate trabalha diretamente a partir desses arquivos e scripts, então ele cobre o jogo quer o estúdio tenha distribuído os cenários como .ast ou como .txt.
Por que os jogos Artemis têm sido tão difíceis de traduzir
Comparado a um motor baseado em código-fonte como o Ren'Py, o Artemis esconde seu texto atrás de várias camadas. Algumas específicas o mantiveram fora de alcance tanto para tradutores manuais quanto para ferramentas ingênuas:
- Tudo fica dentro de arquivos `.pfs`. Os scripts não estão soltos no disco — estão empacotados no próprio formato de contêiner
.pfsdo Artemis (você verá as variantesPF8,PF6e a antigaPF2). Sem um leitor para esse formato, para começar não há nada para editar. - Os arquivos mais novos são criptografados. O formato
PF8atual não apenas empacota os arquivos, ele criptografa seu conteúdo: cada entrada passa por um XOR contra uma chave derivada de um hashSHA-1do próprio índice do arquivo. Você não pode simplesmente extrair os bytes — precisa reproduzir a derivação de chave do motor para recuperar um script legível. - Os scripts são dados Lua, não texto puro. Um cenário
.asté uma tabela Lua — diálogos, nomes de quem fala e escolhas são campos aninhados dentro de tabelas estruturadas, misturados com comandos do motor. Existem dois layouts de tabela em circulação (um v1 mais antigo e um v2 mais novo), e um tradutor precisa entender os dois para extrair as falas reais sem destruir a estrutura ao redor delas. - Comandos inline do motor estão entrelaçados no diálogo. Anotações ruby/furigana, placas de nome, mudanças de cor e esperas de clique são escritas inline com o texto. Um localizar-e-substituir que não os reconheça traduzirá também os tokens de comando, e o jogo quebra.
O efeito líquido: até um tradutor que lê japonês fluentemente precisa primeiro desempacotar um contêiner criptografado proprietário, depois analisar tabelas Lua na mão, e então contornar cuidadosamente a marcação inline — antes que uma única linha seja traduzida. É esse o trabalho que o RuneTranslate agora faz por você.
O que o RuneTranslate faz agora
O RuneTranslate trata o Artemis como um motor de primeira classe e cuida de toda a cadeia em TypeScript puro — sem ferramentas externas, sem sidecar de Python, nada para instalar:
- Lê os arquivos `.pfs` diretamente. Ele abre os formatos de arquivo
PF8,PF6e o antigoPF2internamente, incluindo a criptografia XOR com chave `SHA-1` do PF8 — reproduzindo a derivação de chave do motor para que o conteúdo do script saia legível. - Extrai diálogos, nomes e escolhas. Ele analisa os scripts de cenário
.astlegíveis (tabelas Lua) — tanto o layout v1 mais antigo quanto o v2 mais novo —, os scripts.txt(orientados a linhas), E os cenários binários compilados `ASB` que muitos jogos de fato distribuem (detectados por assinatura, mesmo quando renomeados para uma extensão personalizada como.iet), e lista no editor todas as linhas traduzíveis: o diálogo falado, os nomes dos personagens nas placas de nome e as escolhas ramificadas. - Preserva os comandos do motor. A marcação inline — ruby/furigana, placas de nome, cor, esperas de clique — e as quebras de linha são mascaradas atrás de marcadores numéricos antes de qualquer coisa chegar ao provedor de tradução, e depois restauradas exatamente na saída. O texto é traduzido; as instruções do motor não.
- Exporta sem reempacotar. O Artemis prefere um script solto no disco em vez do mesmo arquivo empacotado dentro de um
.pfs, então, ao exportar, o RuneTranslate escreve os scripts.ast/.txttraduzidos soltos, em seus caminhos de arquivo originais, ao lado do jogo. Não há reempacotamento — o jogo simplesmente lê suas traduções em vez dos originais empacotados. (É a mesma abordagem de substituição por arquivos soltos do nosso fluxo de patch do Kirikiri.)
Japonês → inglês é o ponto ideal, mas você pode mirar em qualquer um de mais de 30 idiomas — espanhol, francês, alemão, português, russo, chinês, italiano, turco, vietnamita e mais.
O que você precisa
- RuneTranslate para Windows — grátis; todos os motores e provedores estão desbloqueados (o nível gratuito é limitado em velocidade, não em recursos).
- Uma pasta de jogo Artemis. É o diretório que contém o
.exedo jogo e seus arquivos.pfs(os scripts e os recursos ficam empacotados dentro deles). - Um idioma de destino — inglês, espanhol, francês, alemão, português, russo, chinês, italiano, turco, vietnamita e mais de 20 outros.
- Um provedor de tradução. O Google Translate gratuito funciona de imediato; o DeepL tem um nível gratuito; OpenAI, Anthropic, um modelo local (Ollama / LM Studio) e qualquer API compatível com OpenAI funcionam com sua própria chave. Os jogos Artemis têm muito diálogo e são sensíveis ao tom, então um LLM (OpenAI / Anthropic) ou o DeepL geralmente 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 Artemis. A detecção do motor roda automaticamente — quando ela vê os arquivos .pfs do motor, reconhece o projeto como Artemis. Sua pasta de jogo original nunca é modificada.
Passo 2: Como os scripts são lidos
O RuneTranslate abre os arquivos .pfs e extrai os scripts para você, descriptografando e analisando conforme avança:
- Arquivos `PF8` criptografados — descriptografados internamente usando o esquema XOR com chave
SHA-1, então você nunca roda um desempacotador separado. - Arquivos `PF6` não criptografados / `PF2` antigos — lidos diretamente.
- Scripts `.ast` e `.txt` — analisados em busca de diálogos, nomes e escolhas e listados no editor, agrupados por arquivo.
Comandos inline do motor e quebras de linha são mascarados atrás de marcadores numéricos antes de qualquer coisa chegar ao provedor, e depois restaurados na saída — então as anotações ruby, as placas de nome e as tags de cor sobrevivem à viagem de ida e volta intactas.
Passo 3: Traduza
Escolha um provedor e execute. Para uma novel visual, um LLM (OpenAI / Anthropic) é o melhor para a voz e o tom dos personagens, o DeepL é rápido e limpo para a narração, e o Google Translate gratuito serve bem para strings curtas de menu e escolhas. Monte um glossário do seu elenco e dos termos recorrentes de antemão para que os nomes apareçam idênticos no jogo inteiro — veja Glossário 101. Quando terminar, uma passada opcional com o refinador de IA relê cada linha no contexto e apara o fraseado rígido e literal que a tradução automática costuma deixar para trás.
Passo 4: Exporte uma cópia pronta para rodar
Clique em Exportar. O RuneTranslate escreve uma cópia traduzida do jogo com os scripts .ast / .txt traduzidos colocados soltos em seus caminhos originais, ao lado dos arquivos .pfs intactos. Não há reempacotamento — o Artemis carrega os scripts soltos com preferência sobre os originais empacotados, então o jogo simplesmente lê suas traduções. Rode-o, e ele roda no seu idioma de destino.
Limitações conhecidas
- Cenários `.asb` compilados são lidos — muitos jogos Artemis distribuem o cenário como AST binário compilado (a forma que começa com o marcador
ASB) em vez do.ast/.txtlegível, e vários renomeiam a extensão (um jogo que testamos usa.iet). O RuneTranslate detecta isso por assinatura, não por extensão, e o traduz no lugar. Quando um jogo armazena os nomes de quem fala em gráficos ou como nomes de comando em vez de texto dentro do script, esses nomes vêm do fluxo de texto em imagem, não do script — se um nome permanecer em japonês, geralmente é por isso. - A substituição por arquivos soltos é o caminho de carga esperado, e na maioria dos jogos Artemis ela funciona porque o motor prefere um script solto à cópia empacotada. No raro título que não respeita isso, a exportação pode precisar de ajustes — é exatamente esse tipo de comportamento em jogos reais que ainda estamos confirmando.
- Texto embutido na arte de imagem — uma tela de título ou um botão de menu desenhado como bitmap — são pixels, não texto de script, então o extrator de scripts não consegue alcançá-lo. Para isso, veja tradução de texto em imagens.
- A variante exata de arquivo e de script pode diferir entre lançamentos. Verifique sempre na sua cópia específica.
É totalmente novo — conte-nos o que quebra
Vale repetir com clareza: o suporte a Artemis é uma adição recente e ainda não foi testado em muitos jogos reais. O leitor de .pfs, a criptografia e os analisadores de .ast / .txt estão construídos e testados com testes unitários, mas o motor tem anos de variação por estúdio que não vimos por completo. Então, se você apontar o RuneTranslate para um jogo Artemis e ele não detectar, não abrir os arquivos, não extrair nada, ou exportar algo que o jogo não carrega, por favor relate no nosso Discord — o nome do jogo e como ele está empacotado (qual variante de .pfs, .ast versus .txt versus .asb) é exatamente o que nos ajuda a reforçá-lo mais rápido.
Baixe o RuneTranslate, aponte-o para aquela VN Artemis que você vem querendo ler, e experimente. Para ver como lidamos com outro motor de VN baseado em arquivos, leia em seguida o tutorial do Kirikiri.
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