기동전희(아터리기어) 패치 메뉴얼

본 메뉴얼은 갤럭시S 22기준으로 작성되었습니다.

1. 스토어에서 '기계번역 패치 연구소'를 설치합니다. 

  • 패치를 실행하기전,
    • 게임을 실행하여 최신 리소스 다운로드를 마칩니다.
    • 게임 프로세스를 종료합니다.

2. 패치 목록에서 機動戰姬를 선택합니다.


3. 패치를 적용할 패키지 국가버전을 선택하고, 다운로드 받을 파일 형식을 선택한 후에 하단의 패치/원본 적용 버튼을 누릅니다.


4. (중요)폴더 지정 첫 화면에서 파일 경로가 다음과 같은지 확인합니다.

  • 중섭 : android/data/Go.OtakuGames.ArteryGear.bilibili/files/ag_game
  • 일섭 : android/data/com.bilibilijp.arterygear/files/ag_game
  • 대만섭 : android/data/com.komoe.arterygear/files/ag_game
  • 글로벌 : android/data/com.bilibilien.arterygear/files/ag_game

5. 위 경로가 보이지 않는다면 원하는 경로의 폴더를 선택합니다. 

  • Android 10이하버전은 위 경로로 직접 찾아갑니다.
  • 앱플레이어의 경우 storage/emulated/0/android/data/ 에서 선택하여 찾아갑니다.
  • 그 외의 경우, 파일 다운로드 받을 폴더 선택 후 다운로드를 완료하고 8번을 진행합니다.

6. 이 폴더 사용 버튼을 누른 후, 파일 액세스 권한을 부여합니다.


7. 화면이 전환된 후, Complete가 보이면 적용이 완료됩니다.


8. 5번을 통해 다른 경로를 선택한 경우, 다운로드 받은 파일들을 게임 폴더에 옮겨 복사합니다.

  • 안드로이드의 경우,
    • [CX 파일탐색기] 또는 [X-plore] 와 같이 앱 폴더 접근 권한이 있는 탐색기를 이용,
    • android/data/게임 패키지/files/ag_game 폴더에 복사합니다.

9. 게임을 실행하여 한글이 나오는 지 확인합니다.




은란지검(소드오브콘발라리아) 패치 메뉴얼

본 메뉴얼은 갤럭시S 22기준으로 작성되었습니다.

1. 스토어에서 '기계번역 패치 연구소'를 설치합니다. 

  • 패치를 실행하기전,
    • 게임을 실행하여 최신 리소스 다운로드를 마칩니다.
    • 게임 프로세스를 종료합니다.

2. 패치 목록에서 銀蘭之劍을 선택합니다.


3. 하단의 패치/원본 적용 버튼을 누릅니다.


4. (중요) 폴더 지정 첫 화면에서 파일 경로가 다음과 같은지 확인합니다.
(android/data/com.xd.ssrpgtwtap/files/assets)


5. 위 경로가 보이지 않는다면 원하는 경로의 폴더를 선택합니다. 

  • Android 10이하버전의 경우,
    android/data/com.xd.ssrpgtwtap/files/assets 으로 직접 찾아갑니다.
  • 앱플레이어의 경우,
    storage/emulated/0/android/data/com.xd.ssrpgtwtap/files/assets
  • 그 외의 경우, 파일 다운로드 받을 폴더 선택 후 다운로드를 완료하고 8번을 진행합니다.

6. 이 폴더 사용 버튼을 누른 후, 파일 액세스 권한을 부여합니다.


7. 화면이 전환된 후, Complete가 보이면 적용이 완료됩니다.

8. 5번을 통해 다른 경로를 선택한 경우, 다운로드 받은 파일 (db_lang.bytes)를 다음의 폴더에 옮겨 복사합니다.

  • 안드로이드의 경우,
    • [CX 파일탐색기] 또는 [X-plore] 와 같이 앱 폴더 접근 권한이 있는 탐색기를 이용,
    • android/data/com.xd.ssrpgtwtap/files/assets 폴더에 복사합니다.
  • PC의 경우,
    • SwordOfConvallaria/SoCLauncher/SwordOfConvallaria/assets 폴더에 복사합니다.

9. 게임을 실행하여 한글이 나오는 지 확인합니다.




중장전희 L10N 파일 분석

* 본 포스트는 네이버 블로그에 2020-03-30에 작성한 글입니다.

1. 파일 개요

files/Android/language/*.ab : L10N 유니티 애셋번들 파일
.ab 파일 언패킹 후,
*_storyJsonDatas.txt  : 게임 내의 스토리 모드에서 사용되는 텍스트 스크립트 모음
*_LanguageData.txt : 게임 내 UI등에 사용되는 텍스트 모음

2-1. SC_storyJsonDatas.txt 파일분석 (JsonParser 포맷)

a. 0x000000 ~ 0x000003 : 파일 이름 길이

b. 0x000004 ~ 0x000017 : 파일 이름

c. 0x000018 ~ 0x00001B : 앞으로 읽어들일 바이트 수

d ~ g : JsonParser 스트림 포맷

d.0x00001C ~ 0x000031 : 파악못함.

e. 0x000032 ~ : 앞으로 읽어들일 Json 본문 바이트 수

: 하나의 바이트 값이 0x80을 넘어서면 다음 바이트에 1을 추가하여 바이트를 늘려감.
: 0x80보다 작은 값이 나오면 read 멈춤.
: 1 -> 0x01 -> 0x01, 128 -> 0x80 -> 0x80 0x01, 256 -> 0x00 0x01 -> 0x80 0x02
: abcd에 대해
첫바이트 -> (abcd % 0x80) + (abcd > 0x7F ? 0x80 : 0x00)
다음바이트 -> ((abcd % (0x80)^2) / 0x80) + ((abcd / 0x80) > 0x7F ? 0x80 : 0x00)
N바이트 -> ((abcd % (0x80)^N) / 0x80^(N-1)) + ((abcd / 0x80^(N-1)) > 0x7F ? 0x80 : 0x00)

f.0x000034 ~ : Json 본문

{
    "key1" : "value1",
    ...
    "keyN" : "valueN"
}





g. 0x076052 : 0x0B(파일 끝)( 이후 바이트를 완전 버림 : 앞서 c. 에서 계산되는 바이트에서 빠져야됨.)


2-2. SC_LanguageData.txt 파일분석

a. 0x000000 ~ 0x000003 : 파일 이름 길이

b ~ f : Dictionary<int, string> 스트림 포맷

b. 0x000004 ~ 0x000013 : 파일 이름

c. 0x000014 ~ 0x000017 : 앞으로 읽어들일 바이트 수


d. 0x000018 ~ 0x000559 : 메타 데이터

e. 0x0002BD ~ 0x0002C0, 0x000375 ~ 0x000378 : 텍스트 개수

f. 이후 텍스트 데이터

* 텍스트 데이터 분석

4 바이트 : 텍스트 Key Id

1 바이트 : 텍스트 유무 코드 (유 : 0x06, 무 : 0x09)

4 바이트 : 체크섬 코드 A

(optional : 텍스트 유) 1~ 바이트 : 텍스트 바이트 수 2-1.e 항목 참고

(optional : 텍스트 유) 1~ 바이트 : 텍스트 Value (UTF-8)

1바이트 : 다음 텍스트 유무 코드 (유 : 0x01, 무 : 0x0B (-> 파일끝))

4바이트 : 체크섬 코드 B (텍스트 유 : A+B = 0xffffffff)

4바이트 : End 코드 (항상 0xFC 0xFF 0xFF 0xFF)



3. 결론

텍스트 키와 값을 읽어들일 수 있고 또한 분석된 결과를 토대로 새로운 파일을 생성할 수 있게 되었다. 한글 텍스트와 중국어 텍스트를 합쳐서 중국어 리소스에 엎어 씌게 되면 결과적으로 해당되는 텍스트 키에 맞게 한글 또는 중국어가 나오게 할 수 있다는 말.

한글 텍스트는 다음 버전부터 제공되지 않고 업데이트 되지도 않을 테니, 새로운 패치 내용에 맞는 텍스트를 한글로 적용하기 위해서는 누군가의 번역데이터가 필요할 듯. 시트를 생성하고 시트 값을 바탕으로 텍스트 데이터를 만들 수 있는 프로그램을 제작하여야 겠지만..

귀찮기도 하고 배포한다고 사용할 유저수도 적고 뭐 ㅋ


4. 결과



5. 비고

중섭기준인데, 텍스트 키값은 변경하지 않았을 확률이 높으니 대만섭에서도 잘 돌지 않을까?

암튼 #중장전희 재밌음.