게임 파일 추출

Coffee Stain에서 사용되는 모델 및 텍스처 파일에 접근하는 것은 자신의 모드를 위한 콘텐츠를 생성하는 데 유용한 자원이 될 수 있습니다. 이 페이지는 다양한 게임 애셋을 보고 추출하는 방법에 대한 지침을 포함합니다.

다시 말하지만, 이러한 애셋을 재배포하는 것은 허가 없이 해서는 안 되며, 이는 Coffee Stain Studios의 저작권이 있는 콘텐츠입니다.

기본 게임의 아이콘, 메쉬 등을 모드용으로 재사용하려는 경우, 게임 파일 재사용 페이지를 확인하십시오.

FModel

FModel은 게임 애셋을 보고 추출하는 데 사용할 수 있는 도구입니다. FModel에 대한 문서는 깃허브 위키에서 확인할 수 있습니다. 이 섹션에서는 새티스팩토리 파일을 읽기 위해 FModel을 구성하는 방법을 다룰 것입니다.

감지되지 않은 게임 추가

FModel을 처음 열면 디렉터리 선택기가 표시됩니다. 이전에 FModel을 열어본 적이 있다면 다른 창이 열리며, Directory > Selector 를 통해 선택기를 다시 불러올 수 있습니다.

"Add Undetected Game" 제목 아래에서 두 개의 화살표 아이콘을 클릭하고, "Name"에 Satisfactory 를 입력하고, "Directory"에 게임 설치 디렉터리를 입력합니다(예: C:\EpicGamesGames\SatisfactoryExperimental). 그런 다음 파란색 플러스 버튼(OK 버튼이 아님!)을 눌러 게임을 감지된 게임 드롭다운에 추가하고, 자동으로 선택되도록 합니다. 상단 섹션에서 "UE Versions" 선택기에서 GAME_UE5_3 (536870960) 을 선택합니다. 이 항목이 목록에 나타나지 않으면 "Enable custom UE versions"를 체크했는지 있는지 확인하십시오. 게임이 선택되었는지 확인한 후 OK 버튼을 누릅니다.

프로그램이 시작되고 Archives 탭 목록에 FactoryGame-Windows.utoc 가 표시되며, 설치된 다른 모드의 pak 및 utoc도 함께 표시됩니다. 다른 게임이 열리면, 디렉터리 선택기로 돌아가서 위의 단계를 검토하십시오.

사용자 정의 버전 및 매핑 지정

언리얼 엔진 5는 패키지 파일에 애셋을 저장하는 방식을 변경했습니다. FModel이 데이터를 올바르게 읽을 수 있도록 추가 정보를 제공해야 합니다. Coffee Stain Studios는 우리를 위해 게임 파일과 함께 이 추가 정보를 제공합니다.

먼저, 파일 탐색기 창에서 게임 설치 디렉터리로 이동하여 /CommunityResources/FactoryGame.usmap/CommunityResources/CustomVersions.json 파일을 찾습니다.

CustomVersions 파일을 열고 그 내용을 FModel의 설정에 복사해야 합니다. 그러나 이 파일은 일부 텍스트 편집 프로그램에서 혼란을 줄 수 있는 텍스트 인코딩(UTF-16 LE)으로 저장됩니다. 많은 편집기가 인코딩을 자동으로 감지하지만, 텍스트가 지나치게 간격이 넓게 표시되면 파일을 열 때 UTF-16 LE 인코딩을 선택해야 할 수 있습니다.

이 추가 정보를 로드하기 시작하려면 FModel을 열고 Settings > General 로 이동한 다음, "Version Configuration" 행에서 Custom Versions 버튼을 눌러 새 텍스트 편집 창을 엽니다.

팝업 창의 텍스트 내용을 삭제하고, Community Resources 폴더에서 복사한 CustomVersions.json 파일의 내용을 붙여넣은 후 OK 를 눌러 변경 사항을 저장합니다.

파일의 내용이 아래 이미지와 같다면, 다른 텍스트 편집기를 사용하여 열고 복사해야 하거나, 위에서 설명한 대로 UTF-16 LE 인코딩으로 파일을 다시 열어야 합니다. 지나치게 넓은 간격과 FModel의 오류 메시지를 주의하십시오.

손상된 JSON

설정 화면으로 돌아가서 "Local Mapping File" 체크박스를 선택하고, Community Resources 폴더에 있는 FactoryGame.usmap 파일의 전체 경로를 입력하십시오(예: C:\EpicGamesGames\SatisfactoryExperimental\CommunityResources\FactoryGame.usmap).

설정 프롬프트를 닫으려면 OK 를 누르고, FModel을 재시작하라는 프롬프트가 나타나면 OK 를 누릅니다.

FModel 구성 내보내기

모델 내보내기 설정 지정

FModel의 사용자 정의 버전 및 매핑을 지정한 후, 내보낸 결과를 더 쉽게 작업할 수 있도록 모델 내보내기 설정을 변경해야 합니다. 이를 위해 설정 메뉴로 돌아가서 왼쪽에서 Models 를 선택합니다.

여기에서 Blender와 같은 모델링 소프트웨어에서 사용할 수 있도록 모델을 올바르게 내보내기 위해 수정해야 할 여러 입력란이 있습니다:

  • Model Export Directory - 이전 단계에서 선택한 출력 디렉터리와 동일하거나 달라도 됩니다.

  • Mesh Format - glTF 2.0 을 선택합니다.

  • Level of Detail Format - 모델을 내보낼 LOD(레벨 오브 디테일 메쉬)의 수를 선택할 수 있습니다. 일반적으로 First Level Only 를 원하지만, 나중에 모델링 소프트웨어에서 다른 LOD를 제거할 수 있습니다.

  • Texture Format - 텍스처가 투명성을 지원하는 무손실 형식으로 내보내지도록 PNG 로 설정합니다.

변경 사항을 저장하려면 OK 를 누릅니다.

FModel 모델 내보내기 설정

다른 모든 변경 사항은 사용자 재량에 따라 이루어지며, 지식의 수준에 따라 다릅니다.

아카이브 불러오기

이제 설정이 올바르게 구성되었으므로, FModel 인터페이스의 Archives 탭으로 이동하십시오. 이 탭은 이전에 선택한 디렉토터의 하위 폴더에 있는 pak 및 utoc 파일을 표시합니다. 기본 게임의 utoc인 FactoryGame-Windows.utoc 가 표시되어야 하며, 설치된 모드의 utoc도 표시되어야 합니다.

utoc를 로드하려면 선택하고 Load 버튼을 누르십시오. 이렇게 하면 Folders 및 Packages 탭에서 그 내용을 탐색할 수 있습니다.

특정 모델 또는 텍스처 추출

기본 게임 기계의 일부인 아이템 및 유체 포트, 전원 연결부 등을 사용하려는 경우, AngryBeaver의 ModelingTools를 확인해 보십시오.

이 섹션에서는 FModel을 사용하여 특정 정적 메쉬, 스켈레탈 메쉬, 텍스처를 추출하는 방법을 설명합니다. 계속하기 전에 위의 지침에 따라 FModel을 설정했는지 확인하십시오.

FModel 문서는 다양한 UI 요소와 pak 파일을 탐색하는 방법을 설명합니다.

설정을 테스트하려면 Archives 탭에서 FactoryGame utoc를 두 번 클릭하여 Folders 탭으로 이동한 다음, FactoryGame/Content/FactoryGame/Resource/Parts/AIlimiter/Textures`로 이동하십시오. `Textures 폴더를 두 번 클릭하여 Packages 탭으로 이동한 다음, TX_AiLimiter_BC.uasset 파일을 여십시오.

이렇게 하면 왼쪽에 텍스트가 있고 오른쪽에 이미지가 있는 두 개의 창이 표시됩니다.

파일을 내보내려면, Packages 탭의 목록에서 해당 파일을 우클릭 후 관련 옵션인 Save Texture 를 선택하십시오. "[INF] Successfully saved TX_AiLimiter_BC.png"라는 메시지가 창 하단의 로그에 나타날 것입니다. 이렇게 하면 파일이 Settings > General 메뉴에서 구성한 출력 디렉터리로 내보내집니다. 자산이 어떤 파일 형식으로 내보내질지를 Settings > Models 메뉴에서 제어할 수 있습니다.

로그에서 TX_AiLimiter_BC.png 텍스트를 클릭하면 시스템 파일 탐색기가 포함된 폴더를 열 수 있습니다.

`FactoryGame/Content/FactoryGame/Equipment/JetPack/Mesh/SK_Jetpack_01.uasset`와 같은 메시 자산을 열면 3D 뷰어 창이 나타납니다.

파일 검색

pak 전체에서 검색하려면 Packages > Search 로 이동하거나 할당 키(Ctrl+Shift+F)를 누르십시오. 특정 패키지 내에서 검색하려면 Folders 탭에서 해당 패키지로 이동한 다음 Packages 탭에 내장된 검색창을 사용하십시오.

FModel의 검색은 여러 용어를 지원하며, 모든 용어와 일치하는 결과를 반환합니다. 예를 들어, 검색어 Cave Play 는 다음 애셋을 찾습니다: Play_M_SmallCave_Parameter, Play_Boombox_JoelSyntholm_CaveFlowers 등.

정규 표현식 검색은 검색창 오른쪽의 버튼을 통해 활성화할 수 있습니다.

사운드/음악 추출

이 섹션에서는 FModel과 Wwise를 사용하여 사운드 파일을 식별하고 추출하는 방법을 설명합니다. 계속하기 전에 위의 지침에 따라 FModel을 설정했는지 확인하십시오. Wwise 설치는 아래에서 다룰 것입니다.

맥락

새티스팩토리는 Wwise 사운드 시스템을 사용하여 게임 사운드 파일이 표준 언리얼 엔진 사운드와는 다른 방식으로 저장됩니다.

모든 사운드 파일은 FModel을 통해 접근할 수 있지만, Wwise의 사용으로 인해 파일이 합리적으로 정리되지 않고 "좋은" 이름이 아니기 때문에, 정확한 사운드를 찾는 것이 어려울 수 있습니다. 또한, 사운드 파일은 믹스되지 않은 형태로 저장되므로, 게임 내에서 실시간으로 적용되는 추가 오디오 효과가 부족합니다.

다행히도 이 문제를 완화할 수 있는 또 다른 도구가 있습니다. wwiser는 Wwise bnk 파일의 데이터를 볼 수 있는 기능이 있으며, 사운드 파일이 참조하는 Wwise 사운드 이벤트(사람이 읽을 수 있는 이름)를 연결할 수 있습니다.

사운드 이벤트 bnk 파일 찾기

사운드를 추출하는 첫 번째 단계는 발동되는 Wwise 오디오 이벤트 bnk를 찾는 것입니다.

Wwise bnk 파일은 게임에서 사운드 이벤트가 발동될 때 사용되는 사운드 파일에 대한 정보를 포함합니다. 이 파일을 추출하여 Wwise에서 관심 있는 원시 사운드 파일을 찾는 데 사용할 수 있습니다.

Wwise 오디오 이벤트 이름은 사람이 읽을 수 있으며, pak(utoc 아님!)의 FactoryGame/Content/WwiseAudio/Event/ 폴더의 하위 폴더에서 찾을 수 있습니다. bnk 파일은 Events(복수형) 폴더에 없으며, 대신 동일한 이름의 uasset 파일이 포함되어 있어 이 과정에 필요하지 않습니다. 여전히 Events 폴더는 사운드 이벤트의 맥락을 이해하는 데 유용할 수 있습니다. 예를 들어, /Events/World_Events_FilatovD/Environment/Caves/ 는 아마도 동굴에서 재생될 환경 사운드를 포함할 것입니다.

FModel의 패키지 검색 기능은 특정 사운드를 찾는 데 유용합니다. 사운드 재생을 시작하는 이벤트는 Play_뭐시기.bnk 라는 명명 규칙을 따르므로, Play 뭐시기 bnk 를 검색하여 유효한 사운드 bnk 파일 목록을 찾을 수 있습니다.

찾고자 하는 bnk를 찾으면(예: FactoryGame/Content/WwiseAudio/Event/19/Play_EQ_JetPack_Activate.bnk), FModel의 "Packages" 탭 목록에서 우클릭 후 Export Raw Data (.uasset) 를 선택하여 bnk 파일을 내보낼 수 있습니다. 툴팁 옵션은 uasset이 될 것이라고 설명하지만, 실제로는 bnk 파일이 됩니다.

또는 "Folders" 탭에서 전체 Event 폴더를 한 번에 추출하려면, 해당 폴더를 우클릭 후 Export Folder’s Packages Raw Data (.uasset) 를 선택하십시오.

FModel 로그에서 텍스트(예: Play_EQ_JetPack_Activate.bnk)를 클릭하여 내보낸 bnk가 포함된 폴더 또는 전체 내보내기 폴더를 열 수 있습니다.

wwiser로 sourceID 추출

wwiser를 사용하려면 Python이 설치되어 있어야 합니다. Python 3.8.10이 잘 작동하며, pyenv가 설치 방법으로 권장됩니다. Python 설치는 이 가이드의 범위를 벗어납니다.

wwiser의 최신 버전을 릴리스 페이지에서 다운로드하십시오. wwiser.pyzwwnames.db3 파일을 다운로드해야 합니다.

원하는 압축 해제 프로그램을 사용하여 wwiser.pyz 에서 파일을 추출하고, wwnames.db3 파일을 추출한 파일과 동일한 디렉터리에 배치하십시오.

wwiser 인터페이스를 열려면 해당 폴더의 터미널에서 python .\wwiser.py 를 실행하십시오. 그런 다음 Load banks…​ 를 선택하고 이전에 추출한 bnk 파일을 선택하십시오.

계속하기 전에 wwiser의 로그 패널을 확인하십시오. names: couldn’t find .\wwnames.db3 name file 라는 메시지가 포함되어 있다면, 깃허브 릴리스에서 wwnames.db3 를 다시 가져와 bnk 파일을 연 폴더와 동일한 폴더에 배치하십시오.

그런 다음 Generate TXTP 를 선택하여 bnk 파일과 동일한 디렉터리에 txtp 파일을 생성합니다. (예: Play_EQ_JetPack_Activate {s} {m}.txtp)

원하는 텍스트 편집기로 txtp 파일을 열어보십시오. bnk가 연결된 사운드 파일이 있다면, 그들의 sourceID 번호가 추가 오디오 정보와 함께 파일 상단에 표시됩니다(예: wem/633850317.wem 는 sourceID 번호 `633850317`를 가집니다).

사운드 이벤트는 일반적으로 서로 다른 볼륨으로 재생되는 여러 사운드로 구성됩니다. 정확한 사운드를 찾기 위해 여러 원시 사운드를 검토해야 할 수 있으므로, 이벤트의 모든 sourceID를 기록해 두십시오.

사운드 파일 추출

이제 sourceID를 가지고 있으므로 FModel을 사용하여 해당 사운드 파일을 찾고 추출할 수 있습니다.

먼저, FModel에서 sourceID를 사용하여 사운드 파일을 찾습니다. sourceID는 패키지 파일 이름이 됩니다. FModel의 패키지 검색 기능이 유용할 것입니다. 모든 게임 오디오는 pak의 하위 폴더에 있는 FactoryGame/Content/WwiseAudio/Media/ 폴더에서 찾을 수 있습니다.

사운드 파일을 추출하려면, 먼저 메인 창에서 해당 패키지를 열어야 하며, 이렇게 하면 오디오 플레이어 창이 나타납니다. 플레이어에서 사운드 파일을 미리 들어볼 수 있으며, 재생목록에서 우클릭 후 저장을 선택하여 저장 위치를 선택하는 시스템 대화 상자와 함께 저장할 수 있습니다.

일부 사용자는 FModel의 오디오 플레이어에서 사운드 파일을 .wem.wem 파일로 표기해 재생하지 못하는 문제를 보고했습니다. 이 문제가 발생했다면, FModel 설치 디렉터리에서 /Output/.data/ 폴더를 확인해 보십시오. vgmstream-win.zip 및 추출된 여러 파일이 있을 것입니다. 없다면, 깃허브 릴리스 페이지에서 vgmstream-win.zip 의 복제를 받은 후 내용물을 폴더에 바로 압축 해제하고 FModel을 재실행하십시오.

작동하지 않는다면 이 대화이 대화를 참고하십시오(모드 개발자 디스코드 역할 필요).

벌크 오디오 이름 변경기

커뮤니티 구성원 MrCheese는 내보낸 wem 파일을 관련된 이름을 가진 bnk 파일로 대량 이름 변경을 가능하게 하는 Python 스크립트를 만들었습니다. 많은 수의 사운드를 추출하려는 경우 이 스크립트를 사용하면 시간을 절약할 수 있습니다.

사용 방법:

  1. 어딘가에 SatisfactoryAudioRenamer 라는 폴더를 만듭니다.

  2. out 이라는 하위 폴더를 만듭니다.

  3. txtp 라는 하위 폴더를 만듭니다.

  4. 이 Python 파일(convert.py)을 다운로드하여 SatisfactoryAudioRenamer 폴더에 배치합니다.

  5. 모든 wwiser가 생성한 txtp 파일을 txtp 하위 폴더로 이동시키고, SatisfactoryAudioRenamer 폴더에서 터미널에서 python .\convert.py 를 실행합니다.

완전한 시작 프로젝트 생성

SML 릴리스 페이지에서 제공되는 시작 프로젝트는 저작권 및 다운로드 크기 문제로 인해 게임 모델, 텍스처 등을 제외합니다. 대신 스타터 프로젝트는 빈 "자리 표시자" 애셋을 포함하고 있으며, 런타임에 이를 참조하면 올바른 애셋으로 해결되거나, 단순히 프로젝트에서 애셋을 제외합니다(많은 텍스처의 경우).

에디터 내에서 접근할 수 있는 대부분의 기본 게임 파일을 포함하는 개인 버전의 시작 프로젝트를 생성할 수 있습니다. 이 프로젝트 버전은 자리 표시자 버전 대신 모델, 텍스처 및 기타 자원을 포함하여 에디터에서 이를 볼 수 있게 합니다.

이 특별한 프로젝트 파일을 생성하는 데는 상당한 시간과 추가 디스크 공간이 소요됩니다. 이 작업을 원한다면 애셋 툴킷 페이지를 확인하십시오.

UModel

UModel은 게임 자산을 보고 추출하는 데 사용할 수 있는 또 다른 도구입니다.

하지만 작성 시점에서 언리얼 엔진 5 (업데이트 8 및 이후 버전)에 대한 지원이 현재 없습니다. 따라서 FModel을 대신 사용해야 합니다. 다음 지침은 이전 버전에서 작업할 때 참고용으로 남겨두었습니다.

UModel 사용에 대한 오래된 지침:

UModel 도구는 게임 pak 파일 콘텐츠를 보고, 다른 프로그램에서 사용할 수 있도록 메쉬, 스켈레톤, 텍스처 등을 내보내는 옵션을 제공합니다. UModel 사용에 대한 튜토리얼은 온라인에 많이 있으며, 빠른 검색을 통해 원하는 모델링 소프트웨어에 맞게 내보내는 방법을 찾을 수 있습니다.

Satisfactory pak 파일을 열 때 언리얼 버전 버전 4.26을 선택해야 합니다.

4.26이 옵션으로 보이지 않으면, 이전 버전의 UModel을 실행 중인 것이므로 위 링크에서 다시 다운로드해야 합니다.

내보낼 애셋을 추적하는 방법에 대한 간단한 튜토리얼은 게임 파일 재사용 페이지에서 확인할 수 있습니다.

내보낼 애셋을 찾으면 UModel의 UE 뷰어에서 열고 ToolsExport Current Object 를 사용하여 내보내기 옵션을 선택할 수 있습니다. 정적 메쉬로 glTF 2.0 형식으로 내보내는 것을 권장합니다 그래야 Blender와 같은 소프트웨어에서 쉽게 열 수 있습니다.

이 방식으로 추출할 수 있는 모든 콘텐츠가 직접적으로 유용하지는 않다는 점에 유의하십시오. 예를 들어, FGItemDescriptor 를 직접 내보내는 것은 그리 유용하지 않습니다.