메뉴 건너뛰기

조회 수 19107 추천 수 49 댓글 22
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 첨부
Extra Form

블로그에 작성하는 겸 정보가 될까 싶어서 남깁니다.

 

일반적으로 한글 패치를 제대로 제작하려면 바이너리 스크립트 데이터의 원문 길이를 반영하여 문장의 길이, 오프셋 등을 반영해주는 툴을 제작할 수 있어야합니다. 텍스트 정보를 담고 있는 간단한 바이너리 데이터 예제로, 제가 한글화 작업하면서 제작한 펀치클럽 스크립트 소스를 살펴보도록 하죠. 스크립트 툴을 직접 제작하실 분들은 본 강좌와 첨부 파일의 소스를 참고하시기 바랍니다.

 

펀치 클럽의 언어 데이터는 *.-9 파일에 포함되어 있습니다. 다행히 다양한 언어를 하나의 포맷에 담지 않고 언어별로 파일이 따로 존재하며, 구조가 간단한 편이라 강좌에 적합할 것 같아서 선정했습니다.

 

다른 언어 데이터와 비교해보자면, 0xA9d0까지 헤더 정보가 같고, 0xA9d0의 BF 08 00 00 은 문장 개수인 2239줄을 의미합니다.

이 값이 문장의 개수를 반영할 것이다라는 것은.. 누가 가르쳐 주는 것이 아니라 한글 패치를 많이 제작한 경험을 바탕으로 쌓이게 되는 감각입니다. 이쯤되면 카운팅을 반영할 값이 분명히 존재할 것이라는 사실을 추정하여 찾아내는 것은 결국 수많은 데이터를 분석해봐야 가능한 일입니다. 분석이 힘들다면 quickbms 기초 강좌부터 다시 들으시기 바랍니다. http://blog.naver.com/physics1114/220348616652

 

K-046.png

 

분석에 익숙하다면 이제 데이터를 간단히 살펴보도록 하죠. 그 다음은 각 문장 길이 값 + UTF-8 문장, 문장이 종료되면 00 null로 채우고,

다음 문장 길이 값이 등장합니다. 이때 null은 반드시 다음 문장 길이 값이 4의 배수 번지에 위치하도록 해주는 데이터 placeholder의 역할입니다. 아래 사진의 HP는 2바이트 이므로 null인 00가 2번, エネルギー는 길이가 0xF = 15이므로 16 - 15 = 1 즉, 00이 한 번만 사용됩니다. 일반적으로 한글화 스크립트 툴 제작할 때 반드시 고려해야할 중요한 요소입니다.

 

K-043.png

 

여기서 한 가지 짚고 넘어가야할 점은 특이하게도 중간에 아무런 텍스트 정보를 담고 있지 않은 null 0x00 00 00 00도 있다는 것입니다.

다음 사진의 회색 음영처럼 말이죠.

 

K-044.png

 

이런 예외를 고려하여 스크립트를 추출해보도록 하겠습니다.

7번째 줄 - FileSetPos를 이용하여 파일을 연다음 0xA9d0를 시작지점(0)으로 지정합니다.

8번째 줄 - 0xA9d0로 부터 4바이트 만큼 BF 08 00 00를 읽고 이를 2239로 변환합니다.

9번째 줄 - $Text라는 새로운 변수를 정의합니다. 33번째 줄에서 txt로 저장할 변수의 이름을 지정하는 것입니다.

 

15 ~ 16번째 줄 - 4바이트 만큼 문장 길이 정보를 읽어서 $len으로 저장합니다.

만일 이 때 $len = 0 인 예외적인 경우(회색 음영)는 $Text를 0x00000000로 지정하고, 한 줄 띄어쓰는 명령(@CRLF)을 붙입니다.

 

18 ~ 22번째 줄 - 예외가 아닌 일반적인 경우, 즉 $len 값이 0 이 아닌 경우..

문장 길이 만큼 바이트를 읽고 이 때 0x0A등의 구분 값을 치환하는 StringRegExpReplace를 사용한 다음 $Text에 저장하고 한 줄 띄어쓰는 명령(@CRLF)을 붙입니다.

 

23 ~ 28번째 줄 - 문장 길이에 따라서 다음 문장 길이 값이 시작 될 위치를 계산하여주는 식입니다. 수식은 당연히 분석하면서 직접 만들어줘야하는 부분입니다.

 

K-040.png

 

결과물 예상했던 2239줄로 추출되었습니다.

K-047.png

 

이제 다시 리팩하는 import툴을 제작해보겠습니다.

27번째 줄 - 먼저 문장 개수값을 포함하여 0xA9d4까지 파일을 읽고 이를 새로운 $New Header로 지정합니다.

K-041.png


34 ~ 44번째 줄 - txt를 읽어 예외적인 경우 0x00000000을 그대로 반영하여 $Newtext에 바이너리 값으로 저장하고, 그렇지 않을 경우

StringToBinary함수를 사용하여 txt의 UTF-8을 바이너리 값으로 변경합니다. 4를 사용하면 UTF-8을 변환해줍니다.

Shift-JIS는 오토잇의 경우 복잡하므로 강좌에서 다루지 않습니다.

 

46~53번째 줄은 앞서 언급했던 null을 몇 개나 더해줄 것이냐를 계산하는 식입니다. 제가 작성한 것이므로 더 간단한 방법이 있다면 그 방법을 사용하시면 됩니다. 일반적으로 정해진 규칙은 없고 본인이 어떻게 풀어서 작성할지를 고민하시면 됩니다.

K-042.png

 

마지막으로 57 ~ 67번째 줄은 새로 생성할 $Newfile에 새로운 헤더와 바이너리 데이터로 변환 시킨 $Newtext

그리고 원본에서 붙여줘야할 꼬리 부분인 $Tail값을 조합하여 새로운 바이너리 데이터를 생성하여 저장하는 과정입니다.

이렇게 하면 새로운 바이너리 데이터가 생성됩니다.

 

K-048.png

 

혹시 프로그래밍 따로 배워서 그런 것 아니냐고 오해하실 수도 있지만, 저는 물리학이 전공이라 따로 프로그래밍을 배운적이 없습니다.

한글화를 처음 시작한지 벌써 4년이 되어가는데.. "서당개 3년이면 풍월을 읊는다"고 합니다.

고로 여러분도 할 수 있습니다. 어떤가요 참 쉽죠? 이상으로 기초편이었습니다.

 

easy.jpg

글쓴이 님의 최신글
  1. 2019-08-01 22:00 이야기 > 디스아너드 브릭모어의 마녀들 번역가 모집 *8
  2. 2019-02-02 13:02 이야기 > 니노쿠니2 한글 패치 1.0 배포 *36
  3. 2019-02-01 23:04 이야기 > 히트맨 2016 한글 패치 1.0 배포 *36
  4. 2018-09-09 21:55 이야기 > 게이밍 노트북 어떤게 괜찮을까요? *14
  5. 2018-06-30 14:08 이야기 > 회사 기숙사.. 게임 라이프 접어야할 각인지.. *39


List of Articles
분류 제목 게임 글쓴이 날짜 조회 추천
공지 ITCM <스팀그룹> 비공개 전환 안내 및 초대요청 2334 ITCM 08.24 114298 47
꿀팁 [운영자 인증] ITCM 꿀팁정보 모음 (2017/3/16) 33 코코넛먹자 08.05 116856 68
공지 ITCM 내부 규정 안내 71 file ZardLuck 02.05 96145 89
잡담 나겜에 파견나와 근무하고 있는 썬업이 현 상황에 대... 썬업 07.11 697 51
잡담 이제 57살이 되었네요. 14 반백게이머 06.14 1325 50
소개 유니티 우리말화 도구(UnityL10nTool; 베타) 배포 13 file 최낙원 11.08 6865 50
잡담 니노쿠니2 한글화 테스트 결과입니다 17 file 프기니 03.25 1265 50
잡담 한패 보람이 느껴지네요. 4 file RuTel 10.21 839 50
소개 Distrust 한글화 완료되었네요. 28 file 트림 10.01 2791 50
잡담 The Escapists 2 도 한글화 완료했습니다 18 시리시안 09.01 8832 50
잡담 스팀 할인 결산 및 도전과제 이벤트 결산 18 file 뫼한 07.06 675 50
잡담 스팀 게임 7K 달성했어요~ 50 file amossong 05.03 841 50
소개 Hue 한글 패치 1.0 배포 23 file Fluffy 04.02 2530 50
소개 솔트 앤 생츄어리 한국어판을 출시하였습니다. 15 file 미리칸 03.10 882 50
잡담 지금까지 제가 나눔한 게임중 도과 100% 달성한 게임... 88 뫼한 12.27 2165 50
소개 12월 교보eBook의 선물 - 코너스톤 전집 총 40권 22 file 아레스다 12.13 971 50
소개 ☞ 뉴 ITCM 소감 이벤트 [~7월 10일까지] 99 file ZardLuck 07.05 2223 50
일상 회사가 망했으요... 39 뫼한 06.30 956 50
소개 아틀리에 토토리, 한글패치 배포 36 file RuTel 06.09 27485 49
소개 Celeste (셀레스트) 한글 패치 배포 18 file LSW 02.07 3107 49
소개 Tokyo 42 (도쿄 42) 한글 패치 배포 6 file 삼각식빵 01.04 1329 49
잡담 섣불리 한패를 배포했나란 생각이 좀 드는군요. 17 RuTel 08.26 2075 49
잡담 60초! 한글 패치 11번째 업데이트 버전 배포합니다. 17 프기니 07.04 8924 49
잡담 한글화의 현주소 20 나무노래 05.02 1284 49
잡담 마지막이 될지도 모르는(?) 한글화 스크립트 툴 제작 ... 29 file 프기니 03.15 3488 49
잡담 한글화 스크립트 툴 제작 방법 - 기초편 22 file 프기니 03.08 19107 49
잡담 라이브러리 2K 달성했습니다 :D 36 file 코코넛먹자 03.06 528 49
잡담 SG 부계정 사용하시면 안됩니다 60 file 논현동토토로 02.14 959 49
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 11 ... 2767 Next
/ 2767
CLOSE

SEARCH

CLOSE