메뉴 건너뛰기

조회 수 19044 추천 수 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

  • profile
    위르노 2017.03.08 15:22

    음~ 이런정보는 언제나(?) 제겐 유용합니다

  • profile
    프기니 2017.03.08 15:23
    이상하게 파일 첨부했는데 안보이네요.. 소스 확인하시려면 제 블로그 첨부파일 받으시면 됩니다.
    http://blog.naver.com/physics1114/220953045959
  • profile

    cartoon-man-looking-at-computer-monitor-meme_30_paused.jpg

     

    무슨 소린지 모르니깐 그냥 가만히 있어야겠당

  • profile
    프기니 2017.03.08 15:26

    함수는 https://www.autoitscript.com/autoit3/docs/functions/BinaryToString.htm 이런식으로 참고하시면 툴 제작하는데 도움이 됩니다. :) 나머지 로직은 고안해서 직접 작성해야합니다.

  • profile
    Medusa 2017.03.08 15:37
    정말 좋은 정보인데 전 무슨소리하는건지 알아듣지 못한다는게 슬프네요
  • profile
    나무노래 2017.03.08 15:41

    한국어화 하는 사람들 재촉하고, 욕하고 하는 사람(?)들은

     

    이런 강좌 들이밀면서

    그럼 직접 제작해주세요 하면 다들 흔적도 없이 보이지도 않고,

    번역 13만줄 들이밀면서

    그럼 이거라도 해주실래요 하면 역시 어딘가로 쏙 사라지는

     

    양심에 화인 맞은 사람들이 많은 근래 현실이 안타깝네요

  • profile
    프기니 2017.03.09 01:30
    오늘도 한패 빨리 나왔으면 좋겠다고, 현기증 난다는 분이 계시네요. 흠..
  • profile
    아레스다 2017.03.08 15:46

    차~~암 쉽죠? ㅠ_ㅜ

    시간과 노력을 빼면 쉬울지도 모르겠네요.

  • profile
    Nemesis 2017.03.08 16:07
    헉.. 좋은 정보 감사드립니다...

    예전에 혼자서 공부해보려다가 머리속에서 틀이 잡히질 않아 어려워서 포기했었는데 이렇게 보니 도전욕구가 생기네요.
  • profile
    NovE 2017.03.08 16:20

    후우... 예전 프로그래밍 기억이 새록새록합니다... 이제는 프로그래머가 아니지만... 홋홋! 참 쉽죠잉!!.. 이 인상깊습니다. 하핫...

  • profile
    면세곰 2017.03.08 16:23

    정말 좋은 정보인데

    알아듣지 못하는...

  • profile
    실기 2017.03.08 16:31

    S9Ydgg5.gif

  • profile
    kerakera 2017.03.08 16:35

    좋은 정보인데 말 그대로 생초보한테는 별 도움이 안되는 글 같네요.

    ('코딩의 코자'도 모르는 생초보...)

    그냥 본인께서 아시는 지식 중 그나마 쉬운 지식을 풀어 놓았다는 정도 밖에는...

  • profile
    프기니 2017.03.08 17:52
    코딩이 아니라 로직을 보시면 되는데.. 음.. ㅠㅠ
  • profile
    DoubleSiot 2017.03.08 17:57
    굳이 저 언어를 사용하신 이유가 잇으신건가요?

    장단점이라던가 그런거요
  • profile
    프기니 2017.03.08 18:06

    가장 큰 이유는 해외에 공개된 번역툴 소스들이 오토잇으로 제작된 것이 많습니다. 이걸보고 다양한 경우에 응용해서 제작할 수 있죠. 요지는 참고할 예제 소스들이 많다는 겁니다. 그래서 저도 오토잇으로 시작했고.. 따로 툴이 없는 경우 대부분 직접 제작해서 사용하고 있습니다.

  • profile
    DoubleSiot 2017.03.08 16:46
    와 완전 감사합니다
    이번에 1인 한글화 해보려고 이리저리 알아보는 중인데 고마운 자료네요
  • profile
    은월향 2017.03.08 17:10

    어질어질에 대한 이미지 검색결과

  • profile
    디비딥 2017.03.08 17:47

    확장자가 au3인걸 찾아보니, autoit이라는 스크립트언어용 화일이네요.

    autoit이라는 언어를 배우셔서 작성하시나보군요.

    c도 아니고 새로운 언어를 배우셔서 하신거라니...엄지척!

  • profile
    프기니 2017.03.08 18:03
    언어를 배웠다기 보다는 생각한 로직을 표현할 수단을 오토잇으로 정한 것입니다. 필요하신 분들께는 잘 훈련하시면 한글화하는데 도움이 되리라고 봅니다.
  • profile
    Rs 2017.03.08 21:49

    어릴때 pctools로 게임 해킹하고 프로그램 한글로 바꿔보고 했는데 이젠 너무 오래되서 무슨 소린지도 모르겠네요. ㅎㅎ;

     

     

  • profile
    그리니츠 2017.03.08 23:52

    흐엉..=_=a;학교 졸업과제 할때나 공부하던;;어려운 이야기들이군요..지금은 외계어처럼보이네요...

     

    ㅎㅎ 여튼...이만한 수고와 노력을 해주시는 프기니님 항상 감사하고있습니다 ^^=b


List of Articles
분류 제목 게임 글쓴이 날짜 조회 추천
공지 ITCM <스팀그룹> 비공개 전환 안내 및 초대요청 2334 ITCM 08.24 113862 47
꿀팁 [운영자 인증] ITCM 꿀팁정보 모음 (2017/3/16) 33 코코넛먹자 08.05 116480 68
공지 ITCM 내부 규정 안내 71 file ZardLuck 02.05 95770 89
잡담 힠힠 사씀미다. 7 AmSae 01.21 920 8
잡담 힝~ 물론... 안될 걸 알고는 있었지만... 6 Raingray 01.12 980 4
잡담 힝... 영화 공짜로 시사회 갈수 있었는데 아쉽네요 5 Mordekai 12.11 823 5
잡담 힝.. 엑스컴2 나왔는데 선방인가요? ㅎㄷㄷㄷ 5 file 페트로니우스 10.18 903 3
잡담 힝 ~ 쇼핑몰에서 뭐좀 구매해볼까 하고 구경좀... 8 PumpkinHead 07.11 961 2
질문 힛 스니네츄어.. 하시는분 혹시 계신가요? 1 midoram 01.22 675 1
잡담 힘찬 하루 시작하세요~~~ 2 file Mordekai 11.14 836 6
잡담 힘쌔고 강한 아침! 내 이름을 물으신다면 랜블! 22 랜박블블3개 10.26 1210 9
잡담 힘쌔고 강한 아침! 내 이름을 말하신다면 블블! 15 랜박블블3개 02.10 987 13
잡담 힘듭니다... 힘들군요. 2 file Jocho 12.28 887 5
잡담 힘들죠 오늘도 잔인한 세상이 너를 비웃고.. 14 Toph 02.12 2126 8
잡담 힘들었지만...지구를 지켜냈습니다!! 10 file 11.07 790 14
잡담 힘들게 댓글 썼는데 글을 왜 지웁니까 ㅠ_ㅜ 36 file 아레스다 10.31 724 43
잡담 힘들게 그리고 있습니다. 4화에요 ㅋ 4 최좀비 07.31 692 7
일상 힘든하루가 지나갔네요 5 무작위 06.11 785 3
잡담 힘든 일은 끝났지만 .. 13 랜박블블3개 03.31 832 11
잡담 힘든 부분이 있습니다 4 일원 05.06 1015 9
스샷 힘드네요.. 2 file 루나코 07.13 830 1
잡담 힘내라. 그럴 수도 있지. 기운 내. 1 리베메론 06.18 863 2
잡담 힘겹게 돌리는중인데요 2 file 옹공 07.31 767 0
잡담 힘겹게 2처넌 질렀습니다 1 Souless 09.09 687 1
잡담 힐링이 필요해요- 2 리베메론 05.10 746 1
잡담 힐링이 필요합니다.... 4 file Fiello 05.29 748 5
잡담 힐링이 필요한 4시 7 file 위르노 01.19 838 3
잡담 힐링게임이네요... 5 file Nemesis 10.22 1214 9
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 2765 Next
/ 2765
CLOSE

SEARCH

CLOSE