한글패치 작업 내역

메이드 인 어비스: 어둠을 목표로 한 연성

Snowyegret 2022. 9. 11. 19:18

게임 엔진은 언리얼 엔진이다.

 

 

작업순서

1. 버전 확인

2. 파일 미리보기로 확인 및 추출

3. 파일 확인 / 수정

4. 모드식으로 리팩

 

 

 

 

1. 버전 확인

https://gbatemp.net/threads/how-to-unpack-and-repack-unreal-engine-4-files.531784/

 

How to unpack and repack Unreal Engine 4 files

Note: Check "Important Posts" for BETA releases. Because i couldn't find any tutorial for this, i made my own package. This tutorial doesn't include how to unpack NSP, XCI or NCA. It's for people who already knows that. F.e...

gbatemp.net

 

위 링크에서 UnrealPakSwitch 툴을 받은 다음

버전확인 및 리팩용으로 사용하자.

 

다운받은 파일의 압축을 푼 후,

MadeInAbyss-BSFD\MadeInAbyss-BSFD\Content\Paks\MadeInAbyss-BSFD-WindowsNoEditor.pak 파일을

1.check.cmd에 드래그&드랍하면 Pak파일의 버전이 나오게 된다.

 

 

 

버전 9니까, 위 링크에 따르면 언리얼 엔진 버전은 4.25.4다.

설치해준다.

 

 

 

 

2. 파일 미리보기로 확인 및 추출

https://github.com/4sval/FModel/releases

 

Releases · 4sval/FModel

Software for exploring UE4-5 games' files. Contribute to 4sval/FModel development by creating an account on GitHub.

github.com

언리얼 게임의 파일 보기 및 추출을 위해 Fmodel을 다운로드한다.

 

 

 

위아래 화살표 버튼을 누른 후, Name에는 아무거나 적고, Directory는 게임 설치 디렉토리를 선택한다.

그 다음 파란색 + 버튼을 누르고, OK를 눌러서 등록

 

 

 

혹시 모르니 Settings에서 UE 버전을 4.25로 바꿔주고

 

 

 

MadeInAbyss-BSFD-WindowsNoEditor.pak과 MadeInAbyss-BSFD-WindowsNoEditor_0_P.pak 파일을 동시에 선택한 후

Load 버튼을 누른다.

 

 

 

MadeInAbyss-BSFD\Content\Localization\Game\ja 폴더에 들어가보면 Game.locres가 두 개 있다.

두 개 있는 이유는 원본과 모드를 동시에 불러와서 그렇다.

locres 파일이 일반적으로 사용되는 대사 파일인 듯 하다.

 

더블클릭으로 확인해보니 7천줄정도 된다. 이정도면 거의 다 들어있는 거라고 판단하고, 추가 텍스트를 찾지 않았다.

근데, 게임을 다운로드 할 때부터 MadeInAbyss-BSFD-WindowsNoEditor_0_P.pak 파일이 있었다.

 

이 파일은 모드 파일이다.

언리얼 엔진은 *-WindowsNoEditor.pak파일과 *-WindowsNoEditor_P.pak 파일이 있다면

파일명 끝에 _P가 붙은 파일을 모드로 불러오고,

 

위 경우처럼 *-WindowsNoEditor.pak / *-WindowsNoEditor_0_P.pak 형태로 되어있는 경우는

*-WindowsNoEditor_0_P.pak, *-WindowsNoEditor_1_P.pak, *-WindowsNoEditor_2_P.pak 순서로 모드가 적용된다는 것 같다.

뒤에 불러오는 모드가 최종적으로 해당 파일을 덮어쓰는 역할을 하게 된다.

 

게임 출시 이후에 바뀌는 변경사항들을 모드 형태로 배포하는 것 같으니

원본 말고 WindowsEditor_0_P.pak 파일에 들어있는 locres 파일을 쓰자.

 

 

 

우클릭 - Export Raw Data로 뽑아두자.

 

 

 

L10N에 있는 파일들도 살펴봤는데, 로고나 튜토리얼 UI같은 지역화가 필요한 이미지들이 들어가 있는 것 같았다.

일단 이거도 Export Raw Data로 뽑아두자.

이건 Save Texture로 png파일도 같이 뽑아두자.

 

 

 

폰트도 찾아봤는데, 나머지 Engine\Font쪽에 있거나 Font에 있는 경우는

유니티 기본폰트마냥 그냥 기본적으로 들어가 있는 폰트같았고,

실질적으로 사용되는건 MadeInAbyss-BSFD\Content\MadeInAbyss\Core\UI에 있는 파일들 같았다.

일단 FontFace 접두사 있는 것들만 Export Raw로 추출하자.

 

 

 

3. 파일 확인 / 수정

대사파일부터 차근차근 들여다보자.

https://github.com/akintos/UnrealLocres

 

GitHub - akintos/UnrealLocres: UE4 localization resource file tool

UE4 localization resource file tool. Contribute to akintos/UnrealLocres development by creating an account on GitHub.

github.com

locres파일이니까 위 툴을 사용하여 대사를 입/출력하면 된다.

 

weblate를 사용하려면 po파일을 이용하는게 나아보이지만, 구글 스프레드 시트로 진행될 것이므로 csv로 export한다.

파워쉘 열고 아래 명령어로 export / import 하면 된다.

export:
.\UnrealLocres.exe export .\Game.locres -f csv -o Game.csv
import:
.\UnrealLocres.exe import .\Game.locres .\Game.csv -f csv -o Game.locres

 

 

 

정상적으로 추출됐다. A-C열 자동필터 먹인 후 A열 기준으로 정렬하면 Key값 기준 순서대로 볼 수 있다.

구글 시트에서도 같은 작업을 하면 되고, A열과 B열은 냅두고 C열에 번역한 텍스트를 채워넣으면 된다.

구글 시트에서 작업 후에 그냥 csv 형식으로 다운로드 받아서 그대로 import 하면 된다.

 

 

 

임의로 첫번째 줄 텍스트를 수정 후 import, 다시 export 해보면 정상적으로 동작하고 있다는 걸 확인 가능하다.

 

 

 

그 다음으론 아까 추출했던 폰트 파일을 열어보자.

ufont파일이 수상하게 용량이 크다. hex editor로 확인해보자

 

 

 

OTTO면 otf파일 시그니쳐다. 확장자를 otf로 바꿔보자

 

 

 

잘 열린다. 일단 다른 폰트를 구한 다음 파일명만 원본처럼 바꾸는 방식을 시도해보는 거로 하고, 넘어가자.

참고로 이번 테스트에선 네이버의 나눔글꼴인 "마루부리 SemiBold"를 적용하였다.

라이센스: https://help.naver.com/service/30016/contents/18088

 

 

이제 이미지를 바꿔보자. 사실 이게 제일 난관이다.

관련 툴도 없는 것 같고, 쉽게 바꾸는 방법에 대한 정보를 찾기 힘들다.

내가 이미지 포맷에 대해 잘 아는 것도 아니니 난감할 따름이다.

 

이것도 용량이 uexp에 몰빵되어 있는 걸 보니, uexp가 데이터 파일인 듯 하다.

 

 

 

PF_B8G8R8A8이 보인다. 아래 링크에서 찾긴 했는데 헤더를 봐도 딱히 뭔 정보가 있는것 같지 않다.

https://docs.unrealengine.com/4.26/en-US/API/Runtime/Core/EPixelFormat/

 

EPixelFormat

 

docs.unrealengine.com

그 아래 FF FF FF 00 FF FF FF 00 FF FF FF 00 FF FF FF 00 데이터가 쎄하다.

검색을 좀 해보니 DDS이미지로 내보내면 되고,

PF_B8G8R8A8는 8.8.8.8 RGBA 32bpp / MIPMAP 없음

PF_DXT5는 BC3 RGBA 8bpp / MIPMAP 없음으로 이미지를 만든 후 수정하면 된다고 한다.

 

DDS/TGA 관련 포토샵 플러그인은 아래 링크에서 받을 수 있다.

Nvidia developer 계정이 필요하다. 가입은 쉽게 가능

https://developer.nvidia.com/nvidia-texture-tools-exporter

 

NVIDIA Texture Tools Exporter

NVIDIA Texture Tools Exporter The NVIDIA Texture Tools Exporter allows users to create highly compressed texture files - that stay small both on disk and in memory - directly from image sources using NVIDIA’s CUDA-accelerated Texture Tools 3.0 compressor

developer.nvidia.com

 

 

 

포토샵을 켠 다음, 아까 export texture로 내보낸 png 파일을 불러오고, 크기 및 위치에 맞게 적당히 수정해준다.

 

 

 

포토샵 상단 메뉴 - File - Save a copy를 누르고

파일 형식은 DDS로 설정하고, Format은 8.8.8.8 BGRA 32bpp | unsigned로 설정한다.

Generate Mipmaps는 체크 해제한 후 우측 하단 Save를 누른다.

 

 

 

저장한 dds 파일을 hex editor로 열어보면, 80h 부분부터 데이터가 시작하는 것을 알 수 있다.

저기부터 끝까지 복사하면 200000h가 나온다.

1픽셀에 32bit고, 사이즈가 1024x512니까 총 16777216비트, 바이트로 변환하면 2097152바이트이다.

hex editor에선 16진수로 표시해주기 때문에 200000h가 맞는 것이다.

데이터 부분을 복사했으니, 이제 붙여넣어야 한다.

 

 

 

PF_B8G8R8A8 아래쪽 FF FF FF 00 부분부터 200000h를 선택한 다음, 복사해뒀던 데이터를 붙여넣자.

선택은 시작부분 클릭 후 끝부분 Shift+클릭으로 편하게 할 수 있으며

끝 부분을 잘못 클릭했거나 조절하고 싶드면 Shift를 누른 상태로 방향키를 통해 선택 범위를 조작할 수 있다.

 

붙여넣었으니 저장하고 헥스에디터를 끄자.

 

 

 

 

4. 모드식으로 리팩

 

4-1. 리스트 뽑기

난 Fmodel의 Output 폴더에서 작업을 했다.

모드에 들어갈(원본 파일을 대체할) 파일을 제외한 모든 파일을 삭제해주자.

그 다음에 작업한 디렉토리에서 cmd 창을 연 후, 아래 명령어를 쳐주자.

dir /b /s /a-d > list.txt

 

현재 및 하위 폴더의 모든 파일들의 경로가 추출되었다.

Ctrl+H를 눌러 바꾸기 모드를 켜자.

 

1) 백슬래쉬를 슬래쉬로 전체 바꾸기

 

 

2) 작업폴더 경로를 "../../../로 전체 바꾸기

 

 

3) Regular Expression 기능을 켠 후, \n을 쌍따옴표\n으로 전체 바꾸기

 

 

4) 윗줄 list.txt 및 아래쪽 빈 줄 삭제 후 저장

 

 

 

4-2. 모드식으로 리팩

 

우선 언리얼 엔진 파일들을 복사해야 한다.

앞서 깔아두었던 언리얼 엔진 경로를 찾아가서,

아래 리스트에 있는 파일들을 1번에서 받았던 unrealSwitch의 v9\2\3 폴더에 복사해준다.

아니면, 아래 링크에서 버전에 맞춰받아도 되는 것 같다.

https://github.com/allcoolthingsatoneplace/UnrealPakTool/releases

 

Releases · allcoolthingsatoneplace/UnrealPakTool

UnrealPak 4.27.0 [ Tool ] -extract *.pak files for Unreal Engine 4 [win64] - allcoolthingsatoneplace/UnrealPakTool

github.com

UnrealPak.exe
UnrealPak.modules
UnrealPak-BuildSettings.dll
UnrealPak-Core.dll
UnrealPak-DerivedDataCache.dll
UnrealPak-Json.dll
UnrealPak-PakFile.dll
UnrealPak-PakFileUtilities.dll
UnrealPak-Projects.dll
UnrealPak-RSA.dll
UnrealPak-TraceLog.dll

 

* 언리얼엔진 4.25 기본경로: C:\Program Files\Epic Games\UE_4.25\Engine\Binaries\Win64

 

 

 

위에서 작업한 파일들을 unrealPakSwitch 최상위 폴더에 복사해준 후, list.txt를 pack-v9.cmd에 드래그&드랍한다.

 

 

 

만약 오류가 뜬다면, 

 

 

 

그냥 MadeInAbyss-BSFD 폴더랑 v9폴더, list.txt, pack-v9.cmd 이렇게 4개만 언리얼엔진 폴더로 옮긴 다음

list.txt를 pack-v9.cmd에 끌어다 놓으면 된다.

 

 

 

만들어진 newpak.pak 파일의 이름을 MadeInAbyss-BSFD-WindowsNoEditor_1_P.pak으로 변경한 후

게임을 실행하면

 

 

 

잘 나온다