Engine suportado · Artemis
O Artemis (da iMel Inc. / Mikage) é o motor Windows scriptado em Lua por trás de uma grande fatia das visual novels japonesas modernas — aproximadamente 730 lançamentos no VNDB. O RuneTranslate lê os arquivos de recursos .pfs do motor em TypeScript puro, sem ferramentas externas ou sidecars: ele trata os formatos PF8, PF6 e PF2, incluindo a criptografia XOR com chave SHA-1 do PF8 (a chave por entrada é o SHA-1 do índice do arquivo), de modo que os scripts empacotados abrem sem GARbro. De dentro do arquivo, ele extrai os diálogos, nomes de personagens e escolhas tanto dos scripts legíveis .ast (tabela Lua) / .txt (orientados a linha) QUANTO dos cenários binários compilados ASB que muitos jogos de fato distribuem — a forma que começa com o marcador ASB, frequentemente renomeada para uma extensão personalizada (Crystal Rain, por exemplo, usa .iet). O RuneTranslate detecta o cenário compilado por sua assinatura em vez da extensão, decodifica seus diálogos e lista cada linha. Ele preserva os comandos inline do motor — ruby / furigana, plaquetas de nome, cor, clickwaits — e as quebras de linha através da tradução, para que a marcação sobreviva intocada. Para a exportação, o Artemis lê seus scripts de arquivos .pfs montados, então o RuneTranslate constrói um pequeno arquivo de patch de sobreposição — root.pfs.NNN — para cada .pfs de origem, contendo apenas seus scripts traduzidos; o Artemis monta os arquivos .pfs numerados por último, então o patch sobrepõe os originais e o jogo carrega sua tradução sem reempacotamento completo do arquivo base (os scripts também são escritos soltos como um extra inofensivo). É a mesma ideia de patch de sobreposição do fluxo patch.xp3 do Kirikiri. Este motor ainda está sendo verificado em jogos reais, então teste a build exportada antes de redistribuir.
As visual novels se apoiam em um elenco fixo e em terminologia recorrente ao longo de milhares de linhas, e a tradução automática vai escrever o nome de uma heroína de três formas diferentes em três capítulos. Coloque no glossário seus personagens, nomes de lugares e termos recorrentes logo de início, para que cada linha de diálogo e cada escolha os renderize de forma idêntica. Glossário 101 →
Aponte o RuneTranslate para o diretório do jogo — a pasta com o .exe do jogo e seus arquivos de recursos .pfs (frequentemente root.pfs / data.pfs e afins). A detecção de motor reconhece o layout do Artemis automaticamente; sua pasta original nunca é modificada.
O RuneTranslate abre os arquivos .pfs em TypeScript puro — PF8, PF6 e PF2 — e descriptografa de forma transparente os dados XOR com chave SHA-1 do PF8, sem GARbro ou sidecar necessário. Em seguida, ele analisa os scripts .ast (tabela Lua) e .txt (orientados a linha) internos, extraindo diálogos, nomes de personagens e escolhas, e lista cada linha traduzível no editor, agrupada por arquivo. Os comandos inline do motor e as quebras de linha são mascarados atrás de placeholders numéricos para que o provedor nunca os estrague.
Esses jogos têm muitos diálogos e são sensíveis ao tom, então um LLM (OpenAI GPT-4o / Anthropic Claude) ou o DeepL geralmente lê melhor; o Google Translate gratuito ou um modelo local (Ollama / LM Studio) cobrem strings curtas de menu e escolhas, e você pode apontar o provedor compatível com OpenAI para o OpenRouter ou o NanoGPT. Uma segunda passagem opcional do refinador por IA melhora o fraseado literal.
Os scripts do Artemis entremeiam comandos de ruby / furigana, plaqueta de nome, cor e clickwait pelos diálogos. O RuneTranslate congela cada um deles — mais as quebras de linha originais — como placeholders durante a tradução e os restaura na saída, para que a linha traduzida mantenha a mesma furigana, a mesma plaqueta de nome e o mesmo ritmo do original.
Na exportação, o RuneTranslate copia o jogo e constrói um pequeno arquivo de patch de sobreposição — root.pfs.NNN — por .pfs de origem, contendo apenas seus scripts .ast / .txt traduzidos (eles também são escritos soltos como um extra inofensivo). O Artemis monta os arquivos .pfs numerados por último, então o patch sobrepõe os originais e o jogo simplesmente lê sua tradução — sem reempacotamento completo, e os arquivos base ficam intocados. Rode a cópia exportada e ela joga no seu idioma.