공식적으로 한국어를 지원하지 않는 게임을 한국어화하기 위해 사용자들이 자주 사용하는 방법 중 하나가 바로 ‘후킹(hooking)’ 입니다.
후킹은 게임이 실행되는 도중 메모리에 로드되는 텍스트를 실시간으로 가로채는 기술로, 게임 구조가 간단하다면 ITHVNR, Textractor, AGTH, 같은 후킹 도구들이 활용되며 이 도구들은 게임 내부에서 출력되는 문자열 주소를 잡아내고 해당 문자열을 외부로 출력 시켜 번역이 가능하게 하는 것입니다.
그리고 추출된 텍스트를 번역한 후 다시 게임 내에 삽입해야 진정한 ‘한국어화’가 가능합니다. 이 과정에서 사용하는 도구 중 하나가 바로 비주얼 노벨에 쓰이는 Tyranoscript 입니다. Tyranoscript 는 Tyranobuild 기반 게임의 스크립트를 수정하고 재삽입하는 데 특화된 언어입니다.
다만 한국어화를 시도하려는 게임이 이보다도 더 복잡한 구조를 가지고 있다면 기존에 공개되어 있는 프로그램을 사용하는 것이 아니라 개인 자체적으로 Windows API 등을 활용하여 직접 함수를 호출하고 후킹을 걸어야 합니다. 후킹을 통해 텍스트를 가로채기 위해 사용되는 Windows 매서드 는 DetourAttach() VirtualProtect() WriteProcessMemory(), ReadProcessMemory() 등이 있습니다만 개인적으로는 프로그래밍, 소프트웨어 공학 지식이 부족해서 시도를 해 본 적은 없습니다.
후킹을 통한 한글패치는 대표적으로 콜 오브 듀티 시리즈 가 있습니다. 콜옵 한글패치의 경우 국내에서 개발된 것이 아니라 ALI213 이라고 알려진 중국 릴 그룹이 중국어화를 진행하면서 개발한 자체적인 후킹 패치이고 이를 통해 중국어화가 된 게임 문자파일(정확히는 자체 자막 파일)을 한국어로 번역한 것이 현재의 한글패치 방식입니다.
ALI213의 경우 ali213.dll 이라는 파일로 자체 후킹을 진행하여 게임에서 출력되는 영어 자막을 가로채 중문으로 된 텍스트를 출력하게 하고 있습니다.
이렇듯 AAA급 게임들의 한국어화의 경우 기본적인 소프트웨어 공학 지식+번역실력 뿐만 아니라 좀더 심화된 프로그래밍 기술을 요구하고 있습니다. 그런 반면 게임 구조가 간단한 인디게임이던 오래전에 출시된 게임이던 간에 한국어화에 있어서 가장 큰 고역은 폰트 출력 입니다.
'깗뷁헑샭' 같이 기이한 한글로 된 문자를 본 적이 있으신가요.
이를 유니코드 오류 라고 합니다. 다양한 이유로 인해 발생할 수 있는 현상이지만 한국어화 같이 지역화 과정에서 일어나는 이유는 바로
텍스트의 원문과 폰트가 일치하지 않기 때문 입니다.
"사과"
라는 문자를 출력하기 위해서는
사과
라는 원본 텍스트 입력(유니코드 정보)와 그리고 그것을 사용자 화면에 표시할 폰트(그래픽 체계/비유)가 필요합니다. 폰트라는 것은 원하는 문자를 화면에 표시할 그림체를 의미합니다.
"사과"
라는 문자가
"사"
와
"과"
로 되어 있고 이것의 유니코드가 각각 abc123, abc456이라고 가정했을 때,
이 유니코드에 맞게 우리 머릿속에 그려지는
"사"
랑
똑같이 생긴 그림
을 abc123으로, 그리고
"과"
와 똑같이 생긴 그림을 abc456이라고 만든 뒤 폰트로 저장하고 그것을 게임에 올리면 게임에
"사과"
가 표시되는 방식입니다.
그러나 여러 이유에 있어서 텍스트 입력이 정상적이지 않아, 영어 원문은 그대론데 한글 폰트만 적용이 되었다면 아래의 현상이 생깁니다.
예를 들어 "Apple"의 "A"의 유니코드가 abc123인데 이 유니코드는 완성형 한글 폰트에서
깗
에 해당됩니다.
그래서 깗이 출력되는 방식입니다.
반대로 게임 텍스트를 번역한 한글 입력은 정상인데 폰트가 적용이 안되었다면,
apple!!
을
사과!!
라고 번역을 했더라도 게임에는▯▯▯▯▯ !!
이런식으로 표시될 것입니다. 왜냐하면 게임에 기본적으로 내장되어 있던 폰트에게 한글이란, 존재하지 않는 유니코드 정보이기 때문입니다.
영어로된 원본 게임에서 사용된 영문폰트는 당연히 한글은 포함하고 있지 않습니다.
그렇기 때문에 단순히 텍스트만 번역한다고 해서 되는 일이 아닙니다.
한글을 표시할 커스텀 폰트를 게임이 읽고 그것을 화면에 표시할 수 있도록 하는 것이 한국어화 패치 제작의 핵심인 것입니다.
