패치 완료되어 공유중입니다 : 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 형식대로 변경해줘야 한다.
손으로 하나하나 할 순 없으므로 간단한 코드를 작성해서 진행했다.
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용 폰트라거나
++ 이미지 한글화는 어떻게하지..?