対応エンジン · Artemis
Artemis(iMel Inc. / Mikage 製)は、現代日本語ビジュアルノベルの大きな一角 — VNDB でおよそ 730 リリース — の背後にある Lua スクリプトの Windows エンジンです。RuneTranslate はエンジンの .pfs リソースアーカイブを純粋 TypeScript で、外部ツールやサイドカーなしで読みます:PF8、PF6、PF2 のフォーマットを扱い、PF8 の SHA-1 キー付き XOR 暗号化(エントリごとのキーはアーカイブインデックスの SHA-1)を含むので、パックされたスクリプトが GARbro なしで開きます。アーカイブの中から、読める .ast(Lua テーブル)/ .txt(行指向)スクリプトと、多くのゲームが実際に出荷するコンパイル済みバイナリ ASB シナリオ — ASB マーカーで始まる形式で、しばしばカスタム拡張子にリネームされる(例えば Crystal Rain は .iet を使う)— の両方からセリフ、キャラクター名、選択肢を抽出します。RuneTranslate はコンパイル済みシナリオを拡張子ではなく署名で検出し、そのセリフをデコードし、すべての行を一覧します。インラインのエンジンコマンド — ルビ / 振り仮名、ネームプレート、色、クリック待ち — と改行を翻訳をまたいで保持するので、マークアップは無傷で生き延びます。エクスポートには、Artemis がマウントされた .pfs アーカイブからスクリプトを読むので、RuneTranslate はソースの .pfs ごとに小さなオーバーライドパッチアーカイブ — root.pfs.NNN — を、翻訳済みスクリプトだけを保持して構築します。Artemis は番号付き .pfs アーカイブを最後にマウントするので、パッチが元のものを覆い隠し、ゲームはベースアーカイブの完全な再パックなしにあなたの翻訳を読み込みます(スクリプトは無害な追加物としてルーズにも書き出されます)。これは Kirikiri の patch.xp3 フローと同じオーバーライドパッチの考え方です。このエンジンはまだ実在ゲームで検証中なので、再配布する前にエクスポートしたビルドをテストしてください。
ビジュアルノベルは何千もの行にわたって固定のキャストと繰り返し出る用語に頼り、機械翻訳はヒロインの名前を 3 つの章で 3 通りに綴ります。キャラクター、地名、繰り返し出る用語を事前に用語集化して、すべてのセリフの行とすべての選択肢がそれらを同一に表示するようにしましょう。 用語集の基本 →
RuneTranslate をゲームディレクトリ — ゲームの .exe とその .pfs リソースアーカイブ(しばしば root.pfs / data.pfs など)があるフォルダ — に向けます。エンジン検出は Artemis のレイアウトを自動的に認識します。元のフォルダは決して変更されません。
RuneTranslate は .pfs アーカイブを純粋 TypeScript で開き — PF8、PF6、PF2 — PF8 の SHA-1 キー付き XOR データを透過的に復号します。GARbro やサイドカーは不要です。それから中の .ast(Lua テーブル)と .txt(行指向)スクリプトをパースし、セリフ、キャラクター名、選択肢を取り出し、すべての翻訳可能な行をファイルごとにグループ化してエディターに一覧します。インラインのエンジンコマンドと改行は数字プレースホルダーの背後にマスクされるので、プロバイダーがそれらを壊すことはありません。
これらのゲームはセリフが多くトーンに敏感なので、たいてい LLM(OpenAI GPT-4o / Anthropic Claude)または DeepL が最もよく読めます。無料の Google Translate やローカルモデル(Ollama / LM Studio)は短いメニュー文字列や選択肢をカバーし、OpenAI 互換プロバイダーを OpenRouter や NanoGPT に向けられます。任意の AI リファイナーの 2 回目のパスが直訳的な言い回しを引き締めます。
Artemis のスクリプトはルビ / 振り仮名、ネームプレート、色、クリック待ちのコマンドをセリフに通します。RuneTranslate はそれらすべて — 元の改行も含めて — を翻訳中プレースホルダーとして凍結し、出力時に復元するので、翻訳された行は元と同じ振り仮名、同じネームプレート、同じ間を保ちます。
エクスポート時に、RuneTranslate はゲームをコピーし、ソースの .pfs ごとに小さなオーバーライドパッチアーカイブ — root.pfs.NNN — を、翻訳済みの .ast / .txt スクリプトだけを保持して構築します(無害な追加物としてルーズにも書き出されます)。Artemis は番号付き .pfs アーカイブを最後にマウントするので、パッチが元のものを覆い隠し、ゲームはあなたの翻訳を読むだけです — 完全再パックなし、ベースアーカイブは手を加えられないままです。エクスポートしたコピーを実行すると、あなたの言語でプレイできます。