kone
한글패치
한글패치

한글화를 시행하는 고전적인 방법

08/14/2025, 10:25:57
정보
4936 views · 5 likes
1

뭔가 오래되었거나 고전 게임 느낌이 나기 위해 쓰는 게임 엔진을 사용하거나 영미권 국가의 개발자가 직접 엔진을 개발한 게임은 흔히 알려진 방법으로 한글 패치를 시행할 수 없다. 게임 엔진이 텍스트를 출력할 때 아스키 코드 (모두 1 바이트에 해당함)만 허용한다면 글자 하나가 2 바이트를 차지하는 한글을 출력할 수 없다. 하지만 이렇더라도 한글판을 낼 수 없는 건 아니다.


그런 구닥다리 게임 엔진이라도 언어 설정 기능이 있을 것이다. 하나의 소스코드 안에 데이터를 담아 하드코딩을 한 게 아니라면 출력할 내용을 담은 텍스트 파일에서 불러 올 것이다. 각 언어마다 텍스트 파일이 하나씩 있을 것이다. 출력을 담당하는 소스코드에서 텍스트 파일의 몇 번째 줄의 내용을 출력한다는 명령어가 있을 때 영어로 설정되어 있다면 eng.txt에서, 독일어로 설정되어 있다면 ger.txt에서, 프랑스어로 설정되어 있다면 fre.txt에서 불러 올 것이다.


하지만 이 방법만으로는 부족하다. 한글화를 위해서는 아스키 코드 밖에 있는 글자를 써야만 할 것이다. 하지만 아스키 코드만 쓸 수 있다는 전재 하에 써야 하는 다른 방법이 있다. 바로 글꼴을 수정하는 것이다. 이런 게임들은 글꼴을 하나의 이미지 파일에서 일정 크기 만큼을 불러와 출력할 텐데 글꼴을 영문자와 상관 없이 만든다면 아스키 코드 이외의 문자를 출력할 수 있을 것이다.


예로 들어서 "한국"를 출력하고 싶다면

kor.txt에서 임의의 줄에 "gksrnr"를 써놓고 kor.bmp에서 'g'에 해당하는 부분에 'ㅎ'을 그려놓고... 일일히 하면 된다.


하지만 "gksrnr"로 해놓으면 안되는데 왜 그러하는지는 설명이 어려우므로 이 방법에 관심이 생긴 사람들이 있다면 나중에 써보도록 하겠다.


그러나 이 정도는 알 필요가 있다.

  • 256개의 글자를 쓸 수 있는데 한글의 모든 조합은 11172자이므로 적용할 수 있게 음절을 분리해야 하는데 대표적으로 'ㄱ', 'ㄴ', 'ㄷ', ... 이렇게 자음 모음별로 분리하는 방법이 있다.

  • 사용해야 하는 아스키 코드 이외 글자가 128개를 넘는다면 아스키 코드의 일부 글자는 번역본에서 포기하고 남아 있는 아스키 코드의 글자로 어떻게든 대체해야 한다.

  • 가변폭 글꼴을 지원하지 않는 게임 엔진이라면 자음 모음으로 분리하면 안된다. "ㅎㅏㄴㄱㅜㄱ"이 된다.

5
2 comments
08/19/25 Edited 08/19/25
영어라던지 알파벳을 사용하는 언어들은 음소문자라서 지역화가 쉬운 축이지만 단순히 글자가 많거나 문자의 조합이 많은 경우 지역화가 상당히 어렵습니다. 한글도 그러하지만 그나마 다행인 것은 한자 문화권에서 난이도가 그나마 낮은 것이 한국어 인듯 합니다. BMP 파일에서 시스템이 읽을 수 있는 1개의 행을 한번 더 쪼갠 0.5행을 읽게 하여 그 0.5행에 작은 글자를 넣는 방법도 있습니다. 특정 기기에서만 돌아가는 콘솔 게임 중 고전에 속하는 옛날 게임들(특히 DS시리즈라던지 SFC로 나온 게임들)은 왠만한 전문가가 아니고서야 불가능합니다.
팁 감사합니다.