RuneTranslate가 이제 YU-RIS 비주얼 노벨을 번역합니다
RuneTranslate가 이제 YU-RIS 엔진(raiL-soft) 비주얼 노벨을 영어와 30개 이상의 언어로 번역합니다. 순수 TypeScript로 .ypf 패키지와 ysbin.ypf 안의 컴파일된 YSTB 스크립트를 읽고, 각 스크립트의 XOR 키를 자동으로 복구하며, 일본어 대사를 추출하고, 번역된 스크립트를 낱개 파일로 내보내 게임이 리팩 없이 로드하도록 합니다. 새로 추가되어 아직 많은 실제 게임에서 검증되지 않았습니다 — 열리지 않는 게임이 있으면 알려주세요.
RuneTranslate가 이제 팬 번역가들에게 오랫동안 벽이었던 또 하나의 엔진을 읽습니다. 바로 수백 개의 동인 및 상업 일본어 비주얼 노벨을 구동하는 raiL-soft의 Windows 스크립팅 엔진 YU-RIS입니다. YU-RIS 게임 폴더를 열어 .ypf 아카이브로 가득 찬 pac/ 디렉터리와 안에 읽을 수 있는 것이 하나도 없는 ysbin.ypf를 발견하고 포기한 적이 있다면 — 그게 바로 이 엔진입니다. RuneTranslate는 이제 이를 감지하고, 순수 TypeScript로 그 패키지들을 열며, 컴파일된 스크립트에서 대사를 읽어 내고, 게임이 스스로 로드하는 번역 사본을 내보냅니다. RuneTranslate가 지원하는 최신 엔진입니다.
이것은 완전히 새로운 엔진이며, 솔직한 이야기부터 먼저 하겠습니다. YU-RIS 지원은 갓 만들어졌고 아직 많은 실제 게임에서 검증되지 않았습니다. 그러니 무엇보다 먼저 — RuneTranslate를 YU-RIS 게임에 겨냥했는데 감지되지 않거나, 열리지 않거나, 게임이 로드하지 못하는 무언가를 내보낸다면 꼭 알려주세요. 방법은 글 끝에서 더 설명합니다.
YU-RIS 엔진이 실제로 무엇인가
YU-RIS(가끔 ゆーりす로 표기)는 raiL-soft가 만든 일본어 비주얼 노벨 스크립팅 엔진입니다. 완성된 YU-RIS 게임은 Windows .exe 하나에 그림, 오디오, 스크립트를 담은 여러 .ypf 패키지 아카이브 — 보통 pac/ 폴더 안에 — 로 이루어집니다. 시나리오 자체는 컴파일됩니다. 개발자가 작성하는 읽을 수 있는 스크립트는 YSTB라는 바이너리 형식으로 빌드되어 ysbin.ypf 안의 .ybn 파일(ysbin/yst00000.ybn 같은 내부 경로)로 저장됩니다. 바로 이 „패킹된 아카이브 안의 컴파일된 시나리오“라는 조합이 이 엔진의 방대한 구작 목록을 일반적인 기계 번역 도구의 손이 닿지 않는 곳에 붙잡아 두었습니다.
왜 YU-RIS 게임은 번역하기가 그렇게 어려웠나
Ren'Py처럼 소스 기반인 엔진과 비교하면, YU-RIS는 텍스트를 여러 겹 뒤에 숨깁니다:
- 모든 것이 `.ypf` 패키지 안에 들어 있습니다. 스크립트는 디스크에 낱개로 놓여 있지 않고 — 난독화된 파일 이름과 zlib으로 압축된 항목과 함께 YU-RIS 고유의
.ypf컨테이너에 패킹되어 있습니다. 그 형식을 읽는 리더가 없으면 애초에 편집할 것이 아무것도 없습니다. - 시나리오는 텍스트가 아니라 컴파일된 것입니다.
.ybn은 메모장에서 열 수 있는 스크립트가 아니라 — 네 개의 섹션(명령어 스트림, 인수 디스크립터 테이블, 문자열 테이블, 행 번호)으로 나뉜 바이너리YSTB컨테이너입니다. 실제 일본어는 문자열 테이블에 있고 디스크립터가 이를 참조합니다. - 스크립트는 XOR로 암호화되어 있습니다. 각
YSTB스크립트의 네 데이터 섹션은 4바이트 키로 뒤섞여 있습니다. 텍스트를 읽으려면 먼저 그 키를 복구해야 하며 — 키는 게임마다 다릅니다. - 모든 문자열이 대사인 것은 아닙니다. 문자열 테이블에는 변수 이름, 에셋 경로, 스크립트 로직이 비교하는 표현식 피연산자도 들어 있습니다. 그중 하나를 실수로 번역하면 게임의 흐름이 조용히 망가집니다.
종합하면: 유창한 독자라 해도 한 줄이 번역되기 전에 먼저 독점 아카이브를 풀고, 컴파일된 바이너리를 파싱하고, XOR을 깨고, 대사를 엔진의 내부 문자열과 가려내야 합니다. 바로 그 작업을 이제 RuneTranslate가 대신 해 줍니다.
RuneTranslate가 이제 하는 일
RuneTranslate는 YU-RIS를 일급 엔진으로 다루며 전체 파이프라인을 순수 TypeScript로 처리합니다 — 외부 도구도, Python 사이드카도, 설치할 것도 없습니다:
- `.ypf` 패키지를 직접 읽습니다. 자체적으로 아카이브를 열고, 항목의 압축을 풀고, 난독화된 파일 이름을 복구합니다 — GARbro나 별도의 언패커가 필요 없습니다. 이미 직접 게임을 추출했나요?
.ybn스크립트가 든 낱개ysbin/폴더도 감지됩니다. - 컴파일된 `YSTB` 스크립트를 파싱하고 암호화를 깹니다. 인수 디스크립터 테이블에서 각 스크립트의 4바이트 XOR 키를 자동으로 복구하고, Shift-JIS 문자열 테이블을 디코딩하며, 모든 일본어 줄을 스크립트 파일별로 묶어 편집기에 나열합니다.
- 대사와 기계 장치를 구별합니다. 변수 이름, 에셋 경로, 표현식 피연산자는 표시되지만 기본적으로 제외됩니다 — 빨간 옵트인 행으로 나타납니다 — 그래서 스토리 로직이 비교하는 문자열을 실수로 번역하는 일이 결코 없습니다.
- 인라인 제어 코드를 보존합니다. 메시지 텍스트에 얽혀 있는 백슬래시 코드(줄바꿈, 색상, 루비)와 대괄호 태그는 무엇이든 제공자에게 도달하기 전에 숫자 자리표시자 뒤로 가려졌다가, 나갈 때 정확히 복원됩니다.
- 리팩 없이 내보냅니다. 내보낼 때 각 번역 스크립트를 다시 빌드하고 — 더 길거나 짧은 번역이 들어맞도록 문자열 테이블 오프셋을 패치하고, 동일한 XOR 키를 다시 적용한 다음 —
.ybn을 원래 아카이브 경로에 낱개로 씁니다. YU-RIS 런타임은.ypf에 패킹된 같은 경로보다 낱개 파일을 우선하므로, 게임은 그저 당신의 번역을 읽습니다. 리팩이 없습니다. (이는 우리 Kirikiri 패치 흐름 및 Artemis 지원과 동일한 낱개 파일 오버라이드 방식입니다.)
일본어 → 영어가 최적이지만, 30개 이상의 언어 중 어느 것이든 대상으로 삼을 수 있습니다 — 스페인어, 프랑스어, 독일어, 포르투갈어, 러시아어, 중국어, 이탈리아어, 터키어, 베트남어 등.
필요한 것
- Windows용 RuneTranslate — 무료이며, 모든 엔진과 제공자가 잠금 해제되어 있습니다(무료 등급은 기능이 아니라 속도가 제한됩니다).
- YU-RIS 게임 폴더. 게임의
yu-ris.exe와 그.ypf패키지가 든 디렉터리입니다(보통pac/하위 폴더에 있고, 스크립트는ysbin.ypf에 들어 있습니다). - 대상 언어 — 영어, 스페인어, 프랑스어, 독일어, 포르투갈어, 러시아어, 중국어, 이탈리아어, 터키어, 베트남어, 그리고 20개 이상.
- 번역 제공자 하나. 무료 Google Translate는 바로 작동하고, DeepL에는 무료 등급이 있으며, OpenAI, Anthropic, 로컬 모델(Ollama / LM Studio), 그리고 OpenAI 호환 API는 모두 자기 키를 가져와 사용합니다. YU-RIS 게임은 대사가 많으므로 보통 LLM(OpenAI / Anthropic)이나 DeepL이 가장 자연스럽게 읽힙니다.
1단계: 게임 폴더 열기
RuneTranslate를 실행하고 새 프로젝트를 클릭한 다음 YU-RIS 게임 디렉터리를 지정하세요. 엔진 감지가 자동으로 실행되며 — .ypf 패키지(또는 .ybn 스크립트가 든 낱개 ysbin/ 폴더)를 발견하면 프로젝트를 YU-RIS로 인식합니다. 원본 게임 폴더는 절대 수정되지 않습니다.
2단계: 스크립트를 읽는 방식
RuneTranslate는 .ypf 패키지를 열고, ysbin.ypf에서 컴파일된 YSTB 스크립트를 꺼내며, 각 스크립트의 XOR 키를 복구하고, Shift-JIS 문자열 테이블을 디코딩합니다 — 모든 일본어 줄을 파일별로 묶어 편집기에 나열합니다. 엔진의 내부 문자열(변수 이름, 에셋 경로, 표현식 피연산자)은 표시되지만 기본적으로 제외되며, 인라인 제어 코드는 제공자가 절대 훼손하지 않도록 숫자 자리표시자 뒤로 가려집니다.
3단계: 번역하기
제공자를 고르고 실행하세요. 비주얼 노벨의 경우, 캐릭터의 목소리와 톤에는 LLM(OpenAI / Anthropic)이 가장 좋고, 내레이션에는 DeepL이 빠르고 깔끔하며, 짧은 메뉴 문자열과 선택지에는 무료 Google Translate로 충분합니다. 게임 전체에서 이름이 동일하게 표시되도록 등장인물과 반복되는 용어의 용어집을 미리 만들어 두세요 — 용어집 101을 참고하세요. 끝나면 AI 리파이너로 선택적 패스를 돌려 각 줄을 문맥 속에서 다시 읽고, 기계 번역이 남기기 쉬운 뻣뻣하고 직역투인 표현을 다듬으세요.
4단계: 바로 실행 가능한 사본 내보내기
내보내기를 클릭하세요. RuneTranslate는 다시 빌드된 각 .ybn을 원래 아카이브 경로에 낱개로 배치하고, 손대지 않은 .ypf 패키지와 나란히 둔 게임의 번역 사본을 씁니다. 리팩이 없습니다 — YU-RIS는 패킹된 원본보다 낱개 스크립트를 우선 로드하므로, 게임은 그저 당신의 번역을 읽습니다. 실행하면 대상 언어로 플레이됩니다.
알려진 제한
- YU-RIS 문자열은 Shift-JIS(cp932)입니다. 영어를 비롯해 cp932로 표현 가능한 대상 언어는 깔끔하게 내보내집니다. cp932를 벗어나는 문자를 쓰는 대상 언어 — 확장 키릴 문자, 한국어, 번체 중국어 — 는 아직 자동화되지 않은 게임 폰트/인코딩 핵이 필요합니다.
- 낱개 파일 오버라이드가 기대되는 로드 경로이며, 대부분의 YU-RIS 게임에서는 엔진이 패킹된 사본보다 낱개 스크립트를 우선하기 때문에 작동합니다. 이를 따르지 않는 드문 타이틀에서는 내보내기를 조정해야 할 수 있습니다 — 바로 우리가 아직 확인하고 있는 종류의 실제 게임 동작입니다.
- 이미지 그림에 구워 넣은 텍스트 — 비트맵으로 그려진 타이틀 화면이나 메뉴 버튼 — 는 스크립트 텍스트가 아니라 픽셀입니다. 그에 대해서는 이미지 텍스트 번역을 참고하세요.
- 정확한 아카이브와 스크립트 변형은 릴리스마다 다를 수 있습니다. 항상 당신의 특정 사본에서 검증하세요.
완전히 새롭습니다 — 무엇이 깨지는지 알려주세요
분명히 다시 말합니다: YU-RIS 지원은 새로 추가된 것이며 아직 많은 실제 게임에서 테스트되지 않았습니다. .ypf 리더, YSTB 파서, 키 복구는 만들어져 유닛 테스트를 거쳤지만, 이 엔진에는 우리가 다 보지 못한 수년간의 스튜디오별 변형이 있습니다. 그러니 RuneTranslate를 YU-RIS 게임에 겨냥했는데 감지되지 않거나, 아카이브가 열리지 않거나, 아무것도 추출되지 않거나, 게임이 로드하지 못하는 무언가를 내보낸다면 우리 Discord에 신고해 주세요 — 게임의 이름과 어떻게 패킹되어 있는지가 우리가 가장 빠르게 강화하는 데 정확히 도움이 됩니다.
RuneTranslate 다운로드, 오랫동안 읽고 싶었던 그 YU-RIS VN에 겨냥해 시도해 보세요. 아카이브 기반의 또 다른 VN 엔진을 우리가 어떻게 다루는지 보려면, 다음으로 Artemis 가이드를 읽어 보세요.
RuneTranslate를 써볼 준비가 되셨나요?
무료 등급에서 모든 엔진과 모든 번역 제공자가 열립니다. Supporter($3/mo)로 최고 속도가 열립니다.
Windows용 다운로드