跳转到内容

基础知识

原文信息

The Basics

发布于 2025年2月27日

作者:QuantumNuke75, RareKiwi

当你在虚幻引擎5创建项目时,项目将被保存到一个目录里。这个目录将作为一个项目。举个例子: <SaveDirectory>/<ProjectName>/…<ProjectName> 保存了 虚幻引擎5 项目的所有内容。在那个项目文件夹里,有一个文件夹叫做 Content。这个文件夹存放了某个游戏的所有资产和蓝图。

对于 Ready or Not 来说,项目名字就是 ReadyOrNot。在那个文件夹里,有个叫 Content 的文件夹。再说一次,这里面存放了游戏的所有东西, 除了配置文件。然而,当你在 UModel 里打开游戏文件时,这里可能不会有 Content 文件夹,而是 Game 文件夹。 当你在给模组打包成 .pak 时,应该把 Game 替换为 Content。里面的其他子文件夹保持不变。

在制作模组时,你所做的大部分工作都是在 Content 文件夹下完成的。如果某个你想覆写的文件位于 .../ReadyOrNot/Game/ReadyOrNot/Assets/Weapons/Python,那么你要复制的文件夹路径就是 .../Content/ReadyOrNot/Assets/Weapons/Python

在制作模组的时候你可能会遇到很多不同的文件格式。以下列出了大部分和对应的解释。

  • .psk - 骨骼网格体或静态网格体,可能会包含骨骼。
  • .psa - 某个网格体的动画。
  • .uasset - 两种可能
    1. 原始的 .uasset 文件是 UE5 项目烘焙后产生的。
    2. UE5 的 .uasset 文件是直接从某个 UE5 项目中拿到的,这些文件未被烘焙,可以直接在项目间转移。
  • .uexp - .uasset 文件的补充,通常包含了导入导出的映射信息。
  • .ubulk - UE5 使用的另一种数据存储格式。
  • .umap - 一个关卡/地图文件,类似 .uasset,也有已烘焙和未烘焙版本。

提取游戏文件主要有三种方式,有一些不同:

  1. FModel 对于 UE5 及以上的引擎版本支持最好,但是需要一些手动配置和 RoN 专用映射文件 (参阅 Mappings)。 FModel 可以保存原始的已烘焙内容,可以在 UAssetGUI 之类的软件中编辑,也可以导出其他资源以供编辑,比如材质、静态网格体、骨骼网格体。

  2. UModel 可以导出非原始文件,让你能够访问材质、模型和动画等。若要使用,用它打开 Ready or Not 的 .pak 文件所在地: <游戏安装位置>\Ready Or Not\ReadyOrNot\Content\Paks。加载之后你就可以导出文件了。

  3. 手动解包。只需要简单地设置一个解包批处理脚本。使用这种方法只能解压原始已烘焙文件。

    1. 在你的 Unreal Pak(在 虚幻引擎5 安装位置下)位置新建一个 .bat 文件。位置通常在 <InstallLocation>\UE_5.3\Engine\Binaries\Win64\UnrealPak.exe

    2. 在 .bat 文件中,粘贴如下内容并保存:

      unpak.bat
      @if "%~1"=="" goto skip
      @setlocal enableextensions
      @pushd %~dp0
      md "%~dpn1\"
      .\UnrealPak.exe %1 -extract "%~dpn1\\" -extracttomountpoint
      @popd
      @pause
      :skip
    3. 把你要解包的 .pak 文件拖拽到刚新建的脚本上,比如 pakchunk0-Windows.pak。解压后的文件与 .pak 文件同目录,会出现一个新文件夹。

为了覆盖游戏的某个资产,或者添加新内容,新文件必须是游戏可以识别的格式。使用 UModel 解压出来的文件可以轻松编辑,但是不能被游戏识别。 你需要先烘焙它们,才能打包这些文件。

  1. 安装最新版本的 虚幻引擎5.3。目前最新版本是 5.3.2
  2. 把所有你想要打包到模组里的文件全部导入到一个新的空白项目里。其他模板也能用,但是会导致烘焙时间显著变长。
  3. 找到 File > Cook Content for Windows。这会把文件转换成一个 UE5 导出后的格式(*.uasset,*.uexp,*.ubulk)。 在 <ProjectLocation/><ProjectName>/Saved/Cooked/WindowsNoEditor/ 里拿到已烘焙的文件。
  1. 确保你想打包的文件夹,比如 pakchunk99-Mods_MyMod_P,包含的文件结构与 Ready or Not 相同。同时,确保你的 pak 名末尾有 _P。 如果不这样做,可能会导致模组不加载。pakchunk 后的数字表示 .pak 的加载顺序。请先确保你理解了目录结构然后再打包。 不正确的目录结构将会导致加载问题。你的结构应该类似于 pakchunk99-Mods_MyMod/Content/ReadyOrNot/Assets/...

  2. 在你的 Unreal Pak(在 虚幻引擎5 安装位置下)位置新建一个 .bat 文件。位置通常在 <InstallLocation>\UE_5.3\Engine\Binaries\Win64\UnrealPak.exe

  3. 在 .bat 文件里,粘贴如下内容并保存:

    packaging.bat
    @setlocal ENABLEDELAYEDEXPANSION
    @if "%~1"=="" goto skip
    @setlocal enableextensions
    @pushd %~1
    (for /R %%f in (*) do @set "filePath=%%f" & set "relativePath=!filePath:%~1=!" & @echo "%%f" "../../../ReadyOrNot!relativePath!")>"%~dp0/filelist.txt"
    @pushd %~dp0
    ::-compresslevel=4 for Normal, -compresslevel=-4 for uncompressed hyperfast paking
    .\UnrealPak.exe "%~1.pak" -create=filelist.txt -compress -compressionformats=Oodle -compressmethod=Kraken -compresslevel=4
    @popd
    @pause
    :skip
  4. 把你要打包的 .pak 文件拖拽到刚新建的脚本上,比如 pakchunk99-Mods_MyMod_P。打包后的 .pak 文件将出现在你与你刚刚拖拽的文件夹同个目录下。

所有的 .pak 模组都应存放在 <游戏安装位置>\Ready Or Not\ReadyOrNot\Content\Paks。请确保 .pak 加载顺序正确。

若要测试你的打包是否有用,请下载这个 示范模组。如果打包正常,安装后你的游戏主界面的 logo 变成粉色的。 请在打包之前下载和解压 .zip 文件。 粉色 logo 将 Ready or Not 主界面标题 logo 加上粉色材质

如果你的模组没有生效,请检查这些常见犯错点:

  • 检查文件结构,必须完全符合游戏内的文件,否则不会生效。
  • 忘记给模组名末尾添加上 _P。如果对游戏使用补丁 pak 就需要添加上这个。
  • 加载顺序。错误的加载顺序会导致模组之前产生问题。你可以通过更改 pak 文件名里的数字来修改加载顺序。
  • 挂载点(排查问题的最好方法就是使用内置的 UnrealPak.exe。仅需用这行命令打开它:unreakpak.exe -List This_Is_A_Pak.pak,查看挂载点。 挂载点一般是最深的文件夹,包含了你的所有内容。如果不是,可能会产生问题。)