한글패치 관련 짧은 글들

한글화/에셋 수정에 사용되는 툴

Snowyegret 2021. 7. 9. 20:57

1. AssetStudio

2. UtinyRipper

3. UABE/UAAE/UABEA

4. UnityEX

5. Parser_ULS

6. Parser_UMDcpp2txt

7. UnityText

8. dnSpyEx

9. ILSpy+Reflexil

10. HxD / 010Editor / wxMEdit

11. Everything

 

 

 

 

1. AssetStudio

( https://github.com/Perfare/AssetStudio/releases - 현재 프로젝트가 중단 된 것으로 보인다.)

(* 비공식 후속 툴: https://github.com/aelurum/AssetStudio )

 

게임 폴더를 프로그램에 드래그&드랍하면 된다.

이미지/대사 에셋을 쉽게 확인 가능하며, 파일 타입, PathID, 어느 파일에 들어있는지도 확인 가능하다.

단, export만 가능하며 import는 지원하지 않을 예정인 것 같다.

유니티 겜을 살펴볼 때 제일 먼저 사용하는 툴이다.

 

 

 

2. UnityRipper

( https://sourceforge.net/projects/utinyripper/files/ )

게임폴더를 드래그하면 파일이 로드되고, export를 하면 에셋이 UnityProject에서 사용 가능한 형태로 export된다.

UABE나 UnityEX와는 확연히 다른 형태이다.

유니티를 이용해 게임을 만들 때의 그 프로젝트 상태 그대로 뽑아준다고 보면 된다.

import 기능은 당연히 없다.

 

 

 

3. UABE/UAAE/UABEA

UABE ( https://github.com/DerPopo/UABE/releases )

UAAE ( https://github.com/Igor55x/UAAE/releases )

UABEA ( https://github.com/nesrak1/UABEA/releases )

에셋의 타입/PathID을 통해 쉽게 수정하고 하는 것을 찾을 수 있으며,

Export Raw / Export Dump / Plugins 옵션을 통해 에셋의 쉬운 export가 가능하다.

또한, import도 각각 지원하고 있으므로 한글화의 경우 사실상 Unity와 UABE만 있어도 가능하다.

mod installer를 만들 수 있으며, 번들의 압축/압축해제를 지원한다.

UABE가 U3.4.0f5~2019.2.0f1까지만을 지원하니, 이후에 만들어진 게임이라면 UAAE나 UABEA를 사용하자.

사실상 이 툴이 핵심이다. AssetStudio로 간략하게 살펴보고, UABEA로 수정한다.

MonoBehaviour는 Export Dump로, TextAsset은 Plugins - export .txt로 내보낸다.

 

 

 

4. UnityEX

( https://forum.zoneofgames.ru/topic/36240-unityex/ )

texture파일과 monobehaviour파일 export/import에 매우 용이하다.

특이점으로는 bat파일을 만들어서 대량 파일을 처리하기 쉽다는 것인데,

bat파일을 통해서는 가능하나 GUI 상에서 지원되지 않는 기능도 몇몇 있다.

이전 늑대와 향신료 VR 2 작업하며 씨름할 때 headerbundle compress 관련하여 몇가지 테스트를 했었다.

지원하는 기능이 정말 많으나, Unity 2020 이상 버전에서 빌드된 게임의 경우 무료 버전에선 사용불가다.

UnityEX를 사용하면 작업이 매우 편리해지는 것은 사실이지만

지금은 너무 비싸져버렸기 때문에 추천하지 않는다.

 

 

 

5. Parser_ULS

( https://disk.yandex.ru/d/Lz3SBVVFU7OJdg )

Monobehaviour 파일 내의 대사 추출을 위한 툴. bat파일을 만들어서 사용한다.

지정된 옵션에 따라 파싱을 해준다.

ex) for %%a in (files\*.114) do Parser_ULS.exe -e "%%a" -o $2C -st 4

ex) for %%a in (files\*.114) do Parser_ULS.exe -i "%%a" -o $2C -st 4

-o 이후 행에 대한 오프셋과 -d범위, -st(텍스트 테이블) 등등의 옵션을 지정해 줄 수 있다는데

문제는 러시아어로 써져있어서 세부적인 내용을 모르겠다.

암특 늑향 번역할 때는 저 옵션으로 추출했었고, import시 오류가 있어서 쓰지 않았던 거로 기억한다.

 

 

 

6. Parser_UMDcpp2txt

( https://disk.yandex.ru/d/RnWCiP4j1umm3g )

global-metadata.dat 텍스트 export 및 import를 위한 파서.

il2cpp 방식으로 컴파일된 게임의 경우, 하드코딩된 스트링이 global-metadata.dat 파일에 들어간다.

일반적으론 이 스트링 리터럴을 수정하기 어렵지만, 쉽게 수정할 수 있게 해주는 툴이다.

Metadata 폴더에 global-metadata.dat 파일을 넣고 export.bat을 실행한다.

그 다음 추출되어 나온 txt파일 내 수정할 부분을 수정하고, import.bat을 실행시키면 끝.

단, 대사만 추출되는 게 아닌 모든 스트링 리터럴이 추출되기에 주의해가며 수정해야 한다.

잘못된 부분을 수정할 경우 게임이 먹통되거나 이상해진다.

대사 길이 제한은 없다. 원하는 대로 수정 가능.

 

 

 

7. UnityText2

( https://yadi.sk/d/BPX07VulskWJ5 )

추출한 Monobehaviour 파일 내 대사 검색 및 수정에 용이하다.

좌측 하단 C를 눌러 어느 문자 범위 내에서 대사를 검색할지 지정한 후,

파일을 불러오면 위와 같이 보이게 된다.

왼쪽 Options를 적절히 활용하면 알맞은 형식의 csv 파일로 export를 하여 손쉬운 수정/삽입이 가능하다.

 

Search Options

-Search Depth (하위 디렉토리의 수)

-Max File Size (최대 파일 크기 -> #File Size Limit#이 뜨며 대사가 나타나지 않을 때 사용)

 

Scan Options

-Big Endian (바이트 순서)

-Substring Length (x번째 부분마다 문자열 검사)

-Frequency (substring Length 관련, 문자열 검사에 사용되는 최대 단계 값.)

-Min String Size (최소 문자열 크기 -> 이보다 작은 문자열은 검사 x. 바이트 기준)

-Max String Size (최대 문자열 크기 -> 이보다 큰 문자열은 검사 x. 바이트 기준)

-Printable Instead of Ranges (문자 범위를 "인쇄 가능한 모든 문자"로 재정의함.)

-Skip Without Letter (substring length 관련, 이를 초과하지 않고 문자도 포함되어 있지 않다면 무시함.)

-Simple Check (substring Length 관련, 이와 길이가 같은 첫번째 문자(문자열의 시작부분)만 스캔함.)

-Runtime Filter (필터링된 행을 최종 결과에 포함 시킬지 말지 여부같음.)

 

Csv Export Options

-External Bin Data (binary data부분이 별도의 파일에 저장되므로, csv파일이 깔끔해지며 크기가 줄어든다.)

-Esc-Sequences (엔터를 \n \r \t \\와 같은 escape sequences 문자로 대체. export/import 모두 적용)

-Index Column (csv파일에 1, 2, 3, 4...와 같은 열을 추가함.)

-Multicolumn Mode (보통 지역화가 지원되어 있는 게임에 사용. 만약 문자열 사이에 데이터가 없다면 그것도 하나의 열로 구분하여 내보냄.)

  -Assume Array Length (데이터를 분석해서 비어있는 문자열 배열 길이를 식별함. 100을 초과할 수 없음.)

 

근데 대부분 Max File Size랑 Esc-Sequences만 알면 된다.

타카기 VR 한국어화 첫 버전의 경우 이 툴을 이용해 한글화작업을 하였다.

근데 이 툴을 쓰는 것보다 그냥 UABEA를 사용하는 게 더 낫다.

 

 

 

8. dnSpyEx

( https://github.com/dnSpyEx/dnSpy/actions )

.net dll을 수정할 수 있는 프로그램이다.

주로 CSharp-Assembly.dll을 수정할 때 사용된다.

기존 dnSpy 프로젝트의 뒤를 잇는 프로젝트이다. 디스어셈블리 엔진은 ilspy 것을 쓰는 것 같다.

단순히 .net assembly를 수정하는 것 뿐만이 아니라, 유니티에 붙여서 디버깅도 가능하다.

다운로드는 깃헙에 로그인한 후, 제일 위에 있는 항목에 들어가 dnSpy-net-win64를 받으면 된다.

 

 

 

9. ILSpy+Reflexil

dll 파일 내부를 뜯어보고, 수정하기 위해 사용된다.

ILSpy만 사용할 경우 dll파일을 불러오고, save 한 후 내가 컴파일하거나

dll파일 자체를 ilasm과 ildasm을 통해 수정이 가능하긴 하나

Reflexil 플러그인을 사용해서 수정하는게 훨씬 편하다.

근데 앞서 소개한 dnSpy를 사용하는게 더 낫다.

 

 

10. HxD, 010Editor, wxMEdit

<HxD>
<010 Editor>
<wxMEdit>

셋 다 hex edit를 위한 툴이다.

HxD는 초보자가 쓰기에 깔끔하고, 편리하며, 무료이다.

010 edit는 강력한 확장성 및 활용성 덕분에 여러 기능에 적응한다면 이것만큼 편한 프로그램이 없다고 한다.

무료 사용 30일 제한이 걸려있어서, 계속 무료로 쓰려면 재설치 편법을 이용해야 한다.

wxMEdit는 지원하는 인코딩이 굉장히 많아서, UTF-32LE같은 일반 hex editor로 수정하기 힘든 것들을 알아보고, 수정하기 편리하다.

 

 

11. Everything

( 정식: https://www.voidtools.com/ )

( 알파: https://www.voidtools.com/forum/viewtopic.php?f=12&t=9787 )

파일 검색을 매우 편리하게 해주는 툴이다.

내가 제일 사랑하는 툴이다. 정식버전보다는 알파버전을 사용하고 있고,

세부검색 성능이 미친 수준이다.

 

파일명 관련 검색 기능은 물론이고, 파일 내부 검색(ANSI, UTF-8, Unicode, Unicode BE), Regex, 수정된 날짜, 파일 용량, 변경일 기준 등등 수많은 검색옵션을 자랑한다.

 

일반적으로 파일 내부검색 기능을 통해 대사가 들어있는 파일이 뭔지 찾으려고 많이 사용하며,

알파버전에선 Hex 검색기능이 추가되어 있기에 Shift-JIS 인코딩도 검색 가능하다.

 

Notepad++는 파일검색 시 뻗는 경우가 잦은데, 이건 거의 없어서 그냥 아무떄나 사용하는 편이다.