게임 엔진은 언리얼 엔진이다.
작업순서
1. 버전 확인
2. 파일 미리보기로 확인 및 추출
3. 파일 확인 / 수정
4. 모드식으로 리팩
1. 버전 확인
https://gbatemp.net/threads/how-to-unpack-and-repack-unreal-engine-4-files.531784/
위 링크에서 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
언리얼 게임의 파일 보기 및 추출을 위해 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
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/
그 아래 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
포토샵을 켠 다음, 아까 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
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으로 변경한 후
게임을 실행하면
잘 나온다
'한글패치 작업 내역' 카테고리의 다른 글
메이드 인 어비스: 어둠을 목표로 한 연성 (참고자료) (0) | 2022.09.11 |
---|---|
늑대와 향신료 vr2 파일구조 (0) | 2021.11.28 |
늑대와 향신료 VR2 한글패치 작업내역 (3) - 공개번역 파트 (0) | 2021.06.21 |
늑대와 향신료 VR2 한글패치 작업내역 (2) (2) | 2021.06.21 |
늑대와 향신료 VR2 한글패치 작업내역 (1) (0) | 2021.05.18 |