패치 완료되어 공유중입니다 : https://nato-blog.tistory.com/188

 

1. 시작 계기

 

 

게임 한글패치 해보기

주의 : 한글화 강의가 아님! 태어나서 처음 해보는 것 한번 해보고 그 과정을 의식의 흐름대로 정리했다 시작 계기 : 언젠간 한번쯤 해보고싶었기도 하고.. 시간이 좀 있어서 해봤는데 의외로 괜

nato-blog.tistory.com

 

위 글에서도 언급했었지만, 진짜로 한글화 해보고싶은 게임은 따로 있었다.

Ikenfell이라는, 대충 마법학교를 주제로 한 턴제 인디게임이다.

 

Save 40% on Ikenfell on Steam

A turn-based tactical RPG about a group of troublesome magic students. Use timing mechanics to power your spells and block attacks, explore the twisted halls of a vast magic school, fight challenging monsters and bosses, and uncover dark secrets never mean

store.steampowered.com

 

그런데 개발사 자체 엔진 + 파일 암호화로 인해 파일을 뜯을 수가 없다.

텍스트 수정은 할 수 있는데 Font 추가를 못하니 작업할수가 없는 상황

 

그렇게 포기하려다 스팀 커뮤니티에 글 하나 남겼었다.

폰트 파일 어딨는지 / 어떻게 바꾸는지 아는사람~?

그리고 잊어버리고 있었는데...

???

???? 개발자에게 연락해서 복호화 코드를 얻었다는 용사의 등장. C# 잘 알면 친구신청을 보내란다.

 

C#은 잘 모르지만 까짓꺼 공부하면 되지 마인드로 친구신청을 보냈는데...

?????

?? 이미 프리랜서 구해서 굴리고있다는 답장을 받았다. 조금만 기달려보라고...

????????

 

GitHub - webfischi/ikenpack: A tool to extract and repackage ikenfells img files

A tool to extract and repackage ikenfells img files - GitHub - webfischi/ikenpack: A tool to extract and repackage ikenfells img files

github.com

완성된 툴 공유까지 해주는... 역시 양덕은 최고야!!

 

그렇게 방법이 생긴김에 시작해보게 되었다.

 

 

2. 한글 폰트 만들기

 

이 게임같은 경우 대사 텍스트는 Pathway처럼 외부에 드러나 있었다

(의미없는 문자를 추가해보니 실제 게임 내부 텍스트가 변경되는것을 확인)

각 문자 - FONT의 mapping 파일 또한 json으로 드러나 있었다

(텍스트와 비슷한 방식으로 확인)

 

그렇다면

  • 제공받은 tool로 한글 Font를 추가하고
  • 대사 텍스트를 한글로 작성하고
  • 한글 문자에 해당하는 Font mapping정보를 json에 추가해주면?
  • 한글 문자를 보고 - mapping따라 한글 Font를 출력해주지 않을까?

이런 흐름으로 한글 출력이 되리라 생각했다.

 

 

3. Font 추가하기

 

우선 한글 조합형을 지원해줄리가 없으므로, 글자 하나하나 이미지를 사용하기로 했다.

자연스럽게 일본어, 그중에서도 한자 위주로 된 기존 폰트를 대체하려고 했는데

폰트 이미지 파일 갯수

기존 게임이 사용하던 폰트가 영어/일본어 합해 7000여개 존재한다. 영어, 특수문자 등등 제하면 대략 69XX개가 될 것이므로, 총 1만자가 넘는 한글 전체 문자를 다 넣는것은 힘들다고 판단해 2350자만 사용하는 완성형 한글을 넣기로 했다.

 

그다음, 각 폰트 파일을 확인해봤는데,

 

폰트 한글자 크기가 10*15????

생각해보니 도트게임이니..뭐..그럴수도 있나?

아무튼 그렇게 됬으니 어쩔수 없이 맞춰줘야한다

 

 

Bitmap font generator에서 한글 완성형 조합만 사용해 export하기로 했다.

지난번에도 이용했던 둥근모꼴 글꼴을 사용했고, Export Option을 10*15 크기로 맞춰서 넣었다.

근데 10*15 픽셀에서 서체별 특징이 나타나기는 할까? 모르겠다.

 

 

글자를 읽을수 있을진 모르겠지만, 일단 넣은 옵션에 맞춰서 2350자가 생성된 걸 확인할 수 있다.

txt파일도 page - char가 연결되는 xml 형식으로 만들어졌다.

눈여겨볼건 char의 id(문자의 unicode 정보), page와 page의 id, file 4가지다.

 

 

4. 한글 폰트 적용하기

 

위 폰트를 넣기 위해선 기존 폰트들 구조를 파악하고, 최대한 충돌나지 않도록 넣어줘야 한다.

폰트를 넣다가 A,B,C같은 알파벳을 지워버리면 언제 어디서 에러가 나며 터지거나 이상한 폰트가 로딩될지 모르는 일이다.

하나하나 쪼개지기 전 이미지 파일의 경우, 이렇게 생긴 파일이다.

대충 봐도 세로보다는 가로가 훨씬 더 길다. 10*15라는걸 감안하면 더더욱

하나하나 쪼개진 이미지 파일의 경우, 이렇게 끝난다.

smallfont_119_58 < 119가 58보다 크므로, 119가 가로 index고 58이 세로 index라고 생각할 수 있다.

+적당한 위치의 폰트 이미지를 비교해보면 확실하게 알 수 있다. smallfont_0_1이 옆에 있는지 아래에있는지...

 

또한 XML로 작성된 한글 font 정보 또한 위 json 형식대로 변경해줘야 한다.

ikenfell.java
0.00MB

손으로 하나하나 할 순 없으므로 간단한 코드를 작성해서 진행했다.

XML 정보를 parsing해 unicode - png mapping 정보를 얻고 - font png 파일을 불러와 이름을 변경하고 저장 - json 형식으로 font 정보를 작성

 

코드를 실행시키면 게임 파일 형식대로 이름이 변경된 이미지와 json 형식에 맞게 mapping된 텍스트를 얻을 수 있다.

 

이후는 위 github의 설명대로 따라가면 다시 압축된 bin/img 파일을 얻을 수 있다.

 

기존 bin/img 파일을 해당 파일로 대체해버리고(백업은 필수), json 파일에 한글 데이터를 추가하면 일단 작업은 완료된다.

 

 

5. 한글 출력 검증하기

 

깆렇록뻔돋

일단 그대로 실행해보았다.

일본어 한자를 거의 1/3가량 한글단어로 바꿔버렸으니, 한자들이 몇몇 한글로 나오지 않을까 싶었는데 정답이었다.

 

이어서 일부 일본어 텍스트를 한글로 바꾼 후 구동해보았다.

증료는 폰트 크기의 한계다

성공이다!

 

이제 텍스트 부분만 마저 번역하면 될 듯 하다.

 

 

+ 10*15, 8*11 size의 폰트 2종류를 사용해야 합니다. 일반적인 폰트로는 저 사이즈에 맞춰 조정하면 다 뭉개지고 깨져서 알아보기 어려운 글자들이 생깁니다... (현재 사용중인 둥근모꼴도 완벽하진 않음..)

작은 size에서도 구분 가능한, 그런 완성형 폰트를 알고 계신분은 알려주시면 감사하겠습니다. GB용 폰트라거나 

 

++ 이미지 한글화는 어떻게하지..? 

+ Recent posts