KOEI/신장의 야망 시리즈

신장의 야망 15 대지 - 독음패치부터 한글문장 출력까지의 과정 (제1부)

K66Google 2017. 12. 7. 13:54

본 게시물은 신장의 야망 15 대지라는 게임의 독음패치와 한글문장 출력까지의 과정을 담은 게시물입니다.

가능한 되도록 자세하게 작성하려고 노력하였습니다.

일종의 대서사시라고 생각하고 봐주시면 감사하겠습니다.



1. 서론


천리길도 한 걸음부터...

Crystaltile2와 포토샵과 함께 독음패치, 그리고 한글문장 출력까지의 기나긴 모험을 시작한다.





2. 폰트 위치 파악


사실상 대부분의 작업은 Crystaltile2 라는 훌륭한 한글화 도구에 의해 행해진다.


Crystaltile2 실행 후 '파일 - 열기'



타겟을 선택하고 열기.




그럼 헥스창이 뜨는데 도구 모음에 Tile视图 (Tile시도) 가 있다. 누른다.



그럼 초록색 픽셀들이 뜰 것이다. 여기서 잠시 조작법을 설명하겠다.


 

타일 하나를 선택하고 난 뒤에...


※ 방향키 위, 아래, 왼쪽, 오른쪽 : 타일을 이동.

※ Ctrl + 방향키 왼쪽, 오른쪽 : 타일을 왼쪽 혹은 오른쪽으로 세밀하게 이동. (미세조작)

※ Shift + 방향키 왼쪽, 오른쪽 : 보여주는 타일 가로 갯수 설정.

※ Shift + 방향키 위, 아래 : 보여주는 타일 세로 갯수 설정.

※ 마우스 휠 위, 아래 : 한 페이지(구역) 위/아래로 이동.



 

옆의 옵션들에 대해서도 간단히 설명하자면...


※ 배율 : 글씨가 보이는 배율.

※ 너비 : 타일 하나 당 보여주는 픽셀의 가로 갯수. (폰트 추적 시에 가장 핵심적인 사항!)

※ 높이 : 타일 하나 당 보여주는 픽셀의 세로 갯수.

※ Tile 형태 : 말 그대로 타일 형태. (이걸 바꿔야 제대로 보이는 게임도 있음.)



나머지 옵션은 여기서 굳이 설명하지 않아도 될 것 같다.


이제 폰트를 찾기 위한 대모험을 떠나보자!



...라고 말은 했지만 솔직히 폰트 찾기는 그렇게 쉬운 일이 아니다. 너비를 맞추는 게 쉽지 않기 때문이다. 사실상 시험문제 찍듯이 찍어야 한다.


NDS 게임 같은 경우는 용량이 커봤자 512MB 정도이며, 폰트 너비도 20 이내인 경우가 많기 때문에 대부분 쉽게 찾을 수 있다.

혁신 처럼 폰트 파일이 따로 있는 경우도 너비 조작만 잘 하면 어떻게든 폰트를 찾을 수 있다.


그런데 창조나 대지는 res_grp 안에 폰트를 숨겨버렸고, grp 파일 용량이 400MB 가까이 육박하고 있기 때문에 난이도가 더욱 높아지게 되는 것이다.


삼국지13PK는 더욱 무시무시한데 DATA1.S13 파일에 폰트를 포함한 모든 그래픽 파일들을 집어넣으면서 용량만 3기가에 육박한다. 이렇게 용량이 크면 Crystaltile2로는 사실상 찾기가 불가능하게 된다. 그나마 삼13PK는 픽툴로 투명 알파처리된 폰트 파일이 드러나서 다행이었다.


게다가, 우리는 이미 창조의 한글화 구조를 보고 'res_grp 안에 폰트 파일이 숨겨져있다' 라는 정보를 알고 있다. 그것도 몰랐으면 RES 폴더 내의 res_eff... res_else... 모두 다 조사하게 될 지도 모른다. 그러면 폰트 찾기는 더더욱 오래 걸리게 될 것이다.

코에이가 파일 구조 방식을 창조와 동일하게 편성해놓았다는 점이 그나마 다행.


아무튼 거두절미하고, 배율을 100 으로 조정한다. 너비를 32로 바꿔놓는다.

Tile 형태는 일단 단색 1bpp로 둔다.


* TIP 1

대부분의 게임들은 폰트 너비가 4의 배수(혹은 2의 배수)에 해당하므로 찍기 신공을 할 때는 꼭 참고하자.


12, 16, 24, 32, 48, 64, 96, 128, 192, 256, 384, 512, 768...

이런 식으로 말이다. (NDS 게임은 12보다 더 작을 수도 있다.)





Shift + 방향키 아래로 보여주는 타일 갯수를 더 늘린 다음 마우스 휠로 스크롤을 계속 내린다.




계속 내린다.




계속 내린다.



그렇게 계속 내리다가... 응? 뭔가 'X'자 와 비슷한 글자가 보인다. 잘 보니까 삼각형도 보이고 역삼각형도 보이고 뭔가 기호같은 것이 보이고 있다.

(솔직히 폰트 찾기는 감에 의존해야 한다. 보고도 지나칠 수가 있으니까...)


이제 너비 조작을 할 차례다. 너비를 128로 바꾼다. (64 x 2 = 128)


* TIP 2

흐리멍텅하거나 깨져서 나온다 해도 글자가 누워있지 않고 똑바로 서 있는 상태라는 것을 인지할 수만 있다면, 너비는 보통 2를 곱하거나 2로 나누면 된다.






너비를 128로 바꾸니 이제 화살표가 보이기 시작한다. 역시 이곳은 폰트 자리가 맞았다.

하지만 아직은 흐리멍텅하게 보이고 있다.

다시 너비를 256 으로 바꾼다. (128 x 2 = 256)



너비를 256으로 바꾸니 이제 별도 보이고 샵도 보이고 또렷하게 보인다. 

이 이상 또렷하게 볼 수는 없으므로 사실상 너비는 256 확정이다.

그런데 높이가 안 맞아서 글자가 잘린다. 높이를 그냥.. 128 정도로 값을 줘 본다.



높이를 128로 주니 글자는 더욱 잘 보이는데 한 타일에 글자가 2개씩 들어가는 것 같다.

그럼 높이를 2로 나누면 한 개씩만 보이지 않을까? 높이를 64로 변경한다. (128 / 2 = 64)



64로 나누니 드디어 타일 하나 당 글자가 하나 씩 보인다. 그런데 글씨가 위로 올라가 있다.


Ctrl + 방향키 좌우로 타일과 글자가 맞도록 미세조작한다. 그럼 엄청 느리게 글자들이 움직이는데, 성질 급하면 그냥 왼쪽 속성의 오프셋을 알아서 조작하면 된다.



좋다. 이제 Shift + 방향키로 보여주는 타일도 늘려주고 스크롤을 내려보도록 하자!


얼씨구 좋다!



자, 드디어 우리가 필요로 하는 亜 자 까지 도달했다. 왼쪽 위에 亜 자가 보이도록 이동시켜준다.

(방향키 위, 아래, 왼쪽, 오른쪽 조작으로 이동시키면 된다.)


 그런데 잘 보니, 글자 중간에 잡티가 보이고 있다. 그럴때는 미세조작 할때 쓰던 Ctrl + 방향키 좌우 를 이용한다.



미세조작을 하니 잡티가 사라졌다. 이 정도면 폰트를 이미지로 뽑아내도 손색이 없을 것 같다. 

(폰트를 이미지로 뽑아내는 과정은 나중에 설명)


이제 오프셋 값과 너비, 높이, Tile 형태를 메모장에 반드시 옮겨 적어놓도록 한다. (꼭 적어야 한다! 안 그러면 또 다시 찾는 작업을 해야 될 테니까...)


이런 식으로 계속 스크롤을 내리면서 게임 상에서 사용되고 있는 폰트를 모두 찾는다.

글자로 의심이 가는 부분이 있으면 너비 조작을 하고, 잘 보이면 높이 맞추고, 미세조작하고... 그렇게 해서 찾아낸 폰트는 다음과 같다.



오프셋 - 101E97F8

너비 - 256

높이 - 64

Tile 형태 - 단색 1bpp

(UHD용 폰트. 정보창, 메시지창 등에서 사용)



오프셋 - 11121408

너비 - 384

높이 - 96

Tile 형태 - 단색 1bpp

(UHD용 폰트. 지도의 성 이름 등에 사용)



오프셋 - 12E7975C

너비 - 128

높이 - 32

Tile 형태 - 단색 1bpp

(FHD용 폰트. 정보창, 메시지창 등에서 사용)




오프셋 - 1324765C

너비 - 192

높이 - 48

Tile 형태 - 단색 1bpp

(FHD용 폰트. 지도의 성 이름 등에 사용)


폰트 4곳 모두 Shift_JIS 규격을 잘 따르고 있다. (亜~熙) (어떤 게임은 규격을 안 따르고 글자를 막 집어넣기도 하므로 유의할 것)


이런 식으로, 폰트 오프셋과 너비, 높이, Tile 형태를 모두 추출해내면 되는 것이다.

참고로, 대지가 업데이트 되서 res_grp 파일 구조가 바뀌거나 대지PK가 나온다고 해도 너비와 높이값만 맞추고 스크롤을 계속 내리면 폰트들을 지금보다 더 쉽게 찾을 수 있게 된다.

코에이가 갑자기 폰트를 암호화하거나 압축하거나 다른 파일로 옮기지만 않으면 말이다.





3. 폰트 추출


폰트가 한 종류 밖에 없으면 바로 추출하고 포토샵으로 수정하면 되지만, 기껏 포토샵으로 수정하고 넣었는데 게임에 반영이 안된다면 얼마나 무기력감이 들겠는가?


그래서 추출하기 전에 테스트를 해보는 것이 좋다.


이렇게 특정부분만 추출한 후 포토샵으로 수정한 다음에... 

(추출하는 방법은 밑에서 설명)


크리스탈타일로 집어넣고...



게임 상에서 덮어쓰기 한 글자 (여기서는 ア) 를 입력해봤을때 변경한 글자가 뜨면 성공한 것이다.



그러면 진짜로 이제 폰트를 추출! ...하기 전에 미리 가로 갯수와 세로 갯수부터 정한다.

가로 갯수와 세로 갯수는 사람마다 자유롭게 정하면 되지만 여기서는 예시로 가로 8 x 세로 23으로 정하였다.

한꺼번에 다 추출하면 좋겠지만 모니터 해상도가 작아서 모든 폰트를 다 볼 수가 없는 것과, 폰트 입력 시의 컴퓨터 렉도 고려해야 하기 때문이다.


왼쪽 위의 글자를 亜로 맞추고 Shift + 방향키 상하좌우로 가로에 8개, 세로에 23개의 한자들이 뜰 수 있도록 해놓는다.

해상도나 창이 작아서 못 뜬다면 배율을 낮춰서라도 뜨게 해 놓는다.



스샷들을 유심히 봤으면 알겠지만, 타일 화면에는 점선으로 된 커서가 있다. 엑셀을 많이 써봤으면 무슨 느낌인지 알 것이다.

전체 선택을 해보자. 커서를 붙잡고 드래그하면 블록 지정을 할 수가 있는데, 왼쪽 위에서 오른쪽 아래 끝까지 드래그 한다.


그런 다음, 마우스 오른쪽 클릭 - 이미지 내보내기를 한다. 그럼 선택된 영역을 모두 bmp 파일로 추출할 수 있다.

(위에서 폰트 테스트를 할때는 전체가 아닌 부분을 선택해서 추출하였다.)


추출한 후에 마우스 휠을 딱 한번 내린다. 그러면 다음 구역의 한자들이 뜨는데 이 역시 똑같은 방법으로 추출하면 된다.

(가타카나도 추출하고 싶다면 가타카나가 있는 구역으로 간 다음에 똑같이 추출해주면 된다.)


그렇게 하면...




이런 식으로 bmp 파일들을 추출할 수 있다.


대지의 경우 추출해야 할 폰트는 두 종류다. 12E7975C 오프셋과 1324765C 오프셋이다.

한자만 추출한다면 이런 방식으로 각각 35장의 bmp 파일을 얻을 수 있을 것이다.




4. 한글 폰트 넣기


여기서는 12E7 오프셋을 가지고 설명을 하도록 하겠다. (1324 오프셋도 이와 동일하게 작업하면 된다.)


이제부터는 포토샵이 활약할 차례다. bmp 파일을 열고 '이미지 - 모드 - RGB 색상' 하면 텍스트 도구를 이용할 수 있게 된다.



다음은 bmp 상에 있는 모든 한자를 한글로 변환한다. 사이트를 이용해도 되고 엑셀의 한글/한자 변환 기능을 써도 되는데 나는 그냥 옛날에 만들어놓은 프로그램을 이용하였다.



이제 변환된 글자들을 포토샵에 붙여넣어버린다. 이때 글자색상은 기존 한자색상과 똑같아야 한다.

(한자색상이 63cf63 이라면 한글 색상도 63cf63 로 맞추라는 뜻)


그리고 기존 한자에 맞게 글자를 맞춘다.

위 스샷에서는 궁서 / 글자크기 48pt / 행간 설정 24pt / 선택문자자간 150 / 세로비율 50% / 가로비율 175% 로 설정하였다.


또한 폰트의 줄까지 맞춰야 되는데, 눈대중으로 맞춰도 되지만 가능하면 포토샵 안의 격자 기능을 사용하기 바란다.

(사용한다면 격자간격은 Crystaltile2의 높이값하고 동일하게 하고, 세분은 1로 설정하면 됨)


기존 한자의 위치에 한글을 잘 맞춘 거 같으면 배경 레이어에 가서 한자들을 모두 배경색으로 덮어씌운다.

(추출할때 배경은 검은색으로 추출되었으니 그냥 검은색으로 덮으면 된다.)

그 후 '배경으로 이미지 병합' 한다.



그리고 '이미지 - 모드 - 인덱스 색상' 으로 간다.



따로 설정할 것은 없고 확인 버튼을 누른다.

그럼 인덱스 모드로 바뀌었을텐데 bmp로 저장하면 된다.


이런 식으로...


亜 (아) 부터 熙 (희) 까지 바꾸면 된다.




5. 폰트 삽입


이제 Crystaltile2의 '亞' 부분을 왼쪽 위에다 놓고,  '亞' 에다가 커서를 맞추고, '마우스 오른쪽 버튼 - 이미지 가져오기' 한다.

(이때 가로 x 세로 비율은 추출했을때 설정해놓은 것과 똑같이 맞춰놓아야 작업에 수월하다!)



그리고 포토샵으로 변경해놓은 파일을 선택한다.



그럼 잠시 렉이 걸린 뒤에 Crystaltile2 상에서 한글 bmp와 함께 마우스 커서가 이동 모드로 바뀐다.



이렇게 한자 '亜' 자 위치에 한글 '아' 가 들어가있는 것을 확인한다.

만약 한글 '아'자가 다른데에 들어가 있거나 실수로 다른 구역의 한글 bmp를 집어넣었다면 Esc를 누른다. 그럼 실행 취소가 된다.


아무 문제 없다면 아무것도 건드리지 말고 Enter키만 누른다. 그럼 30초~1분간 렉이 걸리면서 Crystaltile2가 res_grp 에 한글 폰트를 삽입할 것이다.


폰트가 다 삽입되면 렉도 사라지고 커서도 움직일 수 있게 된다.

마우스 휠을 딱 한번 내리면 다음 구역이 나오는데 지금과 똑같이 작업하면 된다.

이런 식으로, 亜 (아) 부터 熙 (희) 까지 바꾸면 된다.



다 했으면 Save 버튼을 누르고 '파일 - 끝내기' 로 종료한다. 어차피 폰트 삽입이 완료되면 Crystaltile2가 자동으로 저장하기 때문에 안해도 되지만 만약을 위해서다...



끄려고 하면 파일이 변경되었는데 정말 종료하겠냐고 묻는다. 이미 저장은 자동으로 다 해놓았으니까 상관없다. 종료시킨다.





6. 게임 실행 후 독음패치 적용 확인


한글이 잘 뜨면 성공한 것이다.


그러나 지금의 독음패치로는 한글화가 불가능하다. '겠, 웠' 같은 한자독음이 없는 한글 음절들이 너무 많기 때문이다.


그렇다면 어떻게 해야 하는가?




<2부에서 계속>