Artemis 엔진 비주얼 노벨을 영어로 번역하는 방법
RuneTranslate는 Artemis Engine(iMel/Mikage) 비주얼 노벨을 영어와 30개 이상의 언어로 번역합니다 — .pfs 아카이브(PF8 암호화 포함)를 읽고, 대사와 선택지를 추출하며, 게임이 불러오는 root.pfs 오버라이드 패치를 내보냅니다. 최선의 노력.
Artemis Engine 게임을 번역하기 위해, RuneTranslate는 팬 번역가에게 오랫동안 거의 손댈 수 없었던 프레임워크를 읽어냅니다. 수백 편의 일본 출시작 뒤에 있는 Lua 기반 비주얼 노벨 프레임워크 Artemis Engine입니다. Artemis 게임 폴더를 열면 .pfs 아카이브 더미와 읽을 것이 없는 상태를 보게 됩니다. RuneTranslate는 엔진을 감지해 순수 TypeScript로(암호화까지 포함해) 그 아카이브를 열고, 스크립트에서 대사, 캐릭터 이름, 선택지를 읽어내, 게임이 스스로 불러오는 번역된 복사본을 내보냅니다.
Artemis는 여러 해에 걸친 스튜디오별 변형이 있으니, Artemis 게임에 RuneTranslate를 지정했는데 감지되지 않거나, 열리지 않거나, 게임이 불러오지 못하는 무언가를 내보낸다면 알려주세요 — 방법은 마지막에 안내합니다.
Artemis Engine이 실제로 무엇인가
Artemis는 iMel Inc.(Mikage로도 알려진 스튜디오)가 개발한 상업 일본 비주얼 노벨 엔진입니다. Kirikiri나 NScripter 같은 옛 엔진이 자체 도메인 특화 스크립팅 언어를 노출하는 것과 달리, Artemis는 Lua를 중심으로 만들어졌습니다 — 시나리오 스크립트가 본질적으로 Lua 데이터 테이블입니다 — 개발자에게는 유연하지만 실제로는 완성된 게임을 밖에서 번역하려는 이에게 벽입니다. VNDB에 약 730편의 출시작이 이것으로 만들어졌으니 결코 틈새의 호기심이 아니라, 기계 번역 도구가 역사적으로 건너뛰어 온 하나의 구작 카탈로그 전체입니다.
디스크상에서 Artemis 게임은 Windows .exe에 스크립트, 아트, 오디오를 담은 하나 이상의 .pfs 리소스 아카이브를 더한 것입니다. 안의 스크립트는 대부분 .ast 파일(Lua 테이블 시나리오 스크립트)과 .txt 파일(더 단순한 줄 지향 형식)입니다. RuneTranslate는 그 아카이브와 스크립트에서 직접 작업하므로, 스튜디오가 시나리오를 .ast로 배포했든 .txt로 배포했든 게임을 다룹니다.
왜 Artemis 게임이 그토록 번역하기 어려웠나
Ren’Py 같은 소스 기반 엔진과 비교하면, Artemis는 텍스트를 여러 겹 뒤에 숨깁니다. 몇 가지 구체적인 요소가 손 번역가와 순진한 도구 모두의 손이 닿지 않게 만들어 왔습니다:
- 모든 것이 `.pfs` 아카이브 안에 있다. 스크립트는 디스크에 낱개로 있지 않고 — Artemis 자체
.pfs컨테이너 형식(PF8,PF6, 그리고 레거시PF2변형이 보임)에 패킹되어 있습니다. 그 형식을 읽는 리더가 없으면 애초에 편집할 것이 없습니다. - 최신 아카이브는 암호화되어 있다. 현재
PF8형식은 파일을 패킹만 하는 게 아니라 그 내용을 암호화합니다. 각 항목이 아카이브 자체 인덱스의SHA-1해시에서 유도된 키에 대해 XOR됩니다. 바이트를 그냥 잘라낼 수 없고 — 읽을 수 있는 스크립트를 얻으려면 엔진의 키 유도를 재현해야 합니다. - 스크립트는 평문이 아니라 Lua 데이터.
.ast시나리오는 Lua 테이블입니다 — 대사, 화자 이름, 선택지가 엔진 명령과 섞인 채 구조화된 테이블 안에 중첩된 필드로 있습니다. 실제로 두 가지 테이블 배치(더 오래된 v1과 더 새로운 v2)가 존재하며, 번역가는 주변 구조를 훼손하지 않고 실제 말한 줄을 끄집어내려면 둘 다 이해해야 합니다. - 인라인 엔진 명령이 대사에 짜여 있다. 루비/후리가나 주석, 이름표, 색상 변경, 클릭 대기가 텍스트와 함께 인라인으로 쓰여 있습니다. 그것들을 알아보지 못하는 찾기-바꾸기는 명령 토큰까지 번역하고, 게임이 깨집니다.
결과적으로, 일본어를 유창하게 읽는 번역가조차 먼저 독점 암호화 컨테이너를 풀고, Lua 테이블을 손으로 파싱하고, 인라인 마크업을 조심스레 피해가야 합니다 — 한 줄이 번역되기 전에요. 그것이 이제 RuneTranslate가 여러분을 위해 해내는 작업입니다.
RuneTranslate가 지금 하는 일
RuneTranslate는 Artemis를 일급 엔진으로 다루며 전체 파이프라인을 순수 TypeScript로 처리합니다 — 외부 도구도, Python 사이드카도, 설치할 것도 없습니다:
- `.pfs` 아카이브를 직접 읽습니다.
PF8,PF6, 레거시PF2아카이브 형식을 자체적으로 열며, PF8의 `SHA-1` 키 XOR 암호화도 포함합니다 — 엔진의 키 유도를 재현해 스크립트 내용이 읽을 수 있게 나옵니다. - 대사, 이름, 선택지를 추출합니다. 읽을 수 있는
.ast(Lua 테이블) 시나리오 스크립트 — 더 오래된 v1과 더 새로운 v2 배치 모두 — 와.txt(줄 지향) 스크립트, 그리고 많은 게임이 실제로 배포하는 컴파일된 바이너리 `ASB` 시나리오(시그니처로 감지되며,.iet같은 커스텀 확장자로 이름이 바뀌어도)를 파싱해, 모든 번역 가능한 줄을 편집기에 나열합니다. 말한 대사, 이름표에 나타나는 캐릭터 이름, 분기 선택지를요. - 엔진 명령을 보존합니다. 인라인 마크업 — 루비/후리가나, 이름표, 색상, 클릭 대기 — 과 줄바꿈은 번역 제공자에 닿기 전에 숫자 플레이스홀더 뒤에 가려졌다가 나갈 때 정확히 복원됩니다. 텍스트는 번역되고 엔진 명령은 그대로입니다.
- 오버라이드 패치를 내보냅니다. Artemis는 마운트된
.pfs아카이브에서 스크립트를 읽으므로, 내보내기 시 RuneTranslate는 번역된 오버라이드 패치 아카이브 — 소스.pfs마다 하나씩root.pfs.NNN파일 — 를 게임 복사본에 씁니다. Artemis는 번호가 가장 높은 아카이브를 마지막에 마운트해 거기서 읽으므로, 패치가 게임 자체 아카이브를 다시 만들지 않고 패킹된 원본을 가립니다. (번역된 스크립트는 무해한 여분으로 낱개로도 쓰입니다.) 우리의 Kirikiri 패치 흐름과 같은 오버라이드 패치 발상입니다.
일본어 → 영어가 최적 지점이지만 30개 이상의 언어 중 무엇이든 대상으로 삼을 수 있습니다 — 스페인어, 프랑스어, 독일어, 포르투갈어, 러시아어, 중국어, 이탈리아어, 터키어, 베트남어 등.
필요한 것
- Windows용 RuneTranslate — 무료. 모든 엔진과 제공자가 열려 있습니다(무료 등급은 기능이 아니라 속도가 조절됩니다).
- Artemis 게임 폴더. 게임의
.exe와 그.pfs아카이브(스크립트와 에셋이 그 안에 패킹되어 있음)가 있는 디렉터리입니다. - 대상 언어 — 영어, 스페인어, 프랑스어, 독일어, 포르투갈어, 러시아어, 중국어, 이탈리아어, 터키어, 베트남어, 그 외 20개 이상.
- 번역 제공자 하나. 무료 Google Translate는 바로 작동하고, DeepL은 무료 등급이 있으며, OpenAI, Anthropic, 로컬 모델(Ollama / LM Studio), 모든 OpenAI 호환 API는 직접 키를 준비해야 합니다. Artemis 게임은 대사가 많고 어조에 민감하니 보통 LLM(OpenAI / Anthropic)이나 DeepL이 가장 잘 읽힙니다.
1단계: 게임 폴더 열기
RuneTranslate를 실행하고 새 프로젝트를 클릭한 뒤 Artemis 게임 디렉터리를 지정하세요. 엔진 감지가 자동으로 실행됩니다 — 엔진의 .pfs 아카이브를 보면 프로젝트를 Artemis로 인식합니다. 원본 게임 폴더는 절대 수정되지 않습니다.
2단계: 스크립트가 읽히는 방식
RuneTranslate는 .pfs 아카이브를 열고 스크립트를 끄집어내며, 진행하면서 복호화하고 파싱합니다:
- 암호화된 `PF8` 아카이브 —
SHA-1키 XOR 방식으로 자체 복호화되어, 별도의 언패커를 절대 실행하지 않습니다. - 암호화되지 않은 `PF6` / 레거시 `PF2` 아카이브 — 직접 읽습니다.
- `.ast`와 `.txt` 스크립트 — 대사, 이름, 선택지로 파싱되어 파일별로 묶여 편집기에 나열됩니다.
인라인 엔진 명령과 줄바꿈은 무언가가 제공자에 닿기 전에 숫자 플레이스홀더 뒤에 가려졌다가 나갈 때 복원됩니다 — 그래서 루비 주석, 이름표, 색상 태그가 왕복을 손대지 않은 채 살아남습니다.
3단계: 번역하기
제공자를 골라 실행하세요. 비주얼 노벨이라면 LLM(OpenAI / Anthropic)이 캐릭터의 목소리와 어조에 가장 좋고, DeepL은 서술에 빠르고 깔끔하며, 무료 Google Translate는 짧은 메뉴 문자열과 선택지에 적합합니다. 게임 전체에 걸쳐 이름이 똑같이 렌더링되도록 등장인물과 반복 용어를 미리 용어집에 넣으세요 — 용어집 101을 참고하세요. 끝나면 AI 리파이너로 선택적 패스를 돌려, 각 줄을 문맥 속에서 다시 읽고 기계 번역이 남기기 쉬운 딱딱하고 직역적인 표현을 조입니다.
4단계: 바로 실행 가능한 복사본 내보내기
내보내기를 클릭하세요. RuneTranslate는 root.pfs.NNN 오버라이드 패치 아카이브 — 소스 .pfs마다 하나씩 — 가 든 번역된 게임 복사본을 쓰며, Artemis는 그것을 마지막에 마운트해 패킹된 원본보다 우선 읽습니다. (번역된 스크립트는 무해한 여분으로 낱개로도 떨궈집니다.) 실행하면 게임이 대상 언어로 플레이됩니다.
알려진 한계
- 컴파일된 `.asb` 시나리오도 읽힙니다 — 많은 Artemis 게임이 읽을 수 있는
.ast/.txt대신 시나리오를 컴파일된 바이너리 AST(ASB마커로 시작하는 형식)로 배포하며, 몇몇은 확장자를 바꿉니다(우리가 테스트한 한 게임은.iet를 씀). RuneTranslate는 확장자가 아니라 시그니처로 그것을 감지해 제자리에서 번역합니다. 게임이 화자 이름을 스크립트 내 텍스트가 아니라 그래픽이나 명령 이름으로 저장하는 경우, 그 이름은 스크립트가 아니라 이미지 텍스트 흐름에서 나옵니다 — 이름이 일본어로 남아 있다면 보통 그 이유입니다. - 오버라이드 패치가 로드 경로입니다. 번역된
root.pfs.NNN아카이브가 게임이 실제로 읽는 것입니다. 아카이브를 다르게 마운트하는 드문 타이틀에서는 내보내기를 조정해야 할 수 있습니다 — 정확히 신고가 들어오는 대로 우리가 안정화하는 실제 게임 동작입니다. - 이미지 아트에 새겨진 텍스트 — 비트맵으로 그려진 타이틀 화면이나 메뉴 버튼 — 는 스크립트 텍스트가 아니라 픽셀이라서 스크립트 추출기가 닿을 수 없습니다. 그것은 이미지 텍스트 번역을 참고하세요.
- 정확한 아카이브와 스크립트 변형은 출시작마다 다를 수 있습니다. 항상 여러분의 특정 복사본에서 검증하세요.
문제가 생겼나요? 알려주세요
.pfs 리더, 암호화, .ast / .txt / .asb 파서는 만들어져 단위 테스트되었지만, Artemis는 여러 해에 걸친 스튜디오별 변형이 있습니다. 게임이 감지되지 않거나, 아카이브가 열리지 않거나, 아무것도 추출하지 못하거나, 불러오지 못하는 무언가를 내보낸다면 Discord에 신고해 주세요 — 게임 이름과 패킹 방식(어떤 .pfs 변형인지, .ast 대 .txt 대 .asb)이 우리가 가장 빨리 안정화하는 데 딱 맞는 정보입니다.
RuneTranslate 다운로드하고 읽고 싶었던 그 Artemis VN에 지정해 시험해 보세요. 우리가 또 다른 아카이브 기반 VN 엔진을 어떻게 다루는지 보려면 다음으로 Kirikiri 가이드를 읽어보세요.
RuneTranslate를 써볼 준비가 되셨나요?
무료 등급에서 모든 엔진과 모든 번역 제공자가 열립니다. Supporter($3/mo)로 최고 속도가 열립니다.
Windows용 다운로드
