메뉴 건너뛰기

조회 수 19029 추천 수 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 112538 47
꿀팁 [운영자 인증] ITCM 꿀팁정보 모음 (2017/3/16) 33 코코넛먹자 08.05 115508 68
공지 ITCM 내부 규정 안내 71 file ZardLuck 02.05 94706 89
공략 문명5 신난이도 문화승리 5분컷 공략 8 file silent_moon 05.16 18517 15
질문 스팀 게임 업데이트 막거나 롤백 하는 방법이 있나요? 2 rusiyan 10.19 18477 0
질문 단간론파 시리즈 순서가 있나요? 7 Eva_millene 03.07 18462 2
소개 ARK 카페 배포 한글화 V 0.1 (미감수 버전) 1 RuTel 03.25 18389 6
잡담 보더랜드2 나 해보려는데요 캐릭터 추천해주실수 있나요? 21 Hitomi.La 11.04 18378 4
잡담 니들이 안해주니 유저가 직접한다. 니어오토마타 성... 14 촉수금지 03.23 18333 13
질문 트위치 CAPTCHA i'm not a robot 해결 방법 아시는 분? 6 file rusiyan 03.03 18320 1
소개 나루토 질풍전 나루티밋 스톰3 레볼루션 한글 패치 ve... 3 file 코코넛먹자 08.30 18248 16
잡담 아이유 초고화질 사진들 14 큼앙 09.16 18050 7
잡담 VR야동이 정말 있군요.. 10 Nemesis 06.08 18026 12
공지 시디키즈, G2A등 리셀러 정보 글 작성 금지 매양 10.04 17865 29
잡담 레드 데드 온라인을 시작하기전에 알아두면 좋은 팁들... 1 greenhuman 10.06 17718 13
잡담 CJ헬로비전 인터넷때문에 진짜 암걸리겠네요 11 ScholarClassical 04.26 17709 4
잡담 에픽게임즈 런처 정말 이상하네요 17 Nemesis 04.08 17459 7
꿀팁 ASTRONEER 세이브파일 위치 2 file pizzicatoz 12.18 17370 1
잡담 한국어 음성패치 구글드라이브 다운 문제 있으신분 이... 4 사신권왕 05.18 17185 8
잡담 [후방주의] 사쿠라 시리즈에 대한 잡담 5 file MistyGhost 10.22 17182 19
잡담 스팀 온라인 우회등록이 막힌게 아닐까 싶네요 13 XTRA 08.16 17170 1
잡담 삼국지 게임들을 한번 모아봤습니다 30 file 이부프로펜 04.30 17159 27
잡담 둠 2016 한글 패치 1.0 배포 51 file 프기니 06.10 17145 98
잡담 네코파라 한글로 플레이 가능하긴 하네요. 13 file Hitomi.La 06.10 17130 5
잡담 경제 게임은 이만한 게임은 없는거 같습니다 ㅎㅎㅎ 27 file 위르노 12.02 17089 21
소개 진삼7 DLC포함 한국어화 모드 업데이트 (190202) 6 나무노래 02.02 17079 24
질문 토탈워 워해머 실행오류 9 사랑니여 02.06 17071 1
잡담 니어 오토마타 스팀판에 한글 파일이 있다고 하네요. 16 file Fluffy 03.19 17047 17
Board Pagination Prev 1 ... 5 6 7 8 9 10 11 12 13 14 ... 2765 Next
/ 2765
CLOSE

SEARCH

CLOSE