지원 엔진 · YU-RIS
YU-RIS(raiL-soft 제작)는 수백 개의 동인 및 상업 일본 비주얼 노벨을 만든 오래 이어져 온 Windows 스크립팅 엔진입니다. 그 리소스는 .ypf 패키지 아카이브에 들어 있고, 시나리오는 YSTB 스크립트(ysbin.ypf 안의 .ybn 파일, ysbin/yst00000.ybn 같은 내부 경로)로 컴파일됩니다. RuneTranslate는 .ypf 패키지를 순수 TypeScript로 읽고 — GARbro나 외부 도구 없이 — 항목의 압축을 풀고 각 아카이브의 파일명 키를 복구한 다음, 컴파일된 YSTB 스크립트를 파싱합니다: 네 섹션(명령, 인수 디스크립터, 문자열 값, 줄 번호)을 나누고 디스크립터 테이블에서 스크립트의 4바이트 XOR 키를 자동으로 복구하므로 암호화된 스크립트가 키 탐색 없이 열립니다. 거기서 문자열 테이블에서 일본어 대사를 뽑아내 모든 줄을 편집기에 나열하며, 엔진의 명령 피연산자, 변수 이름, 에셋 경로는 기본적으로 제외하여 스크립트 로직이 비교하는 대상을 절대 번역하지 않습니다. 내보내기 시 문자열 테이블을 다시 만들고 — 더 길거나 짧은 번역이 맞도록 모든 오프셋을 패치 — 같은 XOR 키를 다시 적용하고, 번역된 .ybn을 아카이브 경로에 느슨하게 씁니다. YU-RIS 런타임은 .ypf에 패킹된 동일 경로보다 디스크의 느슨한 파일을 우선해 읽으므로, 게임이 그냥 여러분의 번역을 불러옵니다 — 재패킹이 없습니다. 이 엔진은 여전히 실제 게임 전반에서 검증 중이므로, 재배포 전에 내보낸 빌드를 테스트하세요.
비주얼 노벨은 고정된 등장인물과 반복 용어를 수천 줄에 걸쳐 활용하며, 기계 번역은 여주인공의 이름을 세 챕터에 걸쳐 세 가지로 표기합니다. 등장인물, 지명, 반복 용어를 미리 용어집에 넣어 모든 대사 줄이 동일하게 표시하도록 하세요. 용어집 기초 →
게임 디렉터리 — 게임의 yu-ris.exe와 .ypf 패키지(보통 pac/ 하위 폴더에, 스크립트는 ysbin.ypf에 있음)가 있는 폴더 — 를 RuneTranslate로 지정하세요. 이미 GARbro로 게임의 압축을 풀었다면 느슨한 ysbin/ 폴더의 .ybn 스크립트도 감지됩니다. 엔진 감지가 YU-RIS 구조를 자동으로 인식하며, 원본 폴더는 절대 수정되지 않습니다.
RuneTranslate는 .ypf 패키지를 순수 TypeScript로 열고, 항목의 압축을 풀고, 안의 컴파일된 YSTB 스크립트를 파싱합니다. 인수 디스크립터 테이블에서 각 스크립트의 4바이트 XOR 키를 자동으로 복구하고 — 키 탐색 없이 — Shift-JIS 문자열 테이블을 디코딩하며, 모든 일본어 줄을 스크립트 파일별로 묶어 편집기에 나열합니다. 엔진 명령 피연산자, 변수 이름, 에셋 경로는 표시되지만 기본적으로 제외되어 스토리 로직이 온전히 유지됩니다.
이런 게임은 대사가 많고 어조에 민감하므로 LLM(OpenAI GPT-4o / Anthropic Claude)이나 DeepL이 대개 가장 잘 읽힙니다. 무료 Google Translate나 로컬 모델(Ollama / LM Studio)은 짧은 메뉴 문자열과 선택지를 담당하며, OpenAI 호환 제공업체를 OpenRouter나 NanoGPT로 연결할 수 있습니다. 선택적 AI 리파이너 2차 패스가 직역 표현을 다듬습니다.
YU-RIS 메시지 텍스트는 백슬래시 제어 코드(줄바꿈, 색상, ruby)와 대괄호 태그를 대사에 엮습니다. RuneTranslate는 그 하나하나를 번역 중 숫자 자리 표시자로 고정하고 내보낼 때 복원하므로, 번역된 줄이 원본과 같은 서식과 페이싱을 유지합니다.
내보내기 시 RuneTranslate는 게임을 복사하고 각 번역된 YSTB 스크립트를 다시 만듭니다 — 문자열 테이블 오프셋을 패치해 어떤 길이의 번역이든 맞추고 같은 XOR 키를 다시 적용 — 그런 다음 원본 아카이브 경로(예: ysbin/yst00000.ybn)에 느슨하게 씁니다. YU-RIS 런타임은 .ypf에 패킹된 동일 경로보다 느슨한 파일을 우선하므로, 게임이 재패킹 없이 그냥 여러분의 번역을 읽습니다. 내보낸 복사본을 실행하면 여러분의 언어로 플레이됩니다.