全面战争模组中文站全面战争模组中文站
搜索/
教程目录

制作第一个模组

创建时间:2026年9月3日最后更新:2026年9月3日

下面用一个数值修改走完 RPFM 的基本流程:把震旦玉勇的基础近战防御从34改为100

开始前应已完成首次启动与初始设置,并能在依赖项中看到游戏文件。操作时关闭游戏,并暂时停用其他会修改玉勇数据的 Mod。

为什么选择 land_units_tables

对第一次制作 Mod 的用户来说,修改单位数值是最简单、方便且直观的入门操作。它不需要先理解模型、贴图、动画、脚本和多张数据表之间的复杂关系,只要找到一个数值、修改并保存,就能在游戏中看到变化。

这次选择land_units_tables,是因为它保存了陆战单位的许多核心战斗数据。玉勇的基础近战防御就直接写在这张表的melee_defence列中,把34改为100即可得到明显的游戏内变化,非常适合用来确认第一个 Mod 是否制作成功。

这篇教程真正要学习的并不只是把一个数值从34改成100,而是借助这个简单修改,完整走一遍制作数据类 Mod 的基本流程:

  • 新建 Pack、设置文件名并保存到正确位置。
  • 依赖项中查找原版数据表和单位记录。
  • 复制原版记录并创建新表,或者把原始表导入自己的 Pack。
  • 为导入的表文件重新命名,避免使用data__覆盖原版同名数据表。
  • 只保留需要修改的单位记录,减少冲突和不必要的数据。
  • 修改数值、保存 Pack、运行诊断并进入游戏检查结果。

掌握这些操作后,即使以后修改的不是近战防御,也可以沿用相同思路:先找到负责该内容的数据表,再把需要的原版记录放进自己的 Pack,完成修改、保存和测试。

land_units_tables不只包含近战防御。它可以直接设置领导力、近战攻击、冲锋加成、弹药量、精度、装填时间缩减、额外生命值和多种伤害抗性,也可以指定单位使用的护甲、盾牌、近战武器、远程武器、实体、动画、坐骑、阵型间距、属性组和语音,还包含隐蔽与侦测、AI 战斗定位、占领能力、自动结算分类和默认战斗模式等设置。

有些列保存的是数值,有些列只是指向其他表的记录。例如armour选择护甲记录,primary_melee_weapon选择近战武器记录;真正的护甲值、武器伤害和攻击间隔还要到被引用的表中查看。land_units_tables也不负责单位人数、招募费用、招募建筑、单位名称、兵牌或模型外观,这些内容需要其他表或 Loc 文件。第一个练习只修改它直接保存的melee_defence

新建并保存 Pack

  1. 打开PackFile → 新建 PackFile,也可以按Ctrl+N
  2. 在保存窗口中进入《全面战争:战锤 III》的data文件夹。
  3. 将文件名设为tutorial_first_mod.pack并保存。

在 PackFile 菜单中新建 Pack

常见的保存位置如下,实际 Steam 库和盘符以你的电脑为准:

……\SteamLibrary\steamapps\common\Total War WARHAMMER III\data\tutorial_first_mod.pack

不要覆盖data.packdb.pack等原版文件,也不要使用已经存在的 Mod 文件名。新 Pack 默认是Mod类型;如需确认,右键 Pack 根节点,查看更改 PackFile 类型 → Mod左侧是否有选中标记。

找到玉勇的数据

  1. 如果左下角没有依赖项面板,打开视图 → 切换依赖面板
  2. 在依赖项筛选框中输入land_units_tables
  3. 展开游戏文件 → db → land_units_tables,双击data__
  4. 在表格下方的筛选栏中输入wh3_main_cth_inf_jade_warriors_0并按Enter
  5. 确认表格只剩这条玉勇记录。

标签名中的Game-RO表示这是原版只读数据。它只供查找和复制,不能直接保存修改。

复制完整数据行

如果准备使用下面的“方法一:创建空表”,先复制玉勇记录;如果准备使用“方法二:导入原始表”,可以跳过这一节。

  1. 保持数据表的全部列可见。
  2. 点击玉勇记录最左侧的行号,选中整行。行号会随游戏和工具版本变化,不必与图中的1447相同。
  3. Ctrl+C复制。

从 Game-RO 表格复制完整的玉勇数据行

不要在复制前隐藏列。RPFM 只会复制当前显示的列;缺少列的数据粘贴到新表后,会产生空字段或错误引用。复制完成后再隐藏无关列没有问题。

在自己的 Pack 中创建数据表

创建land_units_tables有两种常用方法。第一种是创建空表后粘贴目标记录,Pack 最干净;第二种是把原始表导入 Pack,再删除不需要的记录,适合习惯先取得完整原表再筛选的用户。两种方法最后都只应留下玉勇这一条记录,选择其中一种即可。

方法一:创建空表

  1. 在左上角Pack 内容中右键tutorial_first_mod.pack
  2. 点击创建 → 创建 DB 数据表
  3. 文件名填写tutorial_first_mod
  4. 在下方筛选框输入land_units_tables,然后在中间的下拉框选择land_units_tables
  5. 点击确定

创建 land_units_tables 数据表

完成后,Pack 中会出现db → land_units_tables → tutorial_first_mod。双击tutorial_first_mod打开空白表格。

方法二:导入原始表

  1. Pack 内容中先单击tutorial_first_mod.pack,确保它是当前目标 Pack。
  2. 依赖项筛选框中输入land_units_tables
  3. 展开游戏文件 → db → land_units_tables,右键data__并点击导入
  4. Pack 内容中展开db → land_units_tables,确认已经出现data__
  5. 右键这个data__文件,点击重命名/移动,将文件名改为tutorial_first_mod。不要勾选启用全路径移动,也不要重命名land_units_tables文件夹。

导入后必须重命名data__ 如果 Mod 中仍然保留db/land_units_tables/data__这个原版内部路径和文件名,游戏加载 Mod 时会用它覆盖原版同名数据表,而不是只覆盖你修改的玉勇记录。这不会改坏硬盘中的原版data.pack,但会让你的 Mod 接管整张原版表,容易造成大范围兼容问题。应把文件改成自己独有的名称,例如tutorial_first_mod

  1. 双击重命名后的tutorial_first_mod,在表格筛选栏中输入wh3_main_cth_inf_jade_warriors_0并按Enter
  2. 点击玉勇记录最左侧的行号,选中完整一行。
  3. 清空筛选栏并按Enter,让全部记录重新显示。此时玉勇这一行仍应保持选中。
  4. 使用表格工具栏或右键菜单中的反选;如果使用右键菜单,应在仍被选中的玉勇行上点击右键。确认玉勇不再处于选中状态,而其他记录全部被选中。
  5. 在任意一个已选中的其他记录上点击右键,再点击删除行,只留下玉勇记录。
  6. 确认右下角的行数显示为1/1,并再次核对剩下的Keywh3_main_cth_inf_jade_warriors_0

执行反选前必须先清空筛选条件。反选只会处理当前表格中可见的记录;如果筛选结果中只显示玉勇,直接反选不会选中那些被筛选隐藏的记录,也就无法删除它们。

修改数值

如果使用方法一,先完成下面两步;如果使用方法二,表格中已经只剩玉勇,可以直接修改Melee Defence

  1. 右键空白表格,点击粘贴为新行,也可以按Ctrl+Shift+V
  2. 确认右下角的行数显示为1/1

接下来两种方法的操作相同:

  1. 为了方便查看,可以打开表格下方的Columns,只保留KeyMelee Defence。使用方法一时,这一步必须放在复制完成之后。
  2. 双击Melee Defence列中的34,输入100并按Enter

在自己的 Pack 中把玉勇近战防御改为 100

左侧文件位于自己的 Pack 中,标签也不再以Game-RO开头,因此这里的内容可以编辑。不要修改Key,它用于确定这条记录覆盖的是哪个原版单位。

保存并运行诊断

  1. Ctrl+S保存 Pack。
  2. 确认窗口标题末尾的*消失,状态栏显示All packs saved.
  3. 打开视图 → 切换诊断窗口
  4. 点击诊断面板左侧的三角形按钮重新检查。
  5. 确认错误、警告和信息三个计数都是0

诊断结果没有错误、警告或信息

诊断通过只说明 Pack 的结构和引用没有发现问题,不等于已经完成游戏内验证。

在游戏中检查

  1. 关闭 RPFM 或保持 Pack 已保存,然后打开《全面战争:战锤 III》启动器。
  2. 在模组管理器中启用tutorial_first_mod.pack,暂时关闭其他 Mod。
  3. 启动游戏并进入自定义战斗。
  4. 选择震旦军队,查看玉勇的近战防御。

预期结果是玉勇的近战防御明显提高。游戏版本、难度、技能和战场效果可能继续修改单位面板中的最终数值,因此不要只凭是否恰好显示100判断 Pack 有没有加载。

如果启动器中找不到 Mod,检查 Pack 是否位于游戏的data文件夹、扩展名是否确实为.pack、PackFile 类型是否为Mod。如果数值没有变化,先确认 Mod 已启用,再关闭其他会修改land_units_tables的 Mod 后重试。

完成测试后,可以继续保留这个练习 Mod,也可以先在启动器中停用,再从data文件夹移走tutorial_first_mod.pack

land_units_tables 各列作用

RPFM 会把字段名整理成带空格的标题,例如melee_defence显示为Melee Defence。下面按当前《全面战争:战锤 III》Schema v54 中可编辑的60列列出作用,并使用 Schema 中的原始字段名,方便在不同语言界面和其他资料中核对。当前练习不需要修改除melee_defence以外的列;复制现有单位时,其他列保持原值最安全。

身份、类型与单位构成

列名 作用
key 这条陆战单位记录的唯一标识。其他表通过它找到该单位;本教程保留原值,才能覆盖原版玉勇。
category 单位的大类,例如近战步兵、远程步兵、骑兵或战争机器,供战斗、界面和其他系统分类。
class category更具体的单位类别,供界面、AI和部分战斗逻辑判断。
short_description_text 单位短说明的文本键,指向unit_description_short_texts_tables,不是直接填写的中文。
historical_description_text 单位长说明的文本键,指向unit_description_historical_texts_tables
campaign_action_points 战役地图行动点,主要用于领主及其带领的军队;普通兵种通常照抄相近原版单位。它不是战场移动速度。
man_entity 单个士兵或生物使用的战斗实体记录,关联移动速度、质量、碰撞、基础生命值等底层属性。
man_animation 单位成员使用的战斗动画集合。动画与骨架、武器姿态不匹配会造成动作异常。
num_mounts 该单位包含的坐骑数量。普通骑兵通常与单位中的骑手数量对应,单体骑乘角色通常为1
mount 坐骑记录。步兵通常留空;骑兵、骑乘角色和部分载具需要与num_mounts配套。
spacing 单位成员的阵型间距与排列规则,指向unit_spacings_tables
rank_depth 单位采用的默认阵列纵深,也就是阵型默认排成多少排。
morale 单位的基础领导力。实际战斗数值还会受到难度、技能、效果和战场状态影响。
bonus_hit_points man_entity基础生命值之上增加的生命值。总生命值还与实体和单位人数有关。
training_level 训练等级。RPFM Schema 注明战锤系列应保持为trained,其他选项已经被设计弃用。

防护、武器与基础战斗数值

列名 作用
armour 指向unit_armour_types_tables中的护甲记录,由被引用记录决定护甲数值。
shield 指向unit_shield_types_tables中的盾牌记录,决定远程格挡等盾牌属性;无盾单位通常使用none
primary_missile_weapon 主要远程武器记录,关联远程武器和弹丸;没有远程攻击的单位通常留空。
accuracy 单位使用远程武器时的基础精度。最终散布还会受到武器、弹丸和其他参数影响。
primary_ammo 主要远程武器的基础弹药量。没有主要远程武器时通常为0
primary_melee_weapon 主要近战武器记录,关联基础伤害、破甲伤害、攻击间隔和溅射等数据。
melee_attack 基础近战攻击,影响近战攻击命中对手的概率。
charge_bonus 基础冲锋加成,在冲锋接战后暂时提高近战攻击和武器伤害。
melee_defence 基础近战防御,影响单位躲开敌方近战攻击的概率;本教程把这一项从34改为100
num_engines 单位包含的战争机器或火炮实体数量,需要与engine等记录配套。
engine 单位使用的战场引擎记录,主要用于火炮、战车或其他战争机器。
articulated_record 铰接式载具记录,用于具有多段连接结构的特殊车辆;普通单位通常留空。
is_male 单位成员的性别标记,可能被语音、动画或其他内容选择逻辑使用。

侦测、属性、语音与地形

列名 作用
visibility_spotting_range_min 可见性系统使用的最小侦测距离参数。具体结果还会受到隐藏类型和其他倍率影响。
visibility_spotting_range_max 可见性系统使用的最大侦测距离参数,不等同于远程武器射程。
attribute_group 指向单位属性组,可集中赋予先锋部署、鼓舞、免疫心理等属性。
spot_dist_tree 单位与树林隐蔽目标交互时使用的侦测距离参数。
spot_dist_scrub 单位与灌木隐蔽目标交互时使用的侦测距离参数。
reload 对远程武器装填时间的百分比缩减。它会与武器基础装填时间及其他加成共同计算。
selection_vo 选中单位时使用的主要语音分类。
selected_vo_secondary 选中语音的第二层分类,通常补充兵种或战斗角色信息。
selected_vo_tertiary 选中语音的第三层分类,通常补充文化等信息。三项语音字段需与现有音频配置匹配。
hiding_scalar 单位被敌人发现时使用的隐藏倍率。该字段容易受其他可见性参数影响,制作新单位时应复制相近原版单位。
ground_stat_effect_group 地形对单位数值产生影响时使用的分组,例如区分小型和大型单位。
secondary_ammo 特殊单位的次要弹药量。没有第二套弹药机制的单位通常为0

伤害修正与战斗行为

列名 作用
damage_mod_flame 火焰伤害修正。0表示不修正,正值降低所受火焰伤害,负值增加所受伤害。
damage_mod_magic 魔法伤害修正。0表示不修正,正值降低所受魔法伤害,负值增加所受伤害。
damage_mod_physical 物理伤害修正,通常对应物理抗性或物理弱点。
damage_mod_missile 远程伤害修正,通常对应远程抗性或远程弱点。
damage_mod_all 对全部伤害生效的总伤害修正。它会与其他抗性和游戏限制共同计算。
ai_usage_group AI在战斗中如何定位和使用这个单位,例如前线近战、远程、火炮或高价值单位。
can_skirmish 是否允许使用自动规避近战敌人的散兵模式。勾选表示允许。
mounted_draughts 牵引生物与载具组合使用的专用标记,不是普通骑兵开关;应照抄结构相同的原版单位。
sync_locomotion 是否强制单位成员同步播放行走、奔跑和冲锋动画。只在确实需要同步动作的单位上使用。

占领、特殊机制与默认状态

列名 作用
capture_tier 单位占领普通控制点时使用的占领能力档位。
key_building_capture_tier 单位占领关键建筑或关键控制目标时使用的占领能力档位。
score_capture_tier 据点战、统御模式等计分规则使用的单位占领分类。
harmony_amplification_type 震旦宁和增幅类型。Schema 注明还需要单位具有encourage属性才会工作。
can_brace 单位是否能够进入抵御冲锋的列阵状态。勾选只代表允许,实际效果还受朝向、移动状态等条件影响。
first_person 战争机器第一人称射击所使用的配置,普通单位通常留空。
ar_unit_category 自动结算系统使用的单位类别,arautoresolve的缩写。
healing_power 治疗相关的倍率字段。原版单位通常保持为1;修改前应配合具体治疗能力进行验证。
spell_mastery 法术威力倍率。普通单位通常为1,主要对施法单位有意义。
infinite_secondary_ammo 是否让次要弹药不受数量限制。只对实际使用次要弹药机制的单位生效。
default_guard_mode 单位进入战斗时是否默认开启守卫模式。勾选表示默认开启。

这些列并不是彼此独立的开关。引用字段必须指向实际存在且彼此兼容的记录,部分数值还会被技能、难度、战役效果和战斗规则继续修正。制作新兵种时应从类型最接近的原版单位复制完整记录,再逐项修改。