KOEI/신장의 야망 시리즈

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

K66Google 2017. 12. 7. 19:50

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

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

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




7. 폰트에 집어넣을 한글 음절 확보


전편에도 말했지만, 한자독음을 모두 한글로 바꾸었다고 해서 한글화가 쉬운 것이 아니다.

일부 문장을 예로 들어서 이두(吏頭)처럼 한자독음으로 나타낸다고 해보자.


 

밥을 먹는다 - 밥乙 먹는多

아버지 가방에 들어가신다 - 亞버地 家方恚 들漁家新多

닭 콩팥 훔친 집사 - 닭 콩팥 훔親 集社

다람쥐 헌 쳇바퀴에 타고파 - 多覽쥐 憲 쳇바퀴恚 他高波

찦차를 타고온 펲시맨과 쑛다리 똠방각하 - 찦車를 他高溫 펲時맨科 쑛多理 똠方各河

(※ 를 자는 㔹 (공이 클 를) 자가 있지만 Shift_JIS 코드에서는 입력 불가)



...이렇게 군데군데 벌레먹은 듯이 한자로 바꿀 수 없는 한글들이 있다.

게임 메시지를 번역하면서 막힐때마다 음절을 넣어줘도 되지만 그럴때마다 폰트파일을 수정하고... 배포하고... 막히면 또 수정하고... 이렇게 하는 것은 너무나도 번거로운 일이다.



일단 어떤 한글 음절이 한자독음에 없는지 살펴보기로 하였다.

한글 코드는 대표적으로 EUC-KR (완성형, 2350자)과 CP949(확장완성형, 11172자) 가 있는데 솔직히 11172자에는 현실에서 안쓰이는 한글들이 많다. (그나마 있다면 '뷁' 정도?)


그래서 여기서는 EUC-KR의 2350자만 가지고 확인해보았는데 과연 한자독음이 없는 한글은 몇 자나 될까?



1878자.


오차범위가 있다고 해도 약 1800여자. 이건 너무 많다. 백분율로 79.91%. 거의 8:2 수준이다.



하는 수 없이, 1878자를 하나하나 보면서 한글문장에 필요없거나 대체가 가능한 글자를 지워나가는 방법을 쓰기로 하였다.

이 작업이 대략 이틀을 잡아먹었다.

일부 음절은 가타카나 한글음독으로 빼돌리는 등 각고의 노력끝에 699자가 남았는데, 거기서 또 필요없다고 생각했던 음절이 필요해지는 등 막판에 추가로 음절 몇개를 더 넣어서 총 711자가 남게 되었다.





8. 한글 음절을 덮어씌울 폰트 구역 탐색


제1부에서 폰트를 추출할때 가로 8 x 세로 23으로 뽑았기 때문에, 한 구역당 글자는 184자다.

들어가야 하는 한글은 711자 이므로, 적어도 4개 구역(184 x 4 = 736)이 필요하다.


그럼 어느 구역에 글자를 덮어 씌울 것인가? 적어도 게임에 지장이 덜 가도록 해야 한다.

여기서 잠시, Shift_JIS의 코드 구조를 살펴보도록 하자...



* Shift_JIS (CP932)


기호

영문·숫자

히라가나

카타카나

그리스 문자

키릴 문자

괘선 문자

NEC 특수 문자

JIS 제1수준 한자 (亜~腕) 2965자

JIS 제2수준 한자 (弌~熙) 3390자

NEC 선정 IBM 확장문자 (纊~黑)

IBM 확장문자 (纊~黑)


JIS 제3수준 한자 (俱~剝 , 𠮟~繫) 1259자 (Shift_JIS로 입력 불가)

JIS 제4수준 한자 (𠂉~𪚲) 2436자 (Shift_JIS로 입력 불가)

 


참고1: http://www13.plala.or.jp/bigdata/jis_1.html

참고2: 일본어 위키백과


참고1의 사이트에 따르면, 일본 상용한자 2,136자 중...


2,102자가 제1수준, 

30자가 제2수준, 

4자가 제3수준에 있다고 한다.


따라서 많은 한자를 사용하는 제1수준에는 덮어쓰지 말고, 나머지 부분으로 판단하도록 하자.

남은 부분은 'JIS 제2수준 한자', 'NEC 선정 IBM 확장문자', 'IBM 확장문자'다.



그런데 대지 폰트에서 마지막 한자는 희(熙) 자 이기 때문에,  'NEC 선정 IBM 확장문자'와 'IBM 확장문자'는 없다.

따라서 남은 곳은 'JIS 제2수준 한자' 뿐이다. (17~35구역)


뽑아낸 폰트 bmp의 마지막 구역(35구역)은 한자를 99개 밖에 못 넣기 때문에,

그 앞에 있는 31~34구역을 한글 음절로 덮어쓰기로 정하고, 이를 '철거 구역' 이라고 명명했다.

(한자 독음을 한글 음절로 덮어야 하기 때문에)





9. 게임 상에서 철거 구역의 폰트를 사용중인지 확인


비록 상용한자들은 제1수준에 많다고 하지만, 신장의 야망은 전국시대 게임이니까 분명 제2수준의 한자도 많이 사용될 것이다.

게임 상에서 자주 등장하는 글자를 바꾸게 되면 나중에 메시지 한글화시에 손이 더 많이 가게 된다.

이 점을 고려하여, 게임 상에서 철거 구역내의 글자를 사용한 흔적이 있다면 그 글자는 덮어씌우지 않게 하려고 한다.


먼저, 철거 구역의 모든 글자를 기호로 바꿔서 grp 파일에 집어넣는다. 

(구역마다 기호는 다르게 넣어야 쉽게 구별할 수 있다. 31구역=▣ , 32구역=★ , 33구역=● , 34구역=◆ 이런 식으로...)


그런 다음 게임을 실행하고 글자가 기호로 바뀐 부분을 탐사한다. 살펴볼 수 있는 곳은 최대한 전부.

(메시지는 어차피 MSG 한글화 시에 수정을 하면 되므로 안 봐도 된다. 주로 살펴야 할 곳은 메인 메뉴, 정보 탭, 지명, 인명 쪽이다.)



이런 식으로. 일부 글자에서 기호가 출력되고 있는 것을 확인한다. 그 후 이전에 만든 독음패치로 바꿔서 무슨 글자였는지 파악한 다음에...




10. 한글 음절 재배치



그 글자만 제외시키고 나머지 단어들을 한글로 몽땅 재배치한다. 

스샷을 보면 알겠지만 쓰이는 글자들의 자리는 기호로 두어서 재배치 하는 실수가 발생하지 않도록 하였다.


그러나 웬걸, 제외된 글자 및 그 글자와 동일한 독음을 가진 글자들 때문에 자리가 부족해져서, 어쩔 수 없이 16자를 탈락시키고 말았다.

이렇게 만들어진 한글 구역 4개를 포토샵을 이용해 bmp 파일로 만든 다음 Crystaltile2를 거쳐서 res_grp에 집어넣는다.

최종적으로 한글 음절 695자가 들어갔다.




11. Crystaltile2 용 테이블 파일 작성


이제 Crystaltile2 에서 사용하는 테이블 파일을 만들어보자.

왜 만들어야 하는지는 밑에 가서 설명한다.


인터넷 상에서 돌아다니는 Shift_JIS용 테이블 파일을 구한다.



다 한글로 바꾼다.

글자가 많다보니 변환하는데 시간도 오래걸린다. 5분이나 잡아먹다니...




여기서 한글 음절로 바꾸었던 구역은 한글 음절로 집어넣어준다.



이 작업은 수작업으로 하나하나 다 해줘야 한다...




작업이 완료되었으면 ASCII 코드 테이블도 받아서 안의 내용물을 8140 윗부분에 집어넣어준다.

ASCII는 만국공통 코드이므로 게임상에서도 지원된다.




12. Crystaltile2로 메시지 열기


한글문장 출력까지 얼마 남지 않았다. 이제 왜 굳이 테이블 파일을 만든 것인지 설명할 때가 된 것 같다.

놀랍게도, 대지의 MSG 파일은 압축도 암호화도 되어있지 않기 때문에 Crystaltile2로 열면 일본어가 바로 출력된다.

또한, 출력된 일본어 문장을 편집할 수도 있다.

출력되는 일본어 한자를 독음하고, 문장을 편집하기 위해서 테이블 파일을 만들었던 것이다.


다만, MSG 에디터 상에서 편집하는게 아니므로 매우 불편한 감이 있지만, 이로써 적어도 한글화의 길이 열리기 시작한 것이다.

시험 삼아 MSG 파일을 열어보도록 하자.



파일 - 열기 - MSG_JP 폴더의 zenpan_etc_0 을 열어본다.



스크롤을 내린다.



MSG 어쩌구, Fnc 어쩌구 같은 글자들이 많이 뜨는데 또 내린다.



그러면 드디어 MSG 파일 내의 일본어 문장을 볼 수 있다.

안 보이면, 어드레스 탭의 0F 옆에 마우스 왼쪽 클릭하고 일본어로 교체하면 된다.


이러한 방식으로 혁신, 천도, 창조·전국입지전의 MSG 파일도 볼 수 있다.



13. Crystaltile2로 메시지 수정


굳이 zenpan_etc_0 파일을 연 이유는, 이 파일 안에...


게-무を종료します

よろしいですか?


라는 문장이 들어가있기 때문이다.



Ctrl + F 키로 終了 (종료) 라고 검색해본다.



그럼 종료가 들어간 문장을 찾아주는데, 우리가 찾던 문장은 대략 000085B0 위치 쯤에 있다. 여기서 한 가지 주의사항.


보면 알겠지만, 앞의 문장인 '게임을 종료합니다' 와 '게임을 종료합니다. 괜찮습니까?' 는 구분없이 서로 붙어있다는 걸 알 수 있다.

MSG 에디터는 이를 어떻게 구분을 해 놓은 건지 잘 모르겠지만, 어떤 특정 문장을 편집하려고 할때 절대로 앞의 문장이나 뒤의 문장의 영역을 침범하면 안 된다.


무엇이 한 문장인지 구분을 해야 하기 때문에, 적어도 일본어 번역 좀 많이 해 본 사람이여야 이 작업을 수월하게 할 수 있을 것 같다.

아무튼, 문장을 바꿔보자.



이제 아까 만들어둔 테이블 파일이 나설 차례다.

메뉴에서 TBL - TBL 선택.



만들어놓은 테이블 파일을 선택하고 열기.



다시 TBL - TBL 사용을 누르면..?




어드레스 0F 옆이 '사용자 테이블'로 바뀌면서 일본어 한자들이 한글로 표시된다.



이제 Crystaltile2 상에서 내가 입력하고 싶은대로 입력하면 된다.

이때 테이블 파일에 들어간 글자만 입력할 수 있다. 즉, 테이블 파일에 들어간 한글 음절도 입력이 가능하다는 것이다!

(못 들어간 한글은 아예 입력조차 되지 않는다.)


그럼, 앞/뒷 문장을 절대 침범하지 말고, 개행문자(\n , 5C 6E)도 가급적 건드리지 말고 입력한다.

Ctrl + Z 가 실행취소 단축키라는 것도 기억해두자. 글자를 잘못 쓰면 백스페이스가 아니라 Ctrl + Z 다!!




아무튼, 조심스럽게 옆 문장을 침범하지 않고 기존의 일본어 문장을


'게임을 종료합니다\n괜찮습니까?     ' 로 바꾸었다.


물음표 뒤에는 그냥 공백처리했다.



저장하고 Crystaltile2를 종료한다.


과연 어떻게 나올 것인가?


아무튼 거의 막바지에 다다랐으니까, 지금까지 해온 작업 내역들을 정리해본다...




 

1. Crystaltile2로 res_grp.bin 을 열어 폰트를 찾았다.


2. Crystaltile2로 폰트를 bmp 파일로 추출했다.


3. 포토샵을 이용하여 한자 위에 한글독음을 덮어씌우고 다시 bmp로 저장했다.


4. Crystaltile2로 덮어씌운 bmp 파일을 입력했다.


5. 게임을 실행하고 독음패치 정상작동을 확인했다.


6. EUC-KR 한글 코드 2350자 중에서 한자독음이 없는 한글 음절을 구해냈다.


7. 한자독음이 없는 약 1878자 중에서 필요없거나 대체가 가능한 음절을 지워서 711자만 남겼다.


8. 711자의 한글 음절을 넣기 위해 4곳의 한자 구역을 철거 구역으로 설정했다. 


9. 철거 구역의 한자들을 게임 상에서 사용하고 있는지 확인하였다. 


10. 철거 구역 내 게임 상에서 사용하고 있는 한자 및 그와 동일한 음절을 제외한 나머지 글자들을 모두 한글 음절로 재배치하였다.


11. 재배치 작업 도중 자리가 부족해져 16자를 탈락시켰다. 따라서 최종적으로 695자의 한글만 들어가게 되었다.


12. 수정한 대로 폰트 bmp 파일을 다시 만들어서 Crystaltile2로 입력하였다.


13. Crystaltile2에서 사용할 테이블 파일을 만들었다.


14. Crystalitle2에서 만들어 놓은 테이블 파일을 적용하고 msg 파일을 열어서 편집했다.




이제 진인사대천명의 심정으로 한글문장이 출력되기를 기다려보자...










14. 한글문장 출력 확인






'게임을 종료합니다 괜찮습니까?'



성공...




지금까지 신장의 야망 15 대지의 독음패치부터 한글문장 출력까지의 과정이었다.

이번에 작업을 해보고 한글화 작업은 쉬운 일이 아니라는 것을 깨달았다...


가장 어려운 작업은 한글 음절 고르기 작업이었고, 그 다음은 게임 내에서 철거 구역의 한자를 사용하는지 확인하는 작업이었다.

솔직히 후자는 게임 지도라도 보니까 할만한데, 전자는 메모장에 적힌 깨알같은 글씨들만 반나절 이상 보면서 골라내야 했으니...


이제, 폰트도 다 만들었고 Crystaltile2로 문장 수정도 가능하다는 것을 증명해보였다. msg 한글화는 다른 사람들이 해 주기를 바란다.

폰트나 메시지를 압축하거나 암호화하지 않고 그대로 넣어놓은 코에이에게는 이거 감사해야하나?

앞으로도 쭉 그랬으면 좋겠다.


그럼 이만...



<끝>