본문 바로가기
기타 등등

소스엔진 게임 한글패치 제작 방법

by Hanmoa 2016. 8. 27.

소스 엔진은 거의 대부분 메모장 파일만 뜯어 고쳐도 한글화가 쉽게 되는 특징이 있습니다.
하지만 막상 처음 해보시는 분들은 어떤 식으로 만져줘야 할지 고민인 경우가 많을텐데, 좀 더 심화적으로 어떻게 파일을 수정해야 할지 알아보겠습니다.

 

1. 메모장 파일 수정 방법

보통 게임 내에 출력되는 글자들은 메모장 파일에 저장되어 있으며 거의 대부분의 게임들은 'Resource' 폴더 안에 '게임이름_english.txt' 형태로 존재합니다.
(예: Program Files (x86)\Steam\steamapps\common\게임이름\게임이름\resource\게임이름_english.txt)


파일 내부를 열어보면 대략 이런 형태의 문장들이 나타납니다.

{
"Language" "English" 
"Tokens"
{
"App_SpecialOffers" "Special Offers"
"App_Friends" "Friends"
"App_Games" "Play Games"
"App_Storefront" "Browse Games"
"App_Servers" "Servers"
"App_Browser" "Web browser"
"Admin_Servers"  "My Servers"
"App_Account" "Account"
"App_Settings" "Settings"
"App_Monitor" "Monitor"
"App_News" "News"
}
}  

여기서 어디를 수정해줘야 게임에서 한글이 출력될까요? 

아마 눈치 채신 분들은 아시겠지만

{
"Language" "Korean"
"Tokens"
{
"App_SpecialOffers" "특별 할인"
"App_Friends" "친구"
"App_Games" "게임 플레이하기"
"App_Storefront" "게임 검색"
"App_Servers" "서버"
"App_Browser" "웹 브라우저"
"Admin_Servers"  "내 서버"
"App_Account" "계정"
"App_Settings" "설정"
"App_Monitor" "모니터"
"App_News" "뉴스"
}  
}

뒤에 있는 따옴표 안에 들어있는 문장들을 수정하고 저장해주시면 되며, 특히 따옴표에 주의하세요.

중간에 따옴표를 하나라도 빼 먹으면 그 문장을 기준으로 한글이 제대로 출력되지 않습니다.

그리고 밸브사에서 공식으로 번역한 파일의 경우

"lang"
{
"Language" "korean"
"Tokens"
{
"App_SpecialOffers" "특별 할인"
"[english]App_SpecialOffers" "Special Offers"
"App_Friends" "친구"
"[english]App_Friends" "Friends"
"App_Games" "게임 플레이하기"
"[english]App_Games" "Play Games"
"App_Servers" "서버"
"[english]App_Servers" "Servers"
"App_Browser" "웹 브라우저"
"[english]App_Browser" "Web browser"
"Admin_Servers" "내 서버"
"[english]Admin_Servers" "My Servers"
"App_Account" "계정"
"[english]App_Account" "Account"
"App_Settings" "설정"
"[english]App_Settings" "Settings"
"App_Monitor" "모니터"
"[english]App_Monitor" "Monitor"
"App_News" "뉴스"
"[english]App_News" "News"
"App_Storefront" "게임 검색"
"[english]App_Storefront" "Browse Games"
}
}

이런식으로 밑에 "[english]~ 형식으로 원문이 따로 또 존재하는데, 저 방식으로 번역을 해도 상관은 없습니다만 따로 툴이 없거나 자동 변환해주는 프로그램이 없다면 매우 노가다가 심하고, 또 자칫 중간에 실수로 따옴표 하나를 빼 먹는다거나 더 추가하는 경우 그 부분을 기준으로 밑에 있는 모든 문장들이 통째로 한글 출력이 안될 가능성이 높아서 별로 썩 추천하는 번역 방법은 아닙니다.


특히나 저렇게 번역을 하면 업데이트 된 영어 원문과 대조하며 추가된 문장과 빠진 문장을 찾기가 상당히 힘듭니다.

 

1-2. 특수 문자

또 계속 번역을 하다 보면 몇 가지 이상한 문자들을 마주쳐서 곤혹을 겪게 됩니다.
일단 대표적인 어떤 특수문자들이 있는지 알려드리겠습니다.

\n
이건 문장의 줄을 띄우는 역할을 합니다. 
\n\n 이렇게 두 개씩 존재하면 줄을 두 번 띄운다는 의미입니다.
물론 이 기호를 안 쓰고 그냥 줄을 띄우는 게임도 존재합니다.

%s %s1 %s2 %s3 %s1
이건 게임 상에서 숫자나 아이템, 유저의 닉네임 등을 표시할 때 사용합니다.

%내용% , {내용}
조작 키를 나타낼 때 사용하기도 하고 경험치를 표시할 때 쓰기도 합니다.
보통 안에 _ (언더스코어) 문자가 포함된 경우가 많기 때문에 이런 문자가 보일 경우 절대 내용물은 건드리지 않는 것이 좋습니다.

다중 언어를 지원하는 게임의 경우 개발자들이 맨 위에 설명을 적어 놓아 그걸 참고해서 보면 좋습니다.

여태 여러 소스엔진 게임을 번역하면서 본 건 이게 전부인 듯싶지만 혹시 제가 모르는 특수 문자가 더 있을지 모릅니다.

 

2. 저장 방법

메모장 파일을 저장할 때는 굳이 꼭 '게임이름_english'가 아니더라도 '게임이름_korean'과 '게임이름_koreana'로 저장해도 적용이 됩니다. 
이 방법을 권장하는 이유가 게임 업데이트 시 english 파일로 저장을 해두면 파일이 덮어 씌워져서 내용물이 다 날아갑니다.

또 자칫 잘못 수정할 경우 영어 원문이 없어서 글자가 이상하게 뜨는 경우도 있고요.

korean과 koreana의 차이는 각각 청소년용 계정과 성인용 계정에 적용되는 차이인데요.
둘 다 만들어주면 좋고, 하나만 만든다면 koreana로 만들어주는 게 더 낫습니다.
아무래도 대부분의 스팀 계정들은 성인용이라 korean만 있으면 한국어가 적용이 안되더군요. (물론 반대도 마찬가지)


다만 일부 게임의 경우 Korean, Koreana로 이름을 변경하면 인식을 못하는 게임도 종종 있습니다.
이럴 경우 아래와 같은 방식으로 적용이 가능합니다.

라이브러리에 있는 게임을 마우스 오른쪽 클릭해서 속성... → 시작 옵션 설정...으로 들어가서
시작 옵션에 -language korean 또는 -language koreana를 적으시면 한국어 출력이 가능합니다.

하지만 경우에 따라 몇몇 문장들은 번역을 하여도 게임 상에 안 뜨는 경우도 가끔 있습니다.
이 경우에는 res 확장자 파일을 건드려줘야 합니다.

이제 한번 res 파일을 수정하는 방법을 알아봅시다.

 

 

3. RES 확장자 파일 수정

res 확장자도 메모장 파일과 같은 경로에 있는 경우가 흔합니다.
res 확장자는 메모장 및 워드패드로 아주 손쉽게 열 수 있습니다.
저는 좀 더 깔끔하게 보기 위해 워드패드로 열어서 봅니다.

res 파일을 열고 Ctrl + F키를 눌러 labeltext를 찾으면 그 뒤에 #***_*** 형식으로 된 문장이 나오는 경우가 있는데, 이걸 그냥 생으로 뜯어 고치는 방법이 있고 좀 더 번거롭지만 다른 방법으로 수정하는 방법도 있습니다.

 

res 파일 수정 방법

예}

"OKButton"
{
"ControlName" "Button"
"fieldName" "OKButton"
"xpos" "330"
"ypos" "372"
"wide" "88"
"tall" "24"
"autoResize" "0"
"pinCorner" "0"
"visible" "1"
"enabled" "1"
"tabPosition" "0"
"labelText" "Start"
"textAlignment" "west"
"dulltext" "0"
"brighttext" "0"
"wrap" "0"
"Command" "OK"
"Default" "0"
}
"CancelButton"
{

 

저 Start라 써진 부분을 '시작'이라 번역해서 수정해주시면 되는데, ("labelText" "시작")
그냥 워드패드 자체로 수정을 하게 되면 res 파일로 저장을 하기 힘듭니다.
이 경우 Notepad++같은 프로그램으로 수정을 해줘야 해요.

그리고 수정 후 가장 중요한 부분이 있는데, 파일 인코딩을 ANSI에서 UTF-8로 변환해줘야 합니다.

여러분이 저와 같은 프로그램을 쓰신다면 저 UTF-8 (BOM 없음)으로 반드시 변환을 해줘야 한글이 안 깨집니다.

특히 Notepad++의 장점은 다른 이름으로 res 확장자 그대로 저장이 가능한 게 큰 장점인 것 같습니다. 

여러 편의 기능들도 많고 게임 폴더 내에 있는 res 파일을 모조리 열어서 labeltext 문구만 찾는 것도 가능합니다.

 

3-1. 다른 수정 방법

이 방법은 조금 번거롭지만, 만약 잘못 번역했을 경우 위 방법보다 더 수정이 간편한 것이 특징입니다.
또한 인코딩을 변환해줄 필요도 전혀 없고요.

예를 들어 res 파일 안에 
"labelText" "Cancel" 이라는 문장이 있다면 저 Cancel 앞에 #을 추가해주고, (예: "labelText" "#Cancel") 다시 메모장 파일에는 #을 때주고 "Cancel" "취소" 문장을 추가해주는 방법이 있습니다.

res 파일
txt 파일

이때 규칙이 있는데, res 파일의 경우 반드시 앞에 #을 꼭 붙여줘야 하며, 공백을 써야할 경우 모두 _ (언더스코어)로 처리를 해줘야 합니다. (예: "labelText" "#Can_cel")

물론 아예 언더스토어 없이 그냥 다 붙여서 쓰는 게임사들도 있어서 취향에 따라 쓰시면 됩니다.


다만 저 #*** 단어나 문장의 경우 다른 res 파일 내에 있는 단어나 문장들과 겹치지 않도록 적절히 알아서 만들어주시면 됩니다.
겹치지만 않는다면 간편하게 #1, #2 이런 식으로 해주셔도 상관없어요.

 

 

4. VPK 파일

하지만 모든 게임들이 파일을 밖으로 노출시켜 놓은 건 아닙니다.
Insurgency나 Day of infamy같은 게임의 경우 txt 파일이나 res 파일을 VPK 파일 안에 넣어서 수정이 힘든 경우도 존재합니다.

다행히 VPK 파일의 경우 GCFScape란 프로그램을 통해 손쉽게 파일을 열거나 추출할 수 있고, 다시 VPK로 언팩하고자 할 경우에는 보통 bin이란 폴더 안에 vpk.exe라는 프로그램이 존재합니다. 
여기다가 VPK 파일로 압축하고자 하는 폴더나 파일을 드래그로 끌어다가 위에 올려놓으면 자동으로 VPK 파일로 압축이 됩니다. 

따로 창작마당과 애드온을 지원하는 게임일 경우 패치에 필요한 파일만 따로 압축을 해서 업로드하는 방법도 있는데, 아쉽게도 제가 봤던 게임들 중 txt 파일이 제대로 적용되는 게임은 없더군요. 


만약 txt 파일 적용도 가능하다면 딱 필요한 파일만 창작마당에 공유하시던가, 아니라면 아직까진 원본 폴더에 패치를 씌우고 통째로 압축해서 배포하는 방법 밖에 없다고 봅니다.

 


5. 폰트

https://developer.valvesoftware.com/wiki/Authoring_and_Using_TrueType_Fonts

 

Authoring and Using TrueType Fonts - Valve Developer Community

The Source engine and VGUI support native TrueType fonts, complete with anti-aliasing and other effects. If you want information on vfont files. You can refer to this steam guide to learn how to convert ttf to vfont. Using Fonts for icons and graphics In H

developer.valvesoftware.com

소스엔진 폰트의 경우 해당 위키에 정리가 잘 돼있어서 이걸 참고하면 어느 정도 도움이 되지 않을까 싶습니다.

다만 저도 저 방법을 직접 해본적이 없어서 과연 얼마만큼 도움이 되는지는 잘 모르겠네요...

 

그나마 구글 등에다가 'clientscheme 폰트 변경'이나 또는 '팀포2 폰트' '레포데 폰트' 등으로 검색해보면 한국어로 잘 설명된 글들도 제법 있어서 이걸 참고해도 괜찮고요.

 

혹시 이해가 잘 안 가는 내용 있으면 제가 아는 지식 한해서 답변해드리도록 하겠습니다.