如何启用模组?

Viewed 1

我下载了一些模组,但不知道如何在游戏中启用它们,请问模组的启用步骤是什么?

1 Answers

0 A.D. 模组制作指南

介绍

如果你想了解如何游玩 0 A.D.,或者对它还不熟悉,请先查看 Getting Started 页面。

本指南面向已经有 0 A.D. 游玩经验,并希望通过“modding”(模组制作,即修改游戏)进一步拓展的用户。由于 0 A.D. 目前仍处于 alpha 阶段并持续开发中,文档本身也处于早期阶段。功能很可能发生较大变化,甚至模组制作流程也可能调整。现阶段有意参与模组制作的人,往往需要具备一定“开发者”能力,包括解决问题、研究实现方法,并且通常需要熟悉游戏的多个方面。此外,在当前阶段,完善游戏核心功能仍是优先事项,因此高质量模组在作者愿意的情况下,也可能被并入官方游戏内容。

获取模组制作建议的最佳渠道是论坛(其中有一个专门的 modding 子版块)和 IRC:QuakeNet IRC 上的 #0ad-dev。不过一些最常见的问题,也希望能在本页得到解答。

可以修改什么?

0 A.D. 从一开始就以易于模组化为目标进行设计。可修改的不仅是美术和音频,也包括让游戏“运转起来”的代码。游戏中的所有纹理、3D 模型、动画、声音、字体和场景都被打包在“mods”(模组)中。此外,大量游戏逻辑(使用 JavaScript 编写)也位于模组中。0 A.D. 的底层软件中有一部分称为 Pyrogenesis“引擎”,使用 C++ 编写。引擎本身不会随模组改变。游戏实际上是由一个或多个模组与引擎一起打包构成。由于 0 A.D. 是自由开源软件,有兴趣的人当然可以修改引擎;但严格来说这通常不被称为“模组”,因为这样做可能会破坏与现有内容的兼容性。

模组放在哪里?

随 0 A.D. 一同分发或作为其组成部分的模组,位于游戏安装目录下的 binaries/data/mods/

用户创建的模组应放在用户的模组目录中。具体路径因操作系统而异:

  • Windows(Vista 或更新版本):C:\Users\{name_of_user}\Documents\My Games\0ad\mods\
  • OSX:~/Library/Application Support/0ad/mods/
  • Linux:~/.local/share/0ad/mods/(在图形界面中可通过 Home/.local/share/0ad/mods/ 找到)

(通过 mod.io 界面获取的模组也会由 0 A.D. 存放在这里。)

每个模组都应位于其独立文件夹中,且文件夹名应与模组名一致。例如名为 my_awesome_mod 的模组应放在 ./0ad/mods/my_awesome_mod/

该文件夹随后包含该模组的全部文件,形式可以是子目录与文件的集合:

或者在准备发布时,打包为单个 .zip.pyromod 文件:

因为程序会在特定位置查找文件,所以模组应遵循与游戏内置 public 模组相同的目录结构。详情可参见 mod layout 或 Finding Your Way Around。

如何安装模组?

可以直接用 0 A.D. 打开模组文件来安装或更新。.pyromod 文件通常应关联到 0 A.D.;如果未关联,或文件是 .zip,也可通过右键并选择用 0 A.D. 打开来安装。

如果你偏好命令行,上述操作等价于运行:

pyrogenesis modfile.pyromod
# 或
pyrogenesis modfile.zip

之后会进入模组选择界面,下一节会介绍。

仅限进阶用户

你也可以手动把模组放入模组目录,但必须确保文件夹名和 zip 基础名与 mod.json 中的模组名一致。若你解包模组以便继续开发,请注意:正确打包的模组本质上可能是一个 zip-bomb。你也可以克隆对应仓库(若存在),或者在其他位置创建指向它的符号链接。

模组如何使用?

游戏有模组选择界面,可通过主菜单进入:Tools & Options > Mod Selection

若你更喜欢命令行,也可以通过参数选择模组。可使用 -mod 选项运行游戏,例如:

pyrogenesis.exe -mod=mod -mod=public -mod=mymod -mod=anothermod ...

这会先加载 public 模组,再加入 mymod 的所有文件,然后再加入 anothermod 的所有文件(并替换已存在的同名文件),依此类推。

mod 模组当前默认总会被加载。public 模组中的任意文件或文件夹都可能在新模组中被替换或扩展。实际上,仅通过替换主菜单页面,也可以实现完全不同的游戏体验,而无需复用 public 的任何内容(不过这需要大量工作)。

需要哪些工具?

假设你有一个很棒的 0 A.D. 模组点子。除了游戏本体,你还需要什么?这取决于你的方向。你是要添加纹理,还是修改 AI 脚本?下面列出一些对 0 A.D. 模组制作很有帮助的工具:

纹理

很多人认为 Photoshop 是图像编辑的黄金标准,但也有其他选择。GIMP 是流行且免费的图像编辑工具,支持广泛的功能和格式。对 0 A.D. 纹理制作而言,主要需求是能处理含透明通道的 PNG 图像;对于较旧纹理,还需要支持 DDS 格式的插件(引擎会自动将 PNG 转换为 DDS,但 PNG 支持更广泛)。

3D 模型与动画

0 A.D. 支持 COLLADA 格式,可导入静态或动画模型。支持 COLLADA 的 3D 建模软件不少,但在实践中常用且已验证可与本游戏配合的主要有:

  • 3DS Max:商业软件,专业级套件。
  • Blender:免费开源替代方案。不同版本的 COLLADA 支持有差异,制作动画建议使用 2.6+。

音效与音乐

游戏音乐与音效使用 OGG Vorbis 编码格式,该格式有广泛支持。音效采用“分组”方式,允许游戏调整音量、音高等参数,并随机播放。分组由与声音文件放在一起的 XML 数据文件定义(示例可见 audio mod 目录)。

脚本与数据文件

可用于编辑文本和脚本的编辑器很多,因此主要取决于平台与个人偏好。建议关注的核心能力包括:语法高亮、不同换行与编码处理、自定义制表符,以及其他能提升效率的功能。可选工具例如:

  • Eclipse:重量级 IDE,支持多种语言
  • Notepad++:Windows 增强型文本编辑器(Windows 自带 Notepad 是非常不理想的选择)
  • Unix 系工具(如 vimGNU Emacs

此外,如果你想制作基于游戏最新版本的模组,可以考虑通过 git 获取最新数据。对 Windows 用户,我们曾提供过 SVN 里的预编译版本,因此不需要编程/编译知识(更新:自 0 A.D. 迁移到 git 且尚未搭建每日 CI 后,这一点可能已不再成立)。即便如此,你仍应具备 Windows 使用、文件管理和基础排障能力。关于如何获取你所用操作系统的最新游戏版本,请参见 build instructions。

如何让你的模组出现在模组选择界面

你需要在模组文件夹中添加 mod.json 文件。可参考 public(0 A.D.)模组的 mod.json 作为真实示例。

以下是一个(接近最小化的)示例:

{
    "name": "samplemod",
    "version": "1.2.34",
    "label": "Sample Mod",
    "description": "This is an example description",
    "dependencies": ["0ad=0.0.23"]
}
  • 模组通过目录名进行标识。
  • 模组必须定义 nameversionlabeldescriptiondependencies 属性。
  • url 属性是可选项。
  • name 属性可由字母数字字符、下划线和短横线组成。
  • name 用于模组依赖中的版本比较。
  • version 属性只能包含数字和最多两个点号。
  • label 属性是模组的人类可读名称。
  • description 属性是模组功能的人类可读简介。
  • url 属性用于指向该模组相关网站。
  • dependencies 属性是字符串数组,每个字符串要么是模组名,要么是模组版本比较表达式。
  • 模组版本比较表达式由“模组名 + 运算符(=、<、>、<= 或 >=)+ 模组版本”组成。这样模组即可声明向上和向下兼容性。

关于依赖检查的实现细节,请阅读 [modmod.js]source:ps/trunk/binaries/data/mods/mod/gui/modmod/modmod.js 中的函数注释。

许可协议

0 A.D. 以开源形式发布:你可以自由使用、复制、修改和分发游戏源代码与数据文件,前提是你需要标注 Wildfire Games 署名,并允许任何人自由修改和分发你对游戏文件所做的修改。

来源:https://gitea.wildfiregames.com/0ad/0ad/src/branch/main/LICENSE.md

大多数美术资源采用 CC-BY-SA-3.0 发布,而大多数代码采用 GPLv2 发布。你可以通过上方链接(LICENSE.txt)查看每项资源对应的具体许可证。因此,如果你复制了源自 Wildfire Games 的美术/代码(例如来自 0 A.D.),你需要标注正确许可证,并明确说明哪些文件受其约束。一个列出这些文件的简单 .txt 文件就足够了;你也可以在上方链接(LICENSE.txt)中看到示例做法。

虽然并非硬性要求,但在模组中附带相关许可证文件(例如 license_gpl-2.0.txt)是常见做法。

若美术或代码完全由你原创,你可以使用任意许可证发布。请确保非你本人或非 Wildfire Games 的文件都具备合法许可证。

分发你的模组

pyrogenesis 二进制程序还提供了归档构建功能,可将你的模组编译为 zip 文件并预缓存纹理(避免用户首次运行时看到灰色纹理)。默认情况下 zip 不压缩;但如果模组体积较大,且你后续不会再额外压缩(例如打包到自动安装 exe),建议在归档构建时启用压缩。

构建归档的命令行参数如下:

binaries/system/pyrogenesis-mod=mod -mod=public -mod=mymod -archivebuild=binaries/data/mods/mymod -archivebuild-output=mymod.pyromod -archivebuild-compress

在 Windows 上你需要注意点号和 /,命令更接近:

binaries\system\pyrogenesis.exe -mod=mod -mod=public -mod=mymod -archivebuild="binaries\data\mods\mymod" -archivebuild-output="mymod.pyromod" -archivebuild-compress

这会在你的工作目录生成可分发的 mymod.pyromod。用户按上文 [#Howtoinstallmods above] 的方式安装后,就可按 [#Howaremodsused above] 的说明通过 -mod=mymod 命令行参数运行。

你也可以考虑在 mod.io 平台 发布模组。这样你的模组就会出现在 0 A.D. 的模组下载器中。为避免安全问题,我们会执行额外校验步骤:请遵循 论坛中的发布指南

教程

  • Basic3DImplementation - 介绍如何在 Blender 中创建简单的静态 3D 模型,使用 GIMP 为其制作纹理,并将其作为新的 actor 导入 0 A.D.
  • CreatingNewUnits - 面向初学者的简明指南,讲解如何搭建模组并编辑 actor 与模板。
  • Modding GUI and Simulation - 讲解如何在不过度增加维护负担的前提下,较好地修改游戏脚本。
  • Modding Resources - 模组资源指南(当前主要涉及资源的添加与移除)。