번역이랑 이미지 한패 후기 올라왔길레 나도 한번 후기 써봤음


월희를 ㅈ고딩 시절 때 페이트하고 나서 궁금해서 해봤었음

진짜 코하쿠 루트 맨 마지막에 동서남북으로 울부짖었다

그래서 작년 말엔가 리메이크 소식 들었을 때 생각을 했지

아 이건 한패를 해야겠다

그래서 8월 26일이 오기를 매일같이 기다렸음

그리고 그날이 오자마자 겜 뜯어봤지

 

겜 발매하기 전에는 타입문이 콘솔로 겜을 낸다면 겜 엔진을 뭘 쓸까에 대해서 생각을 좀 해봤었는데

의외로 PS4나 스위치로 타입문 노벨류 겜이 나온게 없더라

페스나 정도는 있을 줄 알았는데 의외였음

그래서 그나마 최신인 PSVITA로 나온 페스나를 뜯어봤는데 Dramatic Create가 하청을 받아서 이식을 했고

HuneX라는 고대 엔진을 쓰고 있는걸 알았음

이 게임 엔진은 PS2 시절부터 써온 오래된 겜 엔진이더라

여튼 Dramatic Create가 그러면 PS4나 스위치로 다른 회사 면시 이식한게 있나 확인을 해봤는데

최근에 시계장치 레이라인을 스위치로 이식한걸 알아내서

그거 뜯어가지고 미리 겜 파일 구조 같은거 연습을 좀 해뒀음

근데 아니나 다를까 월희 콘솔용도 같은 엔진 썼더라

Dramatic Create가 하청했다고 스탭롤에 적혀있지는 않았는데 그쪽 스탭들이 참여하지 않았을까 싶음

 

 

 

HuneX 엔진은 아카이브 포맷으로 hed+mrg+nam 이라는 세트 구조를 쓰는데

이 파일 구조 해석에는 https://github.com/Hintay/PS-HuneX_Tools 여기 덕을 좀 봤음

툴 자체는 3년전거라 월희에 쓸 수는 없었는데 문서화 해둔 자료들이랑 코드 보면서 대략적인 구조 감 잡을 때 도움이 됐음

짧게 설명하자면

hed는 파일 주소 적혀있는 파일

mrg는 실제 파일들이 들어있는 파일

nam은 파일 이름 기록되어있는 파일 이라고 생각하면 됨

추출 할거면 hed 파일 8바이트씩 읽어내고 (순서대로 4바이트 주소, 2바이트 파일크기, 2바이트 NXGZ나 NXZ 압축해제시 파일크기(그 외 파일은 앞 2바이트와 동일크기))

각 값들 2048씩 곱해서 nam에 있는 이름이랑 합쳐가지고 mrg에서 뽑아내면 됨

리패킹은 반대로 하면 되고 (단 2048바이트씩 파일 읽어내니깐 다시 넣는 파일크기도 2048의 배수여야 됨, 나는 파일크기 나누기 2048 했을 때 나머지를 2048에 뺀 개수만큼 \x00 더미 박아서 2048 배수 맞췄음)

 

여튼 hed+mrg+nam에서 파일 추출하면 안에 JPG NXGZ NXZ 라는 파일들이 쏟아져 나오는데

JPG는 뭐 그냥 JPG임

NXGZ는 gzip으로 압축된 파일 (첫 16바이트는 헤더인데 순서대로 4바이트 매직넘버, 4바이트 압축해제시 파일크기, 4바이트 압축된 파일크기)

NXZ는 zlib으로 압축된 파일 (헤더 구조는 NXGZ랑 동일)

 

gzip인지 zlib인지 알아낸거는 일단 파일명부터가 NX”GZ”랑 NX”Z”에다가

압축구간 시작 부분에 매직넘버가 각각 1F 8B 08 이랑 78 9C 인거 보고 알았음

 

NXGZ랑 NXZ는 압축 풀면 BNTX라는 스위치 표준 텍스처 파일이 튀어나오는데

여기서부터는 이제 인터넷에서 검색해서 나오는 BNTX 다루는 프로그램 받아서 이미지 뽑아내고 다시 넣었음

나는 https://github.com/KillzXGaming/Switch-Toolbox 이거 썼음

BNTX 수정했으면 이제 다시 NXGZ나 NXZ로 압축하고 파일 헤더 재작성

이미지 식질은 이게 다고

 

영상은 그냥 movie 라는 폴더에 mp4 (H264, AAC)파일로 있어서 영상 작업하시는 분한테 그대로 드렸음


스크립트는 allscr.mrg와 script_text.mrg가 스크립트 파일들인데

allscr.mrg는 건드릴게 없었음 게임이 다른 언어 지원하기 편하게 하려고 한 건지는 모르겠는데

allscr.mrg안에는 텍스트가 하나도 없고 스크립트 코드들만 들어있었음

실 텍스트들은 script_text.mrg안에 있어서 거기서 텍스트만 읽어오는 구조

 

텍스트는 다행히도 UTF-8로 인코딩 되어있어서 폰트만 지원한다면 바로 한글출력이 가능했음

script_text.mrg도 hed처럼 맨 위에 각 대사들이 파일 안에 어디에 있는지 주소 기록하는 곳이 있는데 이거는 구조가 간단해서 그냥 계산해서 박음

 

시스템이나 UI에 쓰이는 텍스트들은 allui.mrg안에 있는 SYSMES_TEXT.DAT 라는 파일 안에 들어있는데 이거도 비슷하게 텍스트 수정하고 주소 기록 되어 있는 곳 계산해서 박았음

 

딱 하나 텍스트 관련해서 이상한 점이 있었다면 … 이 특문이 특정 조건 일 때 문장이 좌우 짜부되는 문제가 있었음

 

이 문제는 적당히 비슷하게 생긴 특문인 ⋯ 를 박고 폰트 파일 수정해서 …의 글리프로 교체했음

 

그러고 보니 위에 말을 안 했는데 이런저런 작업들은 하나하나 손으로 수정하고 그런 건 아니고

Python이랑 Perl로 코드 짜서 다 자동화 시켰음

 

이미지, 영상, 스크립트 수정 외에 배포용 패치 제작할 때도 이런저런 문제들이 있었는데

https://arca.live/b/yuzusoft/34831511

글 쓰다 보니 설명하는 게 점점 귀찮아져서 여기서 줄임

 

아무튼 재미가 있었다~~~

 

PC용 월희는 아마 키리키리로 나올 테니 콘솔판보다는 작업 더 수월할거라 믿고 있음

2부도 빨리 나오면 좋겠고 내년 동계 올림픽 때 나오는거겠지?????????????????

 

그리고 좋은 팀원 분들 만나서 괜찮은 퀄리티의 한패 빠르게 만들 수 있었다고 생각함