메뉴 www.fafan.kr
파판 >> XBOX정보
  • 로그인
  • [한글화 기초 강좌 1편] 자료표현의 방법 및 아키텍처에 따른 차이점
    작성자 : 꼼수 | 조회수 : 9331 (2012-05-03 오후 7:24:26)
    - 첨부파일
      sejong[3].jpeg
      P1020269.jpg



     
     
    안녕하세요 꼼수입니다.
     
    아주 기초적인 것 부터 한글화에 필요한 부분들을 포스팅 해 보겠습니다.
     
    오늘은 그 첫번째로 게임에서의 자료가 실제 파일에 어떤식으로 표현이 되고 그 자료들은 아키텍처에 따라서
     
    어떤 차이점이 있는지에 대해서 알아 보도록 하겠습니다.
     
    1. 자료표현의 단위
        컴퓨터로 자료를 표현한다는 것은 0,1의 조합인 비트로 데이터를 표현합니다. 모든 자료표현의 기초가 되는 단위이죠.
     
        이 비트의 연속성을 가지고 실제 프로그램에서 필요한 자료들을 저장하고 불러오고 합니다.
     
        이 비트를 어떤 조합으로 사용하느냐에 따라서 자료형이 결정이 됩니다. 여기서 전부를 다루지는 않고 여기서는
     
        사이즈별 구분만 설명하도록 하겠습니다.
     
        (1) Char (Byte)
             8 비트의 조합으로 이진수로는 10101010 의 형태로 표현이 가능합니다. 16진수로는 0x00 ~ 0xFF 까지 표현이 가능합니다.
     
             일반적으로 유니코드가 아닌 아스키 코드의 문자열을 표현할때 많이 사용합니다.
     
             프로그래밍에서는 char, unsigned char로 선언되면 1 바이트로 표현됩니다.
     
        (2) Short (2Bytes)
             16 비트의 조합으로 이진수로는 1010101010101010 의 형태로 표현이 가능합니다. 16진수로는 0x0000 ~ 0xFFFF까지 표현
     
             이 가능합니다.
     
             실제 프로그래밍에서는 unsigned short, short 형태로 선언되면 2 바이트 자료형이 선언됩니다.
     
        (3) Word (4Bytes)
             32 비트의 조합으로 이진수로는 1010101010101010 의 형태로 표현이 됩니다.  16진수로는 0x00000000 ~ 0xFFFFFFFF까지
     
             표현이 가능한 자료형입니다.
     
             프로그래밍에서는 int, unsigned int, unsigned long, long 이런형태로 선언되면 선언됩니다.
     
             일반적으로 Word는 컴퓨터에서 한번에 처리할 수 있는 양을 자료형으로 사용됩니다. 즉 32비트와 64비트에서의 Word
     
             크기는 다릅니다.  따라서 64비트형에서는 Word가 64비트가 됩니다.
     
         추가로 게임 한글화 시 필수로 2진수 및 16진수에 대해서는 필수로 익히셔야 합니다. 이건 구글링 및 계산기에서도 각진수로
         변환이 가능하니 익히시기 바랍니다.
     
    2. 컴퓨터 아키텍처
        XBOX360 및 PS3도 기본적으로는 컴퓨터와 동일합니다. 즉, 컴퓨터 아키텍처를 그대로 사용합니다.
     
        우리가 일반적으로 사용하는 PC (X86 계열이 많겠지요?)와 XBOX360 및 PS3는 PowerPC 아키텍처입니다.
     
        자료를 표현하는데 있어서 일관되게 사용되면 좋겠지만 컴퓨터 세계에서는 대부분 한쪽 파라다임에 반대되는 파라다임이
     
        거의 존재합니다. 아키텍처 부분도 예외는 아니어서 PC 에서는 자료표현을 Little Endian 형태로 표현합니다.
     
        불행히도 PowerPC계열에서는 Big Endian 형태를 기본으로 사용합니다.
     
        물론 특정 아키텍처가 Endian을 고정으로 사용하는 것은 아니지만 어쨌든 PS3/XBOX360에서는 Big Endian형태를
     
        사용합니다.
     
        여기까지 읽으시면 이게 뭔소리야 하시는 분들이 계실것 같습니다.
     
        제가 아키텍처를 설명드리기 이전에 비트와 데이터의 범위에 대해서 설명을 드린 이유가 있습니다.
     
        3번에서 실제 PC와 XBOX360의 파일을 비교한 그림으로 설명드리도록 하겠습니다.
     
    3. 엔디안의 표현방식
     
        기본적으로 자료표현의 방식에서 1 바이트로 이루어져 있는 바이트형에서는 엔디안간 차이점이 없습니다.
     
        바이트형 데이터를 하나를 선언하던 10개를 선언하던 메모리 및 파일에 저장되는 형태는 동일하게 저장된다는 것입니다.
     
        뭐 이런 당연한걸 설명하냐고 반문하시는 분이 계시겠지만..
     
        문제의 포인트는 바이트형이 아닌 2바이트, 4바이트 형태를 표현하는데 있어서 결정적인 아키텍처간 차이점이 존재합니다.
     
        아래 그림은 제가 처음으로 한글패치를 시도했던 피시판 매스이펙트 2 폰트가 패키징 된 파일과 XBOX360용 폰트가 패키징된
     
        파일을 프로그램을 통해서 비교한 그림입니다.  사용한 프로그램은 UltraCompare라는 프로그램으로 바이너리 파일 비교를
     
        해서 차이점을 알 수 있는 툴입니다.
       
        아래 그림은 왼쪽화면이 PC용 파일이고 오른쪽 그림이 XBOX360 파일입니다.
     
        먼저 왼쪽의 빨간 박스로 칠해져 있는 부분이 언리얼 패키지의 헤더를 구분하는 Magic Number입니다.
     
        언리얼 패키지의 파일들은 제일 시작부분의 4바이트(즉, Word형..)의 자료형을 가지고 값을 찾아 옵니다.
     
        Magic Number는 0x9e2a83c1 입니다.
     
        즉 4바이트를 표현할때 Big Endian에서는 0번지에 4바이트중 최상위 1바이트 부터 표현을 하게 됩니다.
     
        반면 Little Endian인 PC에서는 4바이트의 순서가 뒤집혀 있는 것을 확인 할 수 있습니다.
     
        이게 바로 Endian의 차이에 따른 자료표현의 차이입니다.!!!!
     
        두번째 파란박스로 되어 있는 부분인데 여기서는 자료의 성질은 중요하지 않고 박스친 부분이 2바이트 형태인 short형태라는
     
        것입니다. 똑같은 값인데 자료표현이 PC와 XBOX360의 표현이 다른 것을 확인 할 수 있습니다.
     
        세번째 보라색 박스인데 이부분은 PC와 XBOX360 부분이 동일한 것을 확인 할 수 있습니다. 이것은 앞서 설명드린
     
        데이터의 표현을 1바이트 형태의 자료형을 연속적으로 사용한 결과입니다.
     
        즉 PC와 XBOX360에서는 실제 게임상에서 완전히 같은 형태의 자료를 사용한다고 하더라도 아래 그림과 같이
     
        실제 메모리나 파일에 저장되는 형태는 다르다는 것을 숙지하시면 됩니다.
     
        첫번째 허접한 강의는 여기까지 하도록 하겠습니다.
     
        두서없이 진행되는 강의라 다음번엔 어떤걸 하게 될지 고민좀 해보겠습니다..
     


     
     
    ※ 2012.05.03 19:43분 다크아이리스에 의해 XBOX 정보게시판에 복사 되었습니다. 





    글쓰기 | 수정 | 삭제 | 목록   

    Lv.11 GTO_GTO (2012-05-03 21:16:27)
    봐도 도전해보고자하는 엄두가 안납니다..ㅜ.ㅜ 역시 꼼수님 대단하신듯..^^
    글 완전 정독하고 갑니다~ 추천드립니다~
    Lv.4 Rin.s (2012-05-03 21:28:16)
    프로그램쪽은 자세히 모르지만 어느정도는 이해하겠네요^^;
    좋은 정보 감사합니다! 추천해드리고 가요~
    Lv.6 +JinHO+ (2012-05-03 22:07:33)
    감사합니다. 앞으로의 강의도 기대하겠습니다 ^^
    Lv.3 인생은흡입 (2012-05-04 02:51:25)
    꼼따추. 꼼수님 따라다니며 추천하기 캠페인^^
    Lv.4 닉퀘 (2012-05-04 13:13:28)
    헉!!!! 정말 감사합니다.. !!
    Lv.3 제행무상 (2012-05-04 13:54:01)
    감사합니다. 저도 프로그램은 하나도 모르지만 예전 도스 세대이여서 본의아니게 16진수를

    보게 되었습니다. 세세한 설명을 해주시니 이해가 쉽게 되네요.

    좋은 강의 감사드립니다. 선댓글 후정독 중입니다.
    Lv.5 화니이 (2012-05-04 16:42:24)
    감사합니다 하나씩 따라해보기가 시작될듯 합니다.
    Lv.5 OutSiderS (2012-05-05 10:33:01)
    OutSiderS님이 (2012/05/05 21:48)에 삭제 하였습니다.
    Lv.5 OutSiderS (2012-05-05 10:50:38)
    감사합니다~ 캠페인 동참!
    Lv.5 배만보 (2012-05-05 11:36:46)
    좋은글 보고 갑니다^^ 캠페인 저도 동참!!ㅋ
    Lv.7 정도를지키는모 (2012-05-05 22:32:16)
    미력하지만 저도 배워서 활용해보고 싶네요 ^^ 강좌 감사드립니다
    Lv.4 스무살여행 (2012-05-05 23:34:19)
    정말 대단하네요. 봐도... 모르겠다능... ㅠㅠ
    Lv.2 LYP3908 (2012-05-06 02:41:04)
    좋은글 잘 보다 갑니다.. 역시 어렵구나!
    Lv.2 리틀코브라 (2012-05-06 21:11:47)
    예전에 도스게임 에디트하던 것이 생각나네요^^..
    좋은 강좌 부탁 드립니다!
    Lv.8 췌기라웃 (2012-05-07 12:47:12)
    좋은 글이네요. 역시 쿨하십니다 추천하구가요~
    Lv.3 미남이시네요 (2012-05-09 09:26:19)
    봐도 모르겠네요 ㅋㅋㅋ 근데 뭔가 대단한 느낌??
    Lv.3 마라톤2 (2012-05-11 13:21:55)
    좋은 정보 감사드립니다. ^_^
    Lv.6 산시인 (2012-05-20 02:07:27)
    정말 궁금했는데..^^
    Lv.3 라이징태클 (2012-05-20 19:11:25)
    저도 차근차근 공부하면서 한 번 도전해보고 싶습니다.
    Lv.7 Bittersweet1 (2012-05-22 18:09:02)
    강의 감사드립니다... +_+ ..
    Lv.3 초보입니다 (2012-06-15 11:38:51)
    저도 한번 배워보겠습니다. 잘은 모르지만 예전에 프로그램을 잠깐해서 내용은 이해하겠습니다 ^^
    앞으로도 도움되는 강좌 부탁드려용
    Lv.2 subin (2012-07-14 01:05:31)
    와;; 대단하시네요 좋은 정보 감사드립니다
    Lv.2 다크피쉬 (2012-09-21 19:58:16)
    워..진정한.. 능력자시네요.. 정말 감사요^^
    Lv.3 제노시카 (2012-09-30 20:08:57)
    와 대단하시다는 말밖에...
    Lv.6 애플잭 (2012-11-23 00:06:53)
    헐.. 이리 쉽게 설명을....
    너무 흥미롭습니다
    Lv.2 혀니 (2013-02-08 09:02:57)
    좋은정보감사합니다~
    대단하시네요~
    Lv.4 kg44 (2013-02-24 19:37:55)
    이제는 삼돌이쪽도 한글화가 시작되나 보군요..
    이런 분야는 실천을 하시는 분들 참 대단합니다.
    Lv.2 팝콘사랑 (2013-04-04 00:56:44)
    좋은정보 감사드립니다.
    자신과의 약속이 아니면 이런건 정말 못할꺼에요



    도배방지 : 0

    글쓰기 | 수정 | 삭제 | 목록   

     

    12345

    Copyright ⓒ FINALFANTASIA.COM All rights reserved.