XCOM 2 语音包创建终极指南

0 点赞
幽浮®2
转载

本指南详细介绍了如何在2024年使用幽浮2的模组工具,创建支持语音补丁器且用户可调节音量的已打包语音包。 本指南假设你使用的是Windows 10或更高版本。 信息部分 什么是游戏中的语音包? “语音包”是游戏战术战斗中士兵所使用的语音。游戏在角色自定义中提供了多种不同的语音选项,但有些人可能希望添加自己的语音。本指南希望能对此有所帮助。 什么是打包? “打包”是指压缩包内使用的资源,以大幅减小文件大小,从而缩短游戏加载时间。 特别是对于语音模组,与未打包版本相比,模组大小最多可减少90%。这非常有帮助,因为在此之前,音频文件以未压缩的WAV格式保存在资源包中,导致一些语音模组即便实际添加的内容不多,大小也达到数百兆字节。 唯一的问题是,你必须以非常特定的方式设置模组,否则它将无法运行。即使有当前的文档,流程中仍有部分内容可能令人困惑,或者根本没有记录。本指南的部分目的是提供一种固定方法,只要能按照分步流程操作,任何人都可以轻松制作自己的语音模组。 什么是语音补丁器?Voice Patcher是由Aquilio制作的一款模组,它能在模组创建过程中为你的士兵语音添加更多可支持的语音事件。 “语音事件”是一种触发对话播放的机制。如果游戏内的某个事件没有分配语音事件,你就无法在该事件发生时设置对话播放。原版游戏的语音事件相对有限,但使用Voice Patcher后,你几乎可以为任何想要的内容分配对话。 需要注意的是,该模组仅支持【幽浮:未知敌人】的“天选者之战”扩展包。如果你的模组用户没有该DLC,他们仍然可以使用你的语音模组,只是无法订阅Voice Patcher来收听其支持的额外对话。补充说明: 在模组创建过程中,实际上不需要安装该模组。所有语音事件都包含在后面提到的《机器人跳跃者》脚本副本中。 什么是用户音量调节?顾名思义,这是一种允许模组用户根据自己的喜好调整语音音量的方法。这是一项较新的功能,在此之前,用户只能通过游戏的“音量”滑块调整游戏中所有语音的音量,或者请求模组创作者手动调整模组中使用的每个语音提示的音量,并希望他们接受请求。 实现此功能后,您的模组用户可以通过模组目录中的配置文件,按照自己的喜好配置语音音量。这也能让你(模组创作者)更轻松,因为你无需逐一调整每个声音提示的音量。 安装SDK 步骤1:打开你的Steam库,安装“幽浮2 开发工具”。等待安装完成。

注意事项: 为制作语音模组,不应使用“幽浮2 天选者之战开发工具”。使用天选者之战工具制作语音包会导致未安装天选者之战时模组无法运行,此情况已个人测试验证。 若确实需要使用天选者之战SDK,请确保已应用首次使用修复。否则,将无法在天选者之战SDK中编译任何类型的模组。 其他注意事项: 请勿将SDK安装到OneDrive。这些工具本身就较为敏感,不应存放在云端。 步骤2:安装完成后,安装位于游戏目录中的两个可再发行组件,路径为:.. steamapps common XCOM 2 SDK Binaries Redist

安装完成后会提示重启,请进行重启。 SDK设置 ModBuddy快捷方式 1. 进入以下目录: .. steamapps common XCOM 2 SDK Binaries Win32 ModBuddy 2. 为“XCOM Modbuddy.exe”创建快捷方式,并将其移至桌面。 虚幻编辑器快捷方式 1. 进入以下目录: .. steamapps common XCOM 2 SDK Binaries Win64 2. 为“XComGame.exe”创建快捷方式,并将其移至桌面。 3. 将快捷方式重命名为“UnrealEditor.exe”,因为它本质上就是虚幻编辑器。 4. 右键点击快捷方式,编辑属性。 5. 在“目标”框的末尾添加以下文本: editor -noscriptcompile -nogadwarning 确保引号和“editor”之间有一个空格。 示例: ".. steamapps common XCOM 2 SDK Binaries Win64 XComGame."exe" 编辑器 -noscriptcompile -nogadwarning 设置 ModBuddy 路径 ModBuddy 需要设置游戏和 SDK 目录的路径。 1. 打开 ModBuddy 并导航至选项。

2. 在新窗口底部,展开【幽浮2】并设置安装路径和用户路径。

安装路径应设置为常规游戏目录中的“XComGame”文件夹。 .. steamapps common XCOM 2 XComGame 用户路径应设置为SDK目录中的“XComGame”文件夹。 .. steamapps common XCOM 2 SDK XComGame 其他工具与设置 Iridar的增强型模组项目模板能极大简化打包流程。本指南假设你将使用该模板。 1. 下载“EnhancedModProjectTemplate.zip”。 2. 将新下载的压缩文件放置在以下目录: ..Robojumper's Voice Script是支持语音补丁中添加的额外语音事件所必需的。本指南也假设你会使用它。 1. 目前你无需下载任何内容,只需记住后续会用到的这个脚本版本。该脚本已列出所有可能的语音事件,并支持通过配置文件调整音量。不过,建议你查看每个语音事件的注释,以确切了解哪些游戏场景可以分配对话,以及对应的事件名称。 替代模组上传器通常是个不错的选择。没有它,你对模组进行标记和更新的选项会非常有限。本指南虽不强制要求,但强烈推荐使用。 1. 通过订阅其创意工坊项目来下载它。 2. 导航至:.. steamapps workshop content 268500 1134322341 复制此处的【Binaries】文件夹。 3. 将该文件夹粘贴到:.. steamapps common XCOM 2 SDK Binaries 4. 创建【Firaxis.SteamWorkshop.exe】的快捷方式并放在桌面上。稍后上传模组时我们会用到它。 Audacity是一款流行的免费音频编辑器。显然有些人不喜欢它,但本指南的【音频文件编辑】部分假设你正在使用它。 1. 下载Audacity安装程序。 2. 安装它。音频文件编辑 本节介绍如何通过Audacity处理你收集到的语音文件。 本指南不会涉及如何获取你将要使用的所有语音文件。这完全取决于你自己,可以从游戏资源网站获取、从YouTube视频中剪辑,或者直接从游戏文件中提取。 获取所有语音文件后,你需要根据计划触发语音的动作来命名文件,以便进行整理。这可能需要花费相当多的时间,具体取决于你希望整理得多么细致。如果你需要了解具体哪些内容可以分配对话,可以参考之前Robojumper的脚本。 文件名不能包含空格、特殊字符或非拉丁文字符,如西里尔字母或汉字。作为参考,《幽浮:内部敌人》是这样标记语音台词的:

我已按照如下所示,亲自为所有正在使用的台词添加了标签。

打开Audacity。 我们要做的是创建一个宏,这样就能轻松批量处理所有语音文件,只需最少的用户操作。 在顶部点击“工具>宏管理器”。

它会打开你已保存的宏列表。忽略无关内容。点击“新建”。

它会提示你输入一个名称。请输入一个。

点击右侧的【插入】按钮,这样我们就可以开始向宏中插入命令了。

你应该应用的第一个命令是【将立体声混合为单声道】。游戏中使用的所有声音文件都必须是单声道格式,否则它们将无法正常工作。

如果你想为你的语音线路应用无线电滤波器,请在宏中插入“Filter Curve EQ”命令。你需要调整参数直至达到理想效果。你也可以使用众多可用预设中的一个。在这种情况下,我使用的是“Telephone”预设。

现在,你需要插入“Normalize”(标准化)命令。该命令会执行以下两种操作之一:要么增大声音音量,要么在波形已达到峰值的情况下不执行任何操作。此命令应在应用收音机滤波之后使用,因为收音机滤波会略微降低声音的放大效果,而标准化可以解决这个问题。

最后,声音的采样率应设置为22050Hz或44100Hz。如果声音采样率偏离这些数值,在游戏中将无法正常工作。

流程中的最终命令应为【导出为WAV】。语音包中使用的所有声音必须为16位WAV格式。

如果你熟悉声音编辑,完全可以根据自己的需求进一步修改宏。对我来说,最终的宏如下所示。 点击底部的【文件】。

它将打开一个Windows文件资源管理器窗口。导航到你存储所有语音文件的位置。按Ctrl+A全选这些文件,然后点击“打开”。

程序将开始处理你所有的文本行。这可能需要一些时间,具体取决于文本行的数量以及你的电脑性能。

你可以在以下目录中找到所有新过滤的语音文件: .. Documents Audacity macro-output 现在你可以开始使用SDK制作模组了。 创建模组项目 这标志着实际创建模组过程的开始。请严格按照本节中的说明操作,因为ModBuddy在编译时对模组内容的要求非常严格,尤其是在你要进行打包时。 步骤1:打开ModBuddy并选择“新建模组..”

步骤2.在新窗口中,确保选择之前下载的【增强型模组项目模板】。

步骤3.为模组命名。【名称】和【解决方案名称】字段必须完全相同。这与后续步骤中游戏处理模组的方式有关。

一旦确定名称,请点击“确定”。 步骤4.将打开一个新窗口,允许你更改模组的标题和描述。此处的模组标题必须与之前的模组名称和解决方案名称相同。描述可以稍后更改,因此暂时忽略也没关系。

完成后,点击底部的【完成】。 步骤5:模组项目现已创建,ModBuddy 应该会将其打开。界面应如下所示:

立即关闭ModBuddy

步骤6.在Windows资源管理器中导航至项目目录,并运行其中包含的.bat文件。

运行后,目录现在应该看起来像这样:

步骤7.重新打开ModBuddy并再次打开项目。展开所有文件夹。此时ModBuddy应显示为如下状态:

步骤8.删除下图中指定的项目。标红的项目必须删除,否则项目将无法成功生成。这是因为这些脚本引用了仅与【幽浮:未知敌人】的“天选者之战”扩展包相关的内容,而我们使用的是基础游戏SDK。

注意: 你可能需要在Windows资源管理器中检查文件是否确实已删除,因为ModBuddy在删除文件时可能不太可靠。 另一个注意事项: 你或许也可以删除“X2DLCInfo_ExampleMod.uc”文件,但在本指南中我没有这样做。 步骤9:右键点击左侧窗格中的“Config”文件夹,然后选择“添加>新建项”。

步骤10:在新窗口中,选择“配置文件”并将文件命名为“XComContent.ini”。此名称区分大小写。

完成后点击底部的【添加】按钮。我们稍后会编辑此文件。 步骤11.用同样的方法创建另一个新文件,但将其命名为【XComVolumeConfig.ini】。此名称区分大小写。

完成后点击底部的“添加”按钮。我们稍后会编辑此文件。 步骤12.右键点击左侧窗格中的“Classes”文件夹,然后选择“添加>新建项”。

步骤13:在新窗口中,选择“UnrealScript”,并为其命名一个完全独特且可能不会与其他模组冲突的名称。此文件将用于存放Robojumper的语音脚本。

完成后点击底部的【添加】按钮。 步骤14:文件创建完成后,在查看器中选择该文件。除了一条注释外,它应该是完全空白的。

无法识别或无法翻译,已删除。

第15步:将脚本粘贴到ModBuddy中新建的UnrealScript文件里。

步骤16.在脚本文件顶部,将“InsertFileNameHere”更改为脚本文件的名称。将“InsertConfigFileNameHere”更改为我们之前创建的音量配置文件的名称,但不包含开头的“XCom”。

现在它看起来应该是这样的:

完成后保存更改。 步骤17:选择我们之前创建的“XComVolumeConfig.ini”文件。此文件包含语音音量的配置设置。在其中输入以下信息: [InsertModNameHere.InsertScriptFileNameHere] VOLUME_MULTIPLIER=1

完成后保存更改。 步骤18.点击顶部的“全部保存”,然后点击“生成解决方案”。

如果没有出现错误,说明到目前为止你所做的一切都是正确的。 重要提示: 如果不在此步骤生成解决方案,当我们开始使用脚本时,你将无法在虚幻引擎编辑器中看到该脚本。每次对脚本文件进行更改后,都必须生成解决方案,这样更改才能在虚幻引擎编辑器中生效。 创建语音包(第一部分) 现在我们将创建一个包含所有语音资源的包,其中包括: 1. 声音提示 2. 语音原型 3. 声音文件本身 如果你的模组中将包含多个语音,请在完成每个语音的创建后,再次执行本部分操作。 步骤1:打开我们在SDK设置部分为其创建了快捷方式的虚幻引擎编辑器。如果弹出任何提示窗口,请选择“否”或“确定”。步骤2. 当它弹出时,你会看到以下内容:

在整个流程中,我们只需要关注【内容浏览器】窗口。忽略后方的Unreal Editor主界面。 你的内容浏览器最初可能与我的有所不同。点击左上角的【包】以展开该菜单。如果你希望尽可能与我的操作保持一致,可以点击底部的图标切换到【水平拆分视图】。

步骤3.点击底部的【导入】按钮,将声音文件导入到新的包中。

步骤4.导航至你使用Audacity处理后的所有语音文件的存储位置。到达该位置后,使用Ctrl+A快捷键选择目录中的所有项目。

选择完成后,点击“打开”。 重要注意事项: 不要将文件导入到包内的任何位置,只能导入到根目录。如果将文件导入子目录,后续将无法打包模组。 步骤5:此时会打开一个新的“导入”窗口,如下所示。

你需要输入文件将要放入的包名称。如果该包名称不存在,系统将创建一个新包。包的实际名称无需特定,但不应使用特殊字符或替代文字。命名完成后,点击【全部确定】。

重要注意事项:不要将内容包命名为与你的模组相同的名称。它们必须使用不同的名称。 步骤6:现在,内容包将显示在左侧窗格中,所有声音文件将显示在右侧窗格中。立即将该内容包保存到备份位置。

注意:编辑文件后再次保存数据包时,会弹出提示信息“以下数据包引用了外部数据包”。这完全正常,只需点击提示框中的“是”即可完成保存。

步骤7.在右侧面板的空白处右键点击,选择“新建声音提示”。声音提示是我们用于设置语音台词随机播放的方式。

重要注意事项:不要在虚幻引擎编辑器中复制其他包中的声音提示。如果声音提示已设置为播放台词,它仍会指向这些文件的旧位置,导致提示无法正常工作。你应在声音提示将存放的包内创建所有声音提示。 步骤8:会打开一个新窗口,要求输入声音提示的名称。

名称应反映你计划使用提示的动作。在这种情况下,我正在为【心灵疯狂】创建提示。命名完成后,点击“确定”。

注意: 与包中包含的其他所有内容一样,提示名称不能包含空格或特殊字符。它也不能使用西里尔字母或汉字等非拉丁文字符。 步骤9:点击“确定”后,将立即打开该提示的声音提示编辑器。先暂时忽略它。我们现在要选择计划在此语音提示中使用的所有语音线路。 使用Shift+点击快捷键选择一组语音线路。你也可以使用Ctrl+点击单独选择线路。

步骤10:现在已选中这些音频线,请将鼠标移至声音提示编辑器窗口。右键点击空白区域,然后点击【随机:[第一个声音文件名称]】。

这将自动将所有声音放置在编辑器中,并将它们连接到一个随机节点。

步骤11.通过黑色输入和输出端口将随机节点连接到扬声器。

现在你可以关闭声音提示编辑器。对每个你想要创建的声音提示,重复步骤7-11。这需要一些时间。 注意: 你可以使用Ctrl+点击在编辑器内物理移动节点。 步骤12.现在你已经创建了所有声音提示,我们将为它们分配【Voice】声音类别。这决定了它们在游戏内设置菜单中使用哪个音量滑块。 按【Sound Cues】筛选项目。

步骤13:按下Ctrl + A选择你制作的所有语音提示。右键点击并选择“声音类别:> 语音”

保存数据包。 步骤14.现在我们开始制作语音原型。【原型】本质上决定了游戏中不同动作时会播放哪些提示音。 在顶部,切换到【角色类别】选项卡。

它应该看起来像这样:

步骤15.取消勾选左上角的方框。

步骤16.搜索我们之前制作的Robojumper脚本名称。

注意: 如果搜索脚本名称后未找到脚本,请关闭编辑器,在ModBuddy中重新生成解决方案,然后再次搜索。 步骤17.右键点击它并选择【创建原型】。

步骤18:将打开一个新窗口,你需要在其中输入原型将要放入的包名称以及原型本身的名称。

完成后点击“确定”。

注意: 如果尚未保存包,则无法指定包名称。 另请注意: 如果包未在内容浏览器选项卡中打开,也无法指定包名称。 创建语音包(第二部分) 由于特定部分存在字符限制,因此需要此替代部分。不过我们即将完成这部分操作。 步骤19:返回内容浏览器选项卡。找到刚刚创建的原型。找到后,右键单击它并点击【属性】。

步骤20.将打开另一个新窗口。

折叠“XComCharacterVoice”并直接展开其上方的Robojumper脚本名称。点击右上角的扳手图标,然后点击“展开所有分类”。

现在窗口应该显示成这样:

这是《机器人跳跃者》语音脚本中的语音事件列表。 步骤21:现在我们将开始为每个语音事件分配声音提示。在内容浏览器窗口中,选择你想要分配的声音提示,然后点击原型属性中你希望其播放的语音事件旁边的绿色箭头图标。

对每个你想要分配对话的语音事件重复此步骤。 注意: 你无需为原型中的每个语音事件都分配提示。未分配提示的语音事件在触发时将不会播放对话。由于语音事件数量众多,部分事件自然会保持静音状态。 另一个注意事项: 如果你错误地为某个语音事件分配了不需要的内容,可以右键点击该事件并选择【重置为默认值】来取消分配。

其他注意事项: 在ModBuddy中为脚本添加语音事件并生成解决方案后,你会发现该事件不会自动显示在已创建的原型中。若要添加新事件,可通过原型属性窗口右上角的绿色加号手动添加,否则你将不得不创建一个全新的原型。 步骤22:完成语音事件的提示分配后,我们可以关闭原型属性窗口。点击右上角的X即可。

注意: 如果在关闭编辑器后想要修改原型,需在ModBuddy中构建解决方案,以确保其检测到脚本。 另一个注意事项: 使用Robojumper语音脚本的一个缺点是,如果将包移动到另一个模组项目中,必须从头重新制作原型。如果决定将多个语音模组合并为一个,请记住这一点。 步骤23.在内容浏览器中,右键点击原型,然后点击【复制全名到剪贴板】。

将其粘贴到不会丢失的地方,例如文本编辑器。我们稍后会用到它。

如果你的模组包含多个语音,请为每个语音重复此部分(包括第一部分和第二部分)。 步骤24:保存包并关闭编辑器。 语音事件说明 本部分专门提供特定语音事件的相关信息。 冲刺:这是游戏内自定义菜单预览时使用的语音事件。 小队成员死亡:当你的另一名士兵死亡的瞬间触发此事件。建议为此事件添加延迟模块,使其在死亡画面和提示音效后播放。在本示例中,我设置了2秒的延迟。

所有与黑客相关的事件 一些与黑客相关的语音事件可以说存在问题。 这意味着什么?你或许应该将【HackTurret】、【AttemptingHack】和【HaywireProtocol】事件保持未分配状态,以避免在游戏特定场景中出现对话重复的风险。需要注意的是,这只是有重复的可能性,所以如果你确实想为它们添加对话,仍然有一定的操作空间。 TargetHeard和AlienMoving 这两个事件会在完全相同的场景中触发。游戏会通过随机机制决定在特定情况下使用哪一个。你应该为这两个事件分配相同的声音提示。在《幽浮2》中,这些事件会在士兵开始听到声音的瞬间触发。而在《幽浮:未知敌人》中,视觉提示出现后大约有1.5秒的延迟才会播放台词。你可以使用延迟模块来模拟《幽浮:未知敌人》中事件的这种行为。 HostileVIP事件会在发现黑暗VIP和拾取黑暗VIP后都触发。目前尚不清楚为何如此编码,在为其分配对话时请注意这一点。 配置编辑与本地化 1. 再次打开ModBuddy并打开你的模组项目。 2. 右键点击“Content”文件夹,选择“添加>现有项”。

步骤3:此时会打开一个Windows文件资源管理器窗口。导航至您之前保存语音包的位置。

选择完成后点击“添加”。现在它应该显示为这样:

第四步:点击我们之前创建的“XComContent.ini”文件。该文件目前应为空。

现在我们将开始编辑以添加语音条目。在顶部,应包含以下文本: [XComGame.X2BodyPartTemplateManager]

在其下方的新行中,插入以下文本: +BodyPartTemplateConfig=(PartType="Voice", Language="none", Gender=eGender_Male, TemplateName="UniqueTemplateName", ArchetypeName="PackageName.ArchetypeName", bCanUseOnCivilian=false) 粘贴这两行后,文件应如下所示:

步骤5:现在你需要根据自己对语音的配置需求,修改条目中的各个字段。我将逐一介绍每个字段。 PartType="Voice":保持此项不变,它决定该部件会显示在哪个菜单中。 Language="none":这决定了哪些国籍的士兵会被随机分配该语音。 Language="none":没有士兵会被随机分配该语音。你仍可以在游戏中手动为他们分配。 Language="english":国籍设置为“美国”的士兵会被随机分配该语音。 Language="englishUK":国籍设置为“英国”或“苏格兰”的士兵会被随机分配该语音。语言设置为"englishAUS"时,国籍设为"澳大利亚"的士兵将随机分配该语音。 语言设置为"french"时,国籍设为"法国"的士兵将随机分配该语音。 语言设置为"spanish"时,国籍设为"西班牙"或"墨西哥"的士兵将随机分配该语音。 语言设置为"german"时,国籍设为"德国"的士兵将随机分配该语音。 语言设置为"italian"时,国籍设为"意大利"的士兵将随机分配该语音。 注意:如果游戏设置中的【士兵语言与国籍匹配】选项关闭,所有士兵将仅使用游戏语言设置对应的语音。性别=男性 这决定了该语音可分配给哪种性别的士兵。 性别=男性 该语音可分配给男性士兵。 性别=女性 该语音可分配给女性士兵。 注意: 如果希望该语音对两种性别都可用,你需要在配置文件中使用不同的模板名称单独创建一个条目。 模板名称="唯一模板名称" 此名称无需特定格式,但不应与其他模组制作者可能使用的名称冲突。请记下你为此命名的名称,以备后用。 在我的示例中,我将其更改为: 模板名称="Ay_TestVoice" 原型名称="包名称.原型名称" 此处应填写我们之前复制的原型名称。只有用引号括起来的选定文本与配置相关。

以我的情况为例,配置如下: ArchetypeName="PhoenixCoopVoicePkg.PhoenixCoopVoiceArchetype" bCanUseOnCivilian=false 这个参数决定你的语音是否会在反击任务中被随机分配给平民。你应该将其保持为false,因为如果平民死亡时发出类似 Solid Snake 的声音,可能会破坏沉浸感。 对所有需要添加的语音重复此操作。 完成后保存更改。 经过上述配置,我的完整条目如下:

关于我输入的信息,语音: 1. 不会随机出现在任何士兵身上。 2. 适用于男性士兵。 3. 不会随机出现在平民身上。 步骤6:打开【Localization】文件夹中的【XComGame.int】文件。如果其中已存储有非你自行输入的信息(由于我们使用的模板),你可以将其删除。

步骤7:插入以下文本: [TemplateNameHere X2BodyPartTemplate]将“TemplateNameHere”替换为你之前创建的模板名称。以我为例,它是“Ay_TestVoice”。

步骤8:在其正下方的行中,插入以下文本:DisplayName="游戏内显示名称"。将“游戏内显示名称”替换为你希望该语音在游戏内自定义菜单中显示的名称。以我为例,我将其设为“示例语音”。

步骤9:生成解决方案。 如果没有生成错误,模组现在应该处于可游玩状态。 重要说明: 生成解决方案时确保虚幻引擎编辑器已关闭。如果编辑器未关闭,生成操作将始终失败。 步骤10:启动游戏并验证语音是否正常工作。确保模组在模组加载器中已启用。如果语音未显示在自定义菜单中,或者在预览时没有播放任何内容,则说明操作有误。

菜单图标(可选) 部分模组会在自定义菜单的物品名称旁显示一个小图标,示例如下。

本节将详细说明如何执行此操作。这完全是可选步骤,不会影响模组的功能。如果您不感兴趣,可以跳过本节。 将用户界面插入自定义菜单有两种方法: 1. 本地化方法。 2. 屏幕监听器方法。 本指南将展示如何使用本地化方法,因为它是较新的方法,更易于实施,并且在游戏中占用的系统资源略少。 步骤1:找到您想要用作图标的图像。这里以ODST图标为例。

第二步:将其导入你选择的绘图软件中。我个人使用paint.net,所以图片中会以该软件为例进行演示。

步骤3:如果图片不是1:1的宽高比,请将其转换为1:1。

第四步:背景应设为透明,因此使用魔棒工具选择所有不属于图标的纯色部分并删除。

步骤5:将图像调整为32x32像素。

步骤6:将图像导出为.png文件。

步骤7:打开虚幻引擎编辑器。将图片导入到命名格式为“UILibrary_[ModName]”的包中。

点击“全部确定”。 重要说明: 与声音文件相同,不要将图像文件导入到包中除根目录以外的任何位置。如果将它们导入子目录,之后将无法编译该模组。 步骤8:在虚幻引擎编辑器中右键点击图像,复制全名。将其粘贴到稍后可以访问的位置。

步骤9:将数据包保存到任意位置。

在ModBuddy中,将包添加到你的模组内容文件夹。

步骤11:在你的XComGame.int文件中,在显示名称的开头粘贴以下内容:<img src='img:///PackageName.ImageName' width='26' height='26' vspace='-4'>

将“PackageName.ImageName”替换为您之前复制的名称。在我的示例中,该名称为“UILibrary_ExampleVoicePack.ODST_Icon”。

保存更改。 步骤12:生成解决方案并在游戏中验证其是否正常运行。

烹饪(可选) 从技术角度讲,此部分为可选内容,因为理论上你可以直接上传当前状态的模组,它已经具备完整功能。如果你对烹饪不感兴趣,直接跳至“上传”部分即可。 在尝试调整任何开始烹饪模组所需的设置之前,首先要做的是: 创建备份。 你应复制整个项目目录并将其存放在安全位置。 步骤1:打开ModBuddy并打开“ContentOptions.json”文件。此文件决定了在烹饪过程中会处理哪些包。如果你尚未对其进行修改,它会显示如下:

第二步:所有包都在此json文件中命名。我会按字母顺序为它们添加标签。完成后,大致就是你看到的这个样子。除最后一个包外,所有包的引号后都要直接加一个逗号。

步骤3:将“Content”文件夹中的所有包移动到“ContentForCook”文件夹。在ModBuddy中,将现有包添加到“ContentForCook”文件夹。

第四步:从【Content】文件夹中删除原始文件。

步骤5:使用Windows资源管理器,导航至项目目录中的.scripts文件夹。

使用记事本程序编辑“build.ps1”文件

步骤6:滚动到脚本底部,找到如下行:# $builder.SetContentOptionsJsonFilename("ContentOptions.json")

移除#及其后的空格,使该行变为:$builder.SetContentOptionsJsonFilename("ContentOptions.json")

保存更改。 步骤7:在ModBuddy中生成解决方案。

第8步希望这不会给你带来构建错误。

上传 现在是将模组实际上传至Steam创意工坊的流程。 此时你可能需要准备一张缩略图。XCOM 2模组使用的缩略图分辨率为512x512,格式为jpg。 步骤1:使用Windows资源管理器,导航至SDK目录中你的模组存储位置: .. steamapps common XCOM 2 SDK XComGame Mods 首次生成解决方案后,整个模组会放置在此处。

步骤2.打开你的模组文件夹,找到扩展名为.XComMod的文件。使用记事本编辑器对其进行编辑。

步骤3.在记事本中,将“RequiresXPACK=true”从true修改为false。这一设置决定游戏是否认为你的模组需要【天选者之战】扩展包。此处原本设为true的唯一原因是打包过程会自动将其设为true,但如果你使用的是基础游戏SDK(你应该如此),你的模组无需该扩展包即可运行。如果你使用的是WotC SDK,请忽略此步骤。

如果你计划在未来更新你的模组,那么每次在ModBuddy中生成解决方案时,都需要将此设置重新设为false。 步骤4.(可选)如果你想减少文件体积,还可以手动删除以下文件: 1. XComEditor.ini 2. XComEngine.ini 3. XComGame.ini 这些文件仅在生成模组时相关,在实际的编译目录中并不需要,它们只会增加不必要的体积。 警告: 本步骤的下一部分仅适用于已烘焙模组的用户。如果你未进行烘焙,请直接跳至步骤5。 如果你已烘焙模组,还可以删除: 4. RobojumperScriptUniqueName.uc(你的文件名可能不同) 如果你未烘焙模组,请勿删除此文件。此文件会在你的模组打包并烘焙后内置到模组包中,在实际的编译目录中并不需要,因为它只会增加不必要的冗余。 步骤5.打开“额外工具与设置”部分中提到的替代模组上传器。 点击右上角的“上传”按钮。

步骤6:点击文本框旁的【...】按钮,搜索你要上传的模组项目。

步骤7.进入我们刚才所在的目录:.. steamapps common XCOM 2 SDK XComGame Mods,然后再次选择“XComMod”项。

选择后点击“打开”。 步骤8.点击“下一步”。

步骤9:现在你应该会看到一个页面,该页面会详细列出模组上传完成后在创意工坊页面中显示的所有信息。

顶部的标题不会更改你的模组的内部名称,它只是你的模组在Steam创意工坊中显示的名称。这意味着你可以使用任意数量的空格和特殊字符。 描述有字符限制,如果你超过限制,会收到一个非常无用的错误提示。请注意。 如果你准备了缩略图,可以在这里上传。我没有准备。 可见性不言自明。查看选项你就会明白。 标签用逗号和空格分隔。 标签正下方的复选框是创意工坊搜索中的设置类别。对于语音模组,它们可能应该设置为【语音】和【士兵自定义】。

准备好继续时,点击底部的【下一步】。 步骤10.在下一步菜单中点击【上传】。

步骤11:会打开一个Windows资源管理器窗口。你需要导航到项目目录并从中选择“x2proj”文件。这样,如果你将来进行更新,上传器就知道要使用哪个模组了。

选择后点击【打开】。 步骤12.上传完成后点击【完成】。

恭喜你,你的模组现已完全制作完成并上传。你可以前往其Steam创意工坊页面,尽情编辑描述、标题、预览图和视频。 注意: 如果你想更改缩略图,必须通过替代模组上传器更新模组,无法通过Steam创意工坊直接更改。 追溯实施 本节仅适用于希望将旧模组更新以使用前文提到的新功能的用户。 添加用户音量调节 如果你的模组使用的是Robojumper语音脚本的旧版补充文件,将不具备支持配置音量编辑的必要部分。 好消息是,这非常容易实现。你甚至不需要打开虚幻引擎编辑器。 步骤1.在ModBuddy中打开你的脚本。它可能看起来像这样:

在第一行,在“XComCharacterVoice”后添加以下文本:config(VolumeConfig)。分号将直接跟在该文本之后。这将确定配置文件的名称,该文件用于为脚本中任何未指定的变量提供值。其格式应如下所示。

步骤2:在其下方两行处,添加以下文本: var config float VOLUME_MULTIPLIER; 这将创建我们用于更改语音包中提示音量的变量。它不应是其他样子。

步骤3.现在向下滚动一点,在“Cue = FindSoundCue(nEvent)”文本的正下方,插入以下内容: Cue.VolumeMultiplier = default.VOLUME_MULTIPLIER; 这将使原型使用此变量来控制分配给它的提示音的音量,而不管它们在虚幻引擎编辑器中设置的实际值是多少。此时脚本应如下所示:

保存更改 步骤4.右键点击“Config”文件夹,添加一个新的配置文件。将其命名为“XComVolumeConfig.ini”。

步骤5.现在你要做的基本上和“创建模组项目”部分相同。在文件中,在顶部添加脚本文件的地址,然后在下一行指定变量。接着在其中添加你希望提示音量的默认值。完成后,内容大致如下:

步骤6.生成解决方案并确保其在游戏中正常运行。之后更新你的模组。 添加语音补丁支持 如果你的模组正在使用Robojumper语音脚本的旧版补充文件,它将不会包含较新的语音补丁事件。或者,语音补丁可能已更新并添加了新的语音事件,而你希望添加对这些事件的支持。无论哪种情况,本部分将展示如何在不创建全新脚本或原型的情况下实现这一点。 步骤1.首先,查看通过模组添加的语音事件。 步骤2.确定要添加支持的语音事件后,在ModBuddy中打开你的项目并打开脚本文件。在某处新行添加该事件。在我的脚本中,我正在添加【MimicBeaconThrow】事件。

步骤3.添加所有需要的事件后,保存更改并生成解决方案。 步骤4.打开虚幻引擎编辑器,然后在其中打开你的语音包。打开原型属性窗口。 步骤5.你会发现新的语音事件并未显示。需要手动添加它。点击右上角的绿色加号按钮。

步骤6.这将在列表底部添加一个新的未标记语音事件。请一直向下滚动。

步骤7:点击“事件名称”旁边的“无”,然后手动输入语音事件的名称。在我的示例中,名称为“MimicBeaconThrow”。

对每个要添加的语音事件重复步骤5-7。 步骤8.为每个语音事件分配你想要使用的提示音。 步骤9.在ModBuddy中保存包并生成解决方案。