[게임 한글화 강좌]메인 페이지[게임 한글화 강좌]메인 페이지

Posted at 2011. 9. 1. 00:09 | Posted in 이전 카테고리/한글화 강좌 시즌 1


게임 한글화 강좌는 시즌 2 연재중입니다.

강좌 소개 : 게임의 한글화가 어떤 작업인지 소개하며 실습을 통해 실제 게임 한글화의 과정을 알아봅니다.
게임 한글화에 도전해보고 싶으신 분들에게 추천하는 강좌입니다.

다만 이 강좌는 PC게임 한글화에는 적합하지 않으므로 PC 게임 한글화에 관한 내용은 다른 강좌를 읽어주시기 바랍니다.

시즌 2 강좌에서는 닌텐도DS 뿐만 아니라 다양한 기종의 한글화에 대해서도 안내해드리며
시즌 1 강좌도 보충/추가 업데이트 예정입니다.

중/고급 강좌도 같이 진행합니다.

업데이트 내역
2011/09/01 - 중급 강좌 1편 업데이트됨
2011/08/29 - 초급 강좌 5편 (Season 2) 업데이트됨


-------------------- 초급 강좌 -----------------
 

----------------- Season 1 -----------------

[2011/03/19] 제 1장 - 게임 한글화의 개요

[2011/03/20] 제 2장 - 게임 분석하기 1편 (이론편)

[2011/04/01] 제 3장 - 게임 분석하기 2편 (실습 1편)

[2011/04/09] 제 4장 - 게임 분석하기 3편 (실습 2편)

시즌 1 강좌는 이론을 중점으로 작성되었습니다.
기본적인 사항들에 대해 알고 계시다면 시즌 2 강좌를 참고하시기 바랍니다.
----------------- Season 2 
-----------------
 

제 5장 - 포인터의 개념 - 업데이트 되었습니다.


제 6장 - 제어코드 - 작성중입니다.


제 7장 - 고유번호와 폰트 확장 - 작성중입니다.


제 8장 - 게임의 그래픽과 팔레트 - 작성중입니다.


제 9장 - 데이터 압축 LZ77 - 작성중입니다.


시즌 2 강좌는 한글화 작업을 실제로 해보면서 배워가는 강좌입니다.
한글화 특성상 게임마다 구조가 다르기 때문에 모든 게임의 한글화에 대해 알 수 없겠지만
이를 해결하는 테크닉 등도 알려드립니다.


----------------- 중급 강좌 -----------------

제 1장 - 하드웨어 구조를 이해하자

제 2장 - GB(게임보이) 하드웨어 구조

중급 강좌는 게임기의 하드웨어 구조(Specifications,흔히 말하는 스펙) 에 대해 차근차근 알아보는 강좌입니다.
어떤 게임이든 한글화를 하기 전에 해당 게임기의 구조를 알면 좀더 쉽게 한글화가 가능합니다. 
 

----------------- 고급 강좌 -----------------

제 1장 - 폰트 확장에 도전해보자! 제 1편

고급 강좌는 게임 시스템 코드를 수정하여 게임을 한글화 하는 방법에 대해 알아봅니다.
폰트 확장/인터페이스 수정 등에 대해서도 알아봅시다.

폰트 확장편에서는 [포켓몬스터 적]의 폰트를 확장해봅니다.
처음 보시는 분들은 햇갈리실 수도 있지만 고유번호나 제어코드에 대해 이해하고 계시다면 어느순간 내용이 이해가 되실겁니다.
배포된 한글패치 버전에서는 더 많은 루틴이 삽입되었으나 강좌에서는 폰트 확장에 필요한 부분만 해볼 예정입니다.


----------------- 특별 강좌 -----------------

[2011/05/18] 특별 강좌 - NFTR 폰트에 대해 알아보기!

만든 패치를 배포해보자! Xdelta 사용하기

iOS 어플리케이션의 구조
//

[게임 한글화 강좌]제 2장 - 게임 분석하기 1편[게임 한글화 강좌]제 2장 - 게임 분석하기 1편

Posted at 2011. 3. 20. 15:00 | Posted in 이전 카테고리/한글화 강좌 시즌 1

본 강좌의 무단 스크랩을 금지합니다.
문의사항은 댓글 또는 mingi2007@gmail.com 으로 메일 주십시오.

게임 분석하기 1편에서는 게임 한글화에 필요한 기본적인 폰트, 대사 찾기에 대해 알아보겠습니다.

여기부터는 기본적인 컴퓨터 지식이 필요하며 곳곳에 설명이 들어있으므로 참고해주시기 바라며
게임 중에는 아래 설명된 경우에 해당하지 않는 게임도 있습니다.


대부분의 게임에는 대사를 출력하기 위한 폰트가 들어있습니다.
폰트는 글자이미지로 저장해둔 데이터이고 게임 대사에 맞춰 이 폰트를 불러들여 화면에 출력하게됩니다.

위에서 폰트는 글자를 이미지로 저장해둔 데이터라고 했는데 그렇다면 그래픽이 아닌가?
라고 생각하실 분들도 계실거라고 생각합니다.
하지만 폰트와 그래픽은 간단하게 구별이 가능합니다.

우선 폰트는 문장 단위가 아닌 글자 단위로 저장이 되어있습니다.
즉 [안녕하세요.] 이런 식으로 문장 단위가 아닌 [.] [] [] [] [] [] (가나다 순으로 정렬하였습니다.) 글자 하나하나마다 별개의 데이터로 저장이 되어있습니다.

만약 [안녕하세요.] 처럼 문장 단위로 저장되어있다면 대사 파일이 존재할 필요가 없고 대사를 수정하기 위해서는 이미지 전체를 바꿔야하므로 번거롭습니다.

하지만 폰트로 저장되어있다면?
이럴때는 대사 파일에서 글자 배열만 바꿔주면 [안녕하세요.]를 [하세요 안녕.] 처럼 쉽게 수정할 수가 있습니다.

게임 뿐만 아니라 윈도우에서도 이런식의 폰트가 저장되어 있기 때문에 한글의 입출력이 가능한 것입니다.

게임을 한글화하려면 우선 폰트를 찾아야합니다.

실습에서 자세히 알아보겠지만 게임에 따라 폰트가 저장되있는 방식이 다르고 게임기 펌웨어에 들어있는 내장 폰트를 사용하는 경우도 있습니다.(주로 PC게임이나 PSP에서 내장 폰트 사용)
또는 폰트가 압축되어있는 경우도 있습니다.

다음으로 인코딩이라는것에 대해 알아봅시다.

인코딩은 쉽게 말하면 폰트속의 각 글자마다 번호를 정해주는것을 뜻합니다.
이렇게 번호를 정해주는 이유는 컴퓨터는 2진수를 사용하며 영어나 한글등 사람이 사용하는 언어를 알아듣지 못합니다.

2진수는 0과 1로 모든 데이터를 표시하는 방법이고 각각의 0과 1을 비트라고 합니다.
비트가 4개 모이면 1 니블이 되고 1 니블은 0000(0) 부터 1111(15, 0xF) 총 16개까지 표현이 가능하고
비트가 8개 모이면 1 바이트가 되고 1 바이트는 00000000(0) 부터 11111111(255, 0xFF) 까지
총 256개까지 표현이 가능합니다.

우리들은 10진수를 사용하지만 이 10진수는 2의 배수가 아니므로 2진수를 표현하기에는 적합하지 않습니다.
따라서 8진수나 16진수를 사용하지만 주로 16진수를 사용합니다.

Tip. 숫자 앞에 0x가 붙어있으면 16진수라는 것을 의미합니다.

윈도우 XP의 내장 계산기

윈도우 7의 내장 계산기


16진수를 10진수로 변환하거나 10진수를 16진수로 변환하는건 윈도우에 내장된 계산기로도 가능합니다.
XP에서는 공학용, 7에서는 프로그래머용으로 설정하시면 확장된 메뉴가 나타납니다.

Hex는 16진수를 의미하고 Dec는 10진수 Oct는 8진수 Bin은 2진수입니다.

그래픽 데이터는 니블 단위로 계산이 되며(바이트 단위로 되는 경우도 있습니다.)
인코딩에서는 바이트 단위를 사용합니다.

[.] [] [] [] [] []와 같은 폰트 데이터가 있다면

01 = .
02 = 녕
03 = 세
04 = 안
05 = 요
06 = 하
 

이렇게 순서대로 1~6라는 번호를 붙여주고
[04] [02] [06] [03] [05] [01] 이렇게 입력해주면 [안녕하세요.] 가 출력됩니다.

인코딩에는 표준 인코딩이라는 것이 국가마다 존재합니다.
한국에서는 주로 [EUC-KR,949](뒤에 949는 인코딩 번호이며 중요한건 아닙니다.) 이라는 인코딩을 사용하고 일본에서는 [Shift-JIS,932]라는 인코딩을 사용합니다.

또한 전세계 표준으로 지정된 [유니코드,1200,1201,65001 등]도 있습니다.
유니코드에는 전 세계의 문자가 대부분 들어있어서 국가끼리 호환이 가능하며 최근에 출시되는 게임들은 유니코드를 사용하는 경우가 많습니다.

표준 인코딩을 사용하지 않는 경우 고유 인코딩을 사용하므로 [고유번호표]라는 것이 필요합니다.

여러가지가 있지만 우선 Shift-JIS에 대해 알아보겠습니다.

Shift-JIS는 일본에서 사용하는 표준 인코딩이며(줄여서 SJIS라고 합니다.)
SJIS 인코딩에는 한글 코드가 들어있지 않으므로 SJIS 인코딩을 사용하는 게임에서는 바로 한글의 출력이 불가능합니다.

하지만 SJIS에는 한자 영역이 있습니다.
이 한자 영역에 한글 코드를 넣어주고 한자 폰트를 한글 폰트로 교체한다면 비로소 한글의 출력이 가능해집니다.

SJIS의 한자영역은
889F=亜
88A0=唖
88A1=娃
88A2=阿
88A3=哀
88A4=愛
88A5=挨
88A6=姶
88A7=逢
.....
FC48=鵫
FC49=鶴
FC4A=鸙
FC4B=黑

0x889F-0xFC4B까지 넓은 한자영역을 제공합니다.(이론적으로는 0xFC4B-0x889F 까지 0x73AC개의 한자 영역이 있으나 중간에 사용하지 않는 코드도 있으므로 실제는 좀더 적습니다.)

이 SJIS영역에 한글 코드를 대입해보겠습니다.
889F=가
88A0=각
88A1=간
88A2=갇
88A3=갈
88A4=갉
88A5=갊
88A6=감
88A7=갑
88A8=값
88A9=갓
.....
94FC=힝

이렇게 한글 코드를 넣을 수가 있습니다.(SJIS를 사용하는 게임이라도 한자를 사용하지 않는 게임의 경우 폰트 확장이 필요하며 SJIS에 있는 한자 폰트가 모두 들어있지 않은 게임도 있습니다.)

그리고 한자 영역에 있는 폰트를 한글 폰트로 교체해주면 한글 출력이 가능해집니다.
(이는 실습강좌에서 자세히 알려드리겠습니다.)


게임 내의 데이터는 무작위로 배열되어 있는 것이 아닌 구조적으로 배열이 되어있습니다.
다만 게임 기기마다 정형화된 구조로 된 데이터가 있는 반면에 게임이 컴파일 되기 전의 소스 코드에서의 순으로 데이터가 들어있는 경우도 있습니다.

대표적으로 패미컴,슈퍼패미컴,N64,게임보이게임보이 어드밴스는 소스코드에서의 순서대로 데이터가 들어있어서 파일 자체를 분해하기에는 어려움이 있습니다.

PSP,NDS,Gamecube,Wii,PS2,PS3 등의 비교적 신형 게임는 데이터의 배열이 정형화되어있고(물론 게임마다 예외는 존재합니다.) 이럴 경우에는파일을 분해하여 다시 재배열할 수 있습니다.

그럼 다음은 한글화에 가장 중요한 요소인 대사에 대해 알아보겠습니다.

대사는 인코딩과 밀접한 관련이 있습니다.
위에서 말씀드린대로 대사 데이터는 사람이 사용하는 언어가 아닌 컴퓨터의 언어 즉 인코딩으로 저장이 되어있습니다.
따라서 대사를 추출하려면 게임이 사용하는 인코딩을 알아낼 수 있어야합니다.

대사 추출의 과정을 간략히 소개하자면 아래와 같습니다.
1. 게임에서 사용하는 인코딩을 알아낸다.
2. 대사 파일을 찾는다. 대사 파일이 압축되어있다면 압축 해제 코드를 만들거나 압축 툴을 사용한다.
3. 대사 파일 내의 포인터나 구조를 분석하고 그에 맞는 추출툴을 제작한다.
4. txt파일로 추출하여 번역가분에게 전달한다.


다음은 드디어 실습편입니다.
실습편에서는 닌텐도 DS 게임의 실제 폰트를 찾아보고 대사를 수정해보도록 하겠습니다.

읽어주셔서 감사합니다. 
//

[게임 한글화 강좌]제 1장 게임 한글화의 개요[게임 한글화 강좌]제 1장 게임 한글화의 개요

Posted at 2011. 3. 19. 10:00 | Posted in 이전 카테고리/한글화 강좌 시즌 1

본 강좌의 무단 스크랩을 금지합니다.
문의사항은 댓글 또는 mingi2007@gmail.com 으로 메일 주십시오.


안녕하세요.
Hangeru TeamMG게이버입니다.

게임 한글화에 관심이 있으시거나 한번 도전해보고 싶다 라는 생각이 있으신 분들을 위해 오늘부터 게임 한글화의 강좌를 제공하게 되었습니다.



우선 한글화의 종류와 한글화는 어떤 과정을 통해 이루어지는가에 대해 알아보겠습니다.

게임 한글화는 게임을 자국화하는 현지화 작업중 하나이며 크게 정식 한글화와 유저 한글화로 나누어집니다.

정식 한글화란?
정식 한글화는 게임의 제작사 또는 라이센스 및 게임의 소스 코드를 받아 정식으로 한글화하는 것을 말합니다.
이 경우 한글화 업체에서는 게임의 소스코드를 보유하며 게임 제작사의 지원을 받으므로 기술적인 한계가 거의 없고(기기상의 한계에 의한 경우는 제외) 또는 번거로운 분석 과정이 줄어들게 됩니다.
정식 한글화의 목적은 게임의 정식발매 및 판매이며 한글화 여부에 따라 게임 판매율은 큰 차이를 보입니다.
또한 외국어로 정식발매되었더라도 판매율이 높거나 게임 회사의 정책에 따라 차후에 패치 등으로 한글화가 이루어지거나 차기작을 한글화 발매하는 경우도 있습니다. (ex. 문명5의 정식 한글패치, 아이폰 게임등의 차후 한글화)

유저 한글화란?
유저 한글화는 게임 제작사가 아닌 게임 유저가 직접 한글화하는 것을 말합니다. (아마추어 한글화라고도 부릅니다.)
유저 한글화에는 여러가지 문제가 존재합니다.
첫번째로 정식 한글화와 다르게 게임 저작권 침해라는 문제가 있으며 이로 인해 배포되지 않거나 중단되는 한글패치도 있습니다.
두번째로는 게임에 따라 한글화가 어렵거나 불가능한 게임이 있습니다.
유저 한글화는 게임의 소스코드가 아닌 컴파일된 바이너리 형태의 게임을 수정하므로 일부 게임의 경우 난이도가 어렵다는 문제점이 있습니다.

그러나 유저 한글화는 정식 발매보다 번역/그래픽의 질(퀄리티)가 높거나 한글화 되지 않은 게임을 직접 한글화하거나 한글로 즐길 수 있게 된다는 점이 메리트라고 할 수 있습니다.

정식 한글화와 유저 한글화에는 여러가지 차이점이 있지만 게임을 한글로 바꾼다는 점은 같다고 할 수 있습니다.


게임 한글화에는 한글화를 위한 툴, 외국어 능력, 그래픽 수정 등 여러가지가 필요합니다.
한글화에 필요한 기본적인 것에 대해 알아보겠습니다.

근성과 노력
게임 한글화에 있어서 가장 중요한 것이라고 할 수 있습니다.
수천 문장의 대사 번역과 막대한 양의 그래픽 수정, 대사 파일의 추출 모두 근성이 필요한 작업입니다.

아래에 소개된 기술/지식 등은 없어도 노력하면 습득할 수 있는 것이나 노력을 하지 않는다면 게임 한글화를 마칠 수가 없습니다.

게임의 분석능력
게임 한글화에는 우선 게임 데이터를 추출/수정하기 위해 게임을 분석할 필요가 있습니다.
게임마다 데이터의 저장방식이나 인코딩, 파일 구조, 압축 방식 등이 모두 다르므로 이를 모두 강좌에서 설명하기에는 무리가 있습니다.
따라서 한글화를 위해서는 우선 게임의 분석 능력이 중요합니다.

게임의 분석에 대해서는 다음 장에서 소개하겠지만 우선 대사를 추출하고 재삽입이 가능하여야하며 게임 내에 한글 폰트를 삽입할 수 있어야하며 만약 폰트가 부족한 게임의 경우(ex. 포켓몬스터 ) 폰트의 갯수나 코드 방식을 바꾸는 폰트 확장 작업이 필요합니다.

만약 데이터가 압축되어있을 경우 압축을 해제하여 게임 내의 데이터를 수정할 수 있어야합니다.

위에서 말씀드린 대로 게임마다 구조가 다르므로 게임에 따라 오랜 시간이 걸리는 경우도 있고 빨리 끝나기도 하는 작업입니다.
하지만 게임의 구조 분석이 이루어지지 않으면 게임의 한글화는 진행이 불가능하므로 가장 중요한 작업이기도 합니다.

대사의 번역능력
두번째는 게임의 대사를 번역할 수 있는 능력입니다.
게임 대사는 한글화 할 게임에 따라 영어,일본어,중국어 등 다양한 언어로 되어있으므로 해당 게임에 맞는 언어를 알아야 게임을 번역하여 한글화할 수 있습니다.

게임의 번역 시에는 원본 게임의 내용을 최대한 전달할 수 있어야하며 적절한 현지화(고유 명사, 말장난 등의 현지화)도 필요합니다.

게임의 번역은 대사량에 따라 다르지만 게임 분석과 함께 가장 중요하며, 시간이 가장 오래 소요되고 힘든 작업이라고 할 수 있습니다.

게임 그래픽/사운드 수정능력
세번째는 그래픽, 사운드 등을 수정할 수 있어야합니다.
게임의 완벽한 한글화를 위해서는 게임 내의 외국어로 되어있는 그래픽(타이틀, 설명 그래픽 등)을 수정하여 한글로 수정하여야하며 대부분 음성 한글화는 하지 않지만 음성을 한글화할 필요가 있다면 음성 수정 능력도 필요합니다.



게임 한글화를 하는 이유에는 개인차가 있지만 크게 3가지 이유가 있습니다.

첫번째는 게임을 알리기 위한 경우입입니다.
재밌는 게임이 있지만 한글화가 되어있지 않은 경우 플레이하지 못하거나 않는 사람들이 있습니다.
이런 경우 게임을 한글화해서 게임을 알릴 수 있습니다.

두번째는 게임 한글화를 하면서 프로그래밍, 번역, 그래픽 편집 등의 실력을 늘리기 위한 경우입니다.
게임을 분석하다보면 여러가지 노하우가 생기고 번역 작업을 하다 보면 외국어 실력등이 늘게 됩니다.
또한 자신의 근성을 시험하거나 늘릴 수도 있습니다.
이와같이 자기 계발의 목적이 있습니다.

세번째는 게임 한글화 자체에 재미를 느껴서 취미로 하는 경우입니다.
게임 한글화에는 여러가지 작업을 하게 됩니다.
파일을 분석하고.. 압축을 풀고.. 그래픽을 수정하고..
이런 작업 자체에 흥미를 느끼는 경우가 있으며 필자의 경우에도 이 경우에 속합니다.

일단 게임 한글화에 대한 간략한 내용을 알아보았습니다.
다음 장에서는 게임을 분석하는 방법에 대해 알아보겠습니다.
//