一个可在战斗中正常工作的陆战单位,不是由一张表单决定的。main_units_tables负责战役与名册层面的单位记录,land_units_tables负责战场上的单位配置,后者再连接战斗实体、近战武器、护甲、盾牌、属性组和间距;近战武器还可以继续连接接触效果。
本文讲清这些表单的职责、连接关系和当前字段,不重复兵牌、说明文本、招募、兵种许可、模型与动画的完整制作流程。你可以把本文当作制作或排查陆战单位时的“字段地图”,但不能把某个示例数值当成所有兵种的标准答案。
本文列名使用数据库原名,例如primary_melee_weapon。RPFM 通常把它显示为Primary Melee Weapon。截图中的玉勇、古墓王近战武器和其他原版记录只是用来展示字段与数据结构,不代表只能复制这些模板。
先看完整数据链
main_units_tables.land_unit
↓
land_units_tables
├─ man_entity ───────────────→ battle_entities_tables
├─ primary_melee_weapon ─────→ melee_weapons_tables
│ └─ contact_phase
│ ↓
│ special_ability_phases_tables
│ ├─ special_ability_phase_stat_effects_tables
│ ├─ special_ability_phase_attribute_effects_tables
│ ├─ phase_display → special_ability_phase_displays_tables
│ └─ special_ability_phases_to_additional_ui_effects_junctions_tables
├─ armour ───────────────────→ unit_armour_types_tables
├─ shield ───────────────────→ unit_shield_types_tables
├─ attribute_group ──────────→ unit_attributes_groups_tables
│ └─ unit_attributes_to_groups_junctions_tables
│ └─ unit_attributes_tables
└─ spacing ──────────────────→ unit_spacings_tables
formations_tables
└─ formations_to_subcultures_tables
特殊阵型技能
└─ special_abilities_specific_formation_types_tables
这条链需要先分成三个层次理解:
main_units_tables回答“战役和名册里这是什么单位、多少人、多少钱、什么等级”。
land_units_tables回答“进入战斗后这一队兵使用什么实体、武器、防具、属性和基础战斗值”。
- 被引用的子表回答“每个士兵怎样移动、碰撞、攻击、承受伤害和应用特殊状态”。
制作一个全新单位时还需要兵牌、本地化、兵种许可、战役招募等表单。本文中的表单负责陆战核心数据,不会单独让单位自动出现在自定义战斗或建筑招募列表中。
开始前:复制记录而不是破坏共享数据
不要直接修改或保存db.pack。建立自己的Mod类型 Pack 后,可以使用下面两种方式准备表单。
新建空表单
- 在自己的 Pack 上右键,新建需要的 DB 表。
- 新增记录。
- 从依赖项中的同类原版记录逐列复制。
- 立刻把主 Key 改成带个人前缀的新 Key。
这种方式适合unit_armour_types_tables之类字段很少的表。land_units_tables和battle_entities_tables字段很多,手工复制更容易漏列。
从依赖项导入原版表单
- 在依赖项中搜索表单名或模板 Key。
- 打开原版表单,确认记录与目标机制相同。
- 将原版表单导入自己的 Pack。
- 把导入后的
data__重命名为自己的子表名。
- 选中要保留的记录,反选后删除其他记录。
- 修改保留记录的主 Key,并修复所有指向它的引用。
原版 DB 子表通常也叫data__。如果把导入后的子表继续命名为data__,Mod 可能覆盖原版同路径子表,而不是只覆盖你留下的几行。每张导入表都应改成清楚且唯一的名称,例如twcn_tutorial_land_units。
什么时候必须复制子记录
一条近战武器、战斗实体、护甲、盾牌、属性组或间距记录可以被多个单位共同引用。如果你直接修改共享记录,所有引用它的单位都可能一起变化。
- 只想改一个单位:复制子记录、改成新 Key,再让新单位引用新记录。
- 想让一整类单位同步变化:可以有意共用记录,但要先查清全部引用者。
- 只是复用完全相同的原版行为:可以继续引用原版 Key,不必为了“看起来完整”复制所有子表。
怎样选择模板
模板要按结构和机制选择,不能只按外观选择。
| 目标单位 |
优先比较的原版模板 |
| 普通持盾步兵 |
同样的人数级别、盾牌方向、武器动画、队形密度和体型。 |
| 双手重武器步兵 |
同样的武器长度、攻击间隔、溅射目标体型和动画套装。 |
| 枪兵或长戟兵 |
同样的反大型定位、武器长度、迎击能力和队列深度。 |
| 骑兵 |
同样的坐骑类型、实体质量、冲锋距离、转向速度和编队间距。 |
| 战车 |
同样的牵引结构、载具、碰撞攻击、质量和转向方式。 |
| 单体怪兽 |
同样的实体尺寸、碰撞体、溅射上限、生命结构和肢解设置。 |
| 飞行单位 |
同样的飞行速度、飞行冲锋速度、起降动画与实体体型。 |
先比较两到三个模板。某个0、空值或勾选框可能是该单位的特殊例外,不一定是通用默认值。想找原版数据时,优先从已知单位的main_units_tables.land_unit进入,再沿引用向下追踪;想找某种机制时,则反向筛选相关字段,例如筛选contact_phase非空的近战武器。
陆战单位:land_units_tables
land_units_tables是战场单位的中心表。它保存单位分类、基础近战数值、装备入口、实体入口、动画入口、属性组、间距、伤害修正和若干特殊规则。
身份、分类与说明

| 字段 |
含义与使用要点 |
key |
陆战单位唯一 Key。main_units_tables.land_unit和许多其他表会引用它。新单位必须使用不会与原版或其他 Mod 冲突的前缀。 |
category |
单位的大类,例如近战步兵、远程步兵、骑兵、怪兽或载具。它会参与界面、AI和战斗分类,不应只为了改变兵牌文字而随意替换。 |
class |
更细的战斗职责分类。它与category共同描述单位定位,但不负责全部战斗行为。优先复制职责相近的原版值。 |
short_description_text |
单位短说明所使用的文本 Key。它不是玩家看到的最终中文句子;实际文本需要在本地化数据中提供。 |
historical_description_text |
单位长说明或背景说明所使用的文本 Key,同样需要对应本地化。 |
campaign_action_points |
战役行动点相关的单位级字段。普通陆战单位通常沿用模板;不要把它误认为战场移动速度。战场速度在battle_entities_tables。 |
单位显示名称并不是当前 RPFM Schema 中land_units_tables的普通 DB 字段。不要因为这里看不到“名称”就把名称文字塞进key或说明字段;显示名称应按兵种本地化链处理。
动画、战斗实体、士气和生命

| 字段 |
含义与使用要点 |
man_entity |
引用battle_entities_tables.key,决定基础生命、速度、质量、碰撞、体型和转向等实体行为。 |
man_animation |
单位使用的战斗动画集合。DB 可以填写动画 Key,但不能凭空补齐模型、骨架、动画片段和事件;这些资产需要在 AssetEditor 等工具中正确制作。 |
morale |
单位基础士气。最终士气还会受到难度、将领、技能、疲劳、伤亡、侧后包抄和效果等影响。 |
bonus_hit_points |
加在战斗实体基础生命上的单位级额外生命。不要只看这一列判断最终单实体生命;还要检查battle_entities_tables.hit_points。 |
training_level |
训练等级枚举,用于描述单位训练层次并参与相关系统判断。它不是简单的“自动增加全部攻防”按钮,应沿用同类模板并实测。 |
坐骑、近战武器、远程武器、队列和盾牌

| 字段 |
含义与使用要点 |
num_mounts |
单位使用的坐骑数量配置。它必须与单位人数、坐骑结构、动画和原版模板相匹配;不是单纯的视觉数量。 |
mount |
坐骑记录 Key。步兵通常留空;骑兵、怪兽骑手和部分载具需要完整的坐骑与动画链。 |
primary_melee_weapon |
主要近战武器 Key,引用melee_weapons_tables.key。武器伤害、长度、溅射和接触效果从这里进入。 |
primary_missile_weapon |
主要远程武器 Key,引用missile_weapons_tables.key。完整远程链见《远程武器详解》。纯近战单位通常留空。 |
rank_depth |
单位默认或偏好的队列纵深。它影响初始排列方式,但玩家拖动阵线、阵型技能和地形仍会改变最终编队。 |
shield |
盾牌类型 Key,引用unit_shield_types_tables.key。留空表示不通过这条记录获得盾牌防护。 |
精度、护甲与基础近战值
| 字段 |
含义与使用要点 |
accuracy |
单位自身的远程命中能力。它会与投射物的校准区域、校准距离和精度加成共同影响落点,不是独立的命中率百分比。纯近战单位通常沿用模板值。 |
armour |
护甲类型 Key,引用unit_armour_types_tables.key。面板护甲值来自被引用的护甲记录,不应把数值直接写进这一列。 |
melee_attack |
单位基础近战攻击,主要影响近战命中能力。最终值还会受经验、技能、难度和阶段效果影响。 |
melee_defence |
单位基础近战防御,主要影响被近战命中的难度。它不是盾牌远程格挡概率。 |
charge_bonus |
单位冲锋加成。它与战斗实体的冲锋速度、冲锋距离和质量不同,后者决定冲锋怎样发生。 |
说明、间距、载具和训练

| 字段 |
含义与使用要点 |
spacing |
单位间距 Key,引用unit_spacings_tables.key。它决定紧密、松散、下马、溃逃、龟甲阵和盾墙等多组间距。 |
num_engines |
单位拥有的战场引擎数量,主要用于火炮和其他带引擎单位。普通步兵保持模板值。 |
engine |
战场引擎记录 Key。传统火炮的武器、载具和乘员关系常会继续沿这条链展开。 |
articulated_record |
组合式或关节式载具记录入口,供特定载具结构使用。没有同类模板和资产时不要自行填写。 |
num_engines、engine、articulated_record、mount和num_mounts不是五个可以独立拼装的开关。制作火炮、战车或复杂载具时,应复制结构相同的完整原版单位,再逐层替换资产和数据。
性别、可见性、属性组、地形发现与装填

| 字段 |
含义与使用要点 |
is_male |
单位实体的性别上下文,可能影响语音或其他性别相关选择。它不会自动替换模型或动画。 |
visibility_spotting_range_min |
最小发现距离相关参数。它不是武器最小射程,也不是单位自身隐蔽值。 |
visibility_spotting_range_max |
最大发现距离相关参数。最终发现行为还会受到环境、目标和引擎规则影响。 |
attribute_group |
属性组 Key,引用unit_attributes_groups_tables.group_name。恐惧、潜行、免疫心理等常通过这条链进入。 |
spot_dist_tree |
在树林环境中发现目标的距离参数。应与相似侦察定位的原版单位比较。 |
spot_dist_scrub |
在灌木或低矮植被环境中发现目标的距离参数。不要把它当成树林隐蔽开关。 |
reload |
单位级装填修正,不是基础装填秒数。远程投射物的基础装填时间位于projectiles_tables.base_reload_time,最终射速还受动画、经验和效果影响。 |
selection_vo |
主要选中语音类别。它选择语音配置,不保存实际音频文件。 |
语音、隐蔽、地面效果、弹药与抗性修正

| 字段 |
含义与使用要点 |
selected_vo_secondary |
第二套选中语音类别。是否使用以及何时使用取决于对应语音系统和模板。 |
selected_vo_tertiary |
第三套选中语音类别。没有同类原版结构时保持空值。 |
hiding_scalar |
单位隐蔽相关倍率。最终隐蔽还会受到属性、地形和战斗规则影响。 |
ground_stat_effect_group |
地面或地形统计效果组入口,用于特定地面状态下的数值变化。普通单位通常复用模板。 |
primary_ammo |
主要弹药池数量。它不是近战攻击次数。 |
secondary_ammo |
次要弹药池数量。它也不等于“第二种可切换弹药”;哪件远程武器消耗次要池由远程武器表决定。 |
damage_mod_flame |
单位受到火焰伤害时的单位级修正。其正负方向并不一定符合直觉,修改前应查看当前 Schema 说明并比较原版抗性单位。 |
damage_mod_magic |
单位受到魔法攻击时的修正。它与法术抗性、物理抗性、远程抗性不是同一判定。 |
伤害修正、AI和战斗行为

| 字段 |
含义与使用要点 |
damage_mod_physical |
物理抗性相关单位级修正。不要与护甲值混为一谈;护甲和物理抗性作用于不同判定。 |
damage_mod_missile |
远程抗性相关单位级修正。当前 Schema 的数值方向具有反直觉性,0表示不修改;不要凭“正数应该更强”猜测。 |
damage_mod_all |
对全部伤害的总修正入口。它会与其他修正共同作用,错误数值很容易造成几乎不受伤或承伤异常。 |
ai_usage_group |
AI 对该单位用途的分类。它影响 AI 如何理解单位定位,但不会替单位补齐武器、阵型或战役招募。 |
can_skirmish |
是否允许使用散兵模式。没有远程武器和射击动画时,勾选也不会产生有效远程行为。 |
can_brace |
是否允许迎击或结阵抵抗冲锋。真正的迎击表现还取决于武器、动画、朝向、站立状态和游戏规则。 |
mounted_draughts |
是否使用牵引坐骑上下文,常见于特定载具和火炮结构。普通骑兵不应仅凭字面随意勾选。 |
sync_locomotion |
是否同步相关实体的移动节奏,供特定坐骑、载具或组合实体使用。错误设置可能造成滑步或实体不同步。 |
占点、自动结算、法术与默认模式


| 字段 |
含义与使用要点 |
capture_tier |
一般目标的占领等级或占点能力层次。不要只为“占点更快”孤立修改,应比较同类单位的整组三个占点字段。 |
key_building_capture_tier |
关键建筑目标的占领等级。适用目标与普通占点并不完全相同。 |
score_capture_tier |
计分型占领目标的占领等级。用于特定战斗目标规则。 |
harmony_amplification_type |
震旦阴阳增幅类型。非该机制单位通常留空;填写枚举不会自动补齐完整阴阳系统。 |
first_person |
第一人称模式相关配置入口。没有相应镜头、武器和单位支持时不要自行填写。 |
ar_unit_category |
自动结算使用的单位类别。它影响系统如何评估单位,不等于战斗中的category。 |
healing_power |
治疗能力或治疗强度相关参数。它不等于单位每秒自动回血;仍需有实际触发治疗的能力、阶段或其他机制。 |
spell_mastery |
法术强度相关单位级数值。没有法术和施法能力时,单独修改不会让单位成为施法者。 |
infinite_secondary_ammo |
是否让次要弹药池无限。它不影响主要弹药池。 |
default_guard_mode |
单位进入战斗时是否默认开启守卫模式。它只改变默认状态,不代表玩家不能切换。 |
基础近战数值到底放在哪里
| 想修改的内容 |
应查看的字段 |
| 近战命中能力 |
land_units_tables.melee_attack |
| 近战闪避能力 |
land_units_tables.melee_defence |
| 冲锋加成 |
land_units_tables.charge_bonus |
| 基础士气 |
land_units_tables.morale |
| 武器普通/破甲伤害 |
melee_weapons_tables.damage、ap_damage |
| 对步兵/大型加成 |
melee_weapons_tables.bonus_v_infantry、bonus_v_large |
| 攻击间隔 |
melee_weapons_tables.melee_attack_interval,同时受动画限制 |
| 基础生命 |
battle_entities_tables.hit_points加land_units_tables.bonus_hit_points |
| 战场速度和质量 |
battle_entities_tables中的移动、质量与体型字段 |
不要把武器伤害写到melee_attack,也不要把跑速写到campaign_action_points。面板上相邻的数值,数据库里可能属于不同表。
主单位:main_units_tables
main_units_tables是单位在战役、名册、费用和规模层面的主记录。它通过land_unit连接战场单位。创建一条land_units_tables记录但没有对应主单位时,你只做出了战斗数据的一部分。
主键、陆战连接与基本限制

| 字段 |
含义与使用要点 |
unit |
主单位唯一 Key。招募、兵种许可、兵牌和其他名册系统通常引用它。它可以与land_units_tables.key同名,但并非数据库强制要求。 |
land_unit |
对应的陆战单位 Key,引用land_units_tables.key。这是主单位进入战斗数据的核心连接。 |
additional_building_requirement |
额外建筑需求。它不是唯一的招募建筑入口,实际可招募位置仍由建筑、兵种组和招募连接表决定。 |
campaign_cap |
战役可拥有数量上限。应结合兵种上限效果和其他系统理解;不要把多人上限填到这里。 |
caste |
单位阶层或种姓分类,用于特定派系和系统判断。没有对应机制时复制同阵营模板。 |
create_time |
基础招募回合数。最终招募时间还会受建筑、效果、全局招募和其他修正影响。 |
is_naval |
是否作为海军单位。战锤 III 的普通陆战新兵种不应随意勾选。 |
人数、费用、权重与海军遗留字段

| 字段 |
含义与使用要点 |
num_men |
标准单位规模下的实体数量。游戏的单位规模选项会按规则缩放,单体单位通常为1。 |
weight |
单位权重或规模分类枚举,供部分战役、AI或结算逻辑使用。它不是battle_entities_tables.mass。 |
recruitment_cost |
基础招募费用。最终费用会受到难度、建筑、技能、科技和效果修正。 |
upkeep_cost |
基础维护费。它不是每回合固定最终值。 |
multiplayer_cost |
多人或自定义战斗使用的基础费用。不要用它代替战役招募费。 |
multiplayer_cap |
旧式或通用多人数量上限字段。快速战斗还可能使用multiplayer_qb_cap。 |
naval_unit |
海军单位记录入口。普通陆战单位通常留空。 |
num_ships |
船只数量,属于海战结构遗留字段。 |
min_men_per_ship |
每艘船最少人数。普通陆战单位保持模板默认值。 |
max_men_per_ship |
每艘船最多人数。普通陆战单位保持模板默认值。 |
resource_requirement |
招募所需的资源 Key。是否真的受资源限制还取决于资源和招募系统的其他连接。 |
region_unit_resource_requirement |
地区兵种资源需求。只在对应地区资源机制下使用。 |
百科、语音、界面分组、等级与头像

| 字段 |
含义与使用要点 |
special_edition_mask |
特别版本或内容授权掩码。普通 Mod 单位通常复制同阵营可用模板,不要用它自行模拟 DLC 权限。 |
in_encyclopedia |
是否进入百科或相关展示。勾选不代表百科内容和本地化会自动生成。 |
audio_voiceover_culture |
单位语音文化。它选择语音资源集合,不会把其他文化的模型或动画一起带来。 |
ui_unit_group_land |
陆战界面分组,用于名册或单位信息的归类。它不决定建筑招募路径。 |
ui_unit_group_naval |
海军界面分组。普通陆战单位通常留空或沿用模板。 |
tier |
单位等级或层级,用于界面、AI和若干规则。它不等于建筑等级,也不会自动建立招募条件。 |
is_high_threat |
是否被视为高威胁单位,供界面或 AI 等系统使用。 |
porthole_camera |
单位头像或肖像镜头配置。没有正确模型和场景时,单独复制可能得到错误构图。 |
坐骑、战役生命、战力与攻城

| 字段 |
含义与使用要点 |
mount |
主单位层面的坐骑入口,供特定单位和界面系统使用。它必须与陆战单位及坐骑链一致。 |
use_hitpoints_in_campaign |
战役层是否使用生命值状态。它不改变战斗实体基础生命。 |
unit_scaling |
单位规模缩放相关的旧式或特殊规则字段。没有明确同类模板时保持原值。 |
porthole_composite_scene |
头像使用的合成场景。它与porthole_camera共同影响最终肖像。 |
melee_cp |
近战战力估值。它供自动结算、AI或相关系统参考,不会直接增加近战攻击。 |
missile_cp |
远程战力估值。它不等于投射物伤害,也不会让近战单位获得远程攻击。 |
can_siege |
单位是否具有参与特定攻城行为的资格。不要把它理解为“能否进入攻城战”。 |
语音覆盖、经验限制、食物与怪兽标记


| 字段 |
含义与使用要点 |
audio_voiceover_culture_override |
覆盖基础语音文化的配置。仅在原版同类结构确实使用时填写。 |
restrict_xp_gain_in_campaign |
是否限制战役经验获取。它不控制初始经验等级。 |
audio_voiceover_actor_group |
语音演员组,进一步指定单位使用哪组声音。 |
food_cost |
招募或使用单位时的食物成本,只有接入对应资源机制才有意义。 |
has_spoken_vo |
是否具有口语语音。勾选不会自动生成或复制音频。 |
is_monstrous |
怪兽单位分类标记,可能影响界面、语音或规则判断。它不决定实体尺寸;尺寸在battle_entities_tables.size。 |
multiplayer_qb_cap |
快速战斗中的数量上限。需要与当前多人规则共同检查。 |
vo_is_dragon |
是否使用龙类语音上下文。仅修改此项不会改变单位物种。 |
vo_is_dinosaur |
是否使用恐龙类语音上下文。仅修改此项不会改变单位物种。 |
optional_ui_element |
可选的单位界面元素入口。没有配套界面定义时保持空值。 |
barrier_health |
单位屏障生命上限。它与普通生命分开;屏障治疗还可以由能力阶段控制。 |
can_be_bribed |
单位是否能被相应贿赂机制作用。只有存在该战役或战斗机制时才有实际意义。 |
point_allowance_weight |
点数额度或阵容限制系统使用的权重。它不是招募费或多人费用。 |
is_renown |
是否属于精英名望单位。勾选不会自动补齐精英招募池、上限、名称和兵牌。 |
少见或遗留字段
当前 RPFM Schema 还可能显示下列兼容字段。它们不是普通新兵种的必填项,缺少明确原版模板时应保持模板值:
| 字段 |
含义与使用要点 |
prestige |
旧式声望或单位层次数据,当前普通陆战制作通常不从这里入手。 |
religion_requirement |
宗教需求,只有相应宗教系统和招募链使用时才有效。 |
recruitment_movie |
招募影片入口。没有对应影片资产时不要自行填写路径。 |
world_leader_only |
是否只允许世界领袖等特殊主体使用,属于特定战役限制。 |
can_trade |
单位交易或转让相关旧式标记。它不是外交招募开关。 |
unique_index |
旧式唯一索引。不要把它当作新单位 Key,也不要随意复制冲突值。 |
战斗实体:battle_entities_tables
battle_entities_tables描述一个战斗实体怎样移动、转向、碰撞、被投射物命中、被击飞和死亡。多个单位可以共享同一实体,因此修改前必须反查引用。
移动与冲锋进入距离

| 字段 |
含义与使用要点 |
key |
战斗实体唯一 Key,由land_units_tables.man_entity引用。 |
type |
实体类型分类。它会影响引擎如何理解实体,不应只按名称猜测。 |
walk_speed |
步行速度。单位实际移动还受动画和其他状态影响。 |
run_speed |
奔跑速度,是战场移动速度的核心字段之一。动画位移和速度差异过大时会滑步。 |
acceleration |
从低速加速到目标速度的能力。数值与单位起步手感有关。 |
deceleration |
减速和停止能力。过低可能造成明显拖行,过高可能显得瞬间刹停。 |
charge_speed |
冲锋阶段速度。它不等于land_units_tables.charge_bonus。 |
strafe_speed |
侧移速度,只有支持侧移动作和行为的单位才会自然使用。 |
charge_distance_commence_run |
距离目标多远开始为冲锋加速或进入奔跑阶段。 |
charge_distance_adopt_charge_pose |
距离目标多远采用冲锋姿态。必须与冲锋动画时长和速度匹配。 |
charge_distance_pick_target |
距离目标多远开始选取具体接战实体。它会影响接触前的目标分配。 |
三个冲锋距离描述的是冲锋过程中的不同阶段。只改其中一个可能造成过早摆姿势、迟迟不加速、冲到队列前才选目标或实体挤成一团。
碰撞体积、质量、生命与转向

| 字段 |
含义与使用要点 |
radius |
实体碰撞半径。它影响站位、接触和穿行,不是攻击范围。 |
shape |
实体碰撞形状。应与模型和同类原版实体相匹配。 |
radii_ratio |
非圆形碰撞体各方向半径比例。随意修改可能造成看似没碰到却发生碰撞。 |
mass |
实体质量,参与碰撞、冲锋和击退。它不是主单位的weight。 |
height |
实体高度参数,参与命中、碰撞和其他空间判断。它不直接缩放模型。 |
fire_arc_close |
近距离射击弧或朝向限制相关参数,主要供具有投射行为的实体使用。 |
turn_speed |
转向速度。过高可能瞬间转身,过低则会跟不上目标。 |
hit_points |
战斗实体基础生命。最终单位级单实体生命还要结合land_units_tables.bonus_hit_points。 |
allow_turn_to_move_anim |
是否允许使用“转向后移动”动画逻辑。必须有匹配动画。 |
allow_static_turn_anim |
是否允许原地转向动画。没有对应动画时勾选可能产生僵硬或滑动。 |
min_turning_speed |
使用转向逻辑所需的最低速度阈值。与转向动画和移动常量共同工作。 |
飞行、体型、坡度、音效与战斗反应

| 字段 |
含义与使用要点 |
fly_speed |
飞行移动速度。地面单位保持模板值。 |
flying_charge_speed |
飞行冲锋速度。它需要与俯冲或空中冲锋动画配合。 |
size |
实体尺寸分类。它会参与目标选择、武器加成、穿透和动画等判断;不是模型缩放。 |
gradient_strategy |
坡度和地形适应策略。不同步兵、载具、怪兽和飞行实体可能使用不同策略。 |
audio_entity_type |
实体动作与受击等音频类别。它不等于单位语音文化。 |
combat_reaction_radius |
战斗反应或接敌感知半径。它不是武器长度。 |
entity_effects |
实体级效果配置入口,供特定血迹、尘土或其他实体表现使用。 |
抗硬直、软碰撞和投射物命中体积

| 字段 |
含义与使用要点 |
hit_reactions_ignore_chance |
忽略普通受击反应的概率或机会参数。它不减少伤害,只影响反应。 |
knock_interrupts_ignore_chance |
忽略击倒、击退等打断反应的机会参数。大型实体通常与步兵不同。 |
soft_collision_offset_z |
软碰撞在垂直方向的偏移。没有同类模板时不要自行调试。 |
can_climb_ladder_and_stair_pipes |
是否能使用梯子和城墙楼梯等路径。勾选还需要模型、动画和寻路适配。 |
projectile_intersection_radius_ratio |
投射物命中判定半径相对实体半径的比例。过大容易隔空命中,过小会穿模未命中。 |
projectile_penetration_resistance |
实体对投射物穿透的阻力。它与投射物自己的穿透规则共同决定结果。 |
projectile_penetration_speed_change |
投射物穿过该实体后的速度变化。它不是直接伤害减免。 |
光环、追踪、特效筛选与投射施法

| 字段 |
含义与使用要点 |
aura_vfx |
实体常驻或相关光环特效入口。引用的特效资产必须存在。 |
porthole_camera |
实体层的头像镜头覆盖入口。与主单位头像配置冲突时应沿原版模板核对。 |
min_tracking_ratio |
追踪或朝向动画的最小比例参数。当前 Schema 没有公开完整公式,应复制同骨架模板。 |
max_tracking_ratio |
追踪或朝向动画的最大比例参数。与最小值成组使用。 |
vfx_filter_id |
实体特效筛选器标识,用于特定 VFX 过滤。没有配套特效时保持空值。 |
can_cast_projectile |
实体是否能执行特定投射物施放行为。它不会单独创建技能、远程武器或动画事件。 |
porthole_composite_scene |
实体层的头像合成场景入口。 |
血液、肢解、镜头震动与移动常量

| 字段 |
含义与使用要点 |
combat_camera_shake |
该实体战斗动作触发的镜头震动配置。强度和触发仍取决于配套数据。 |
has_blood |
实体是否使用血液表现。勾选需要相应血液与材质资源。 |
can_dismember |
实体是否允许肢解。没有正确模型分件和动画支持时不要强行开启。 |
dismember_arms_alive_hp_ratio |
实体仍存活时允许手臂肢解的生命比例阈值。应复制同结构模型。 |
dismember_head_alive_hp_ratio |
实体仍存活时允许头部肢解的生命比例阈值。 |
jump_attack_chance |
使用跳跃攻击的机会参数。没有跳跃攻击动画时修改无效或表现异常。 |
locomotion_constants |
移动常量记录入口,用于更完整的移动与动画协调。 |
碰撞造成的击飞、动画层级和死亡碰撞


| 字段 |
含义与使用要点 |
enable_engine_crew_turn_in_movement_direction |
是否让战场引擎乘员朝移动方向转身,主要供火炮和载具乘员使用。 |
dealt_collision_knocked_flying_threshold_multiplier |
该实体碰撞别人时造成“击飞”所用阈值的倍率。它不是被击飞抗性。 |
dealt_collision_knocked_down_threshold_multiplier |
碰撞造成“击倒”所用阈值的倍率。 |
dealt_collision_knocked_back_threshold_multiplier |
碰撞造成“击退”所用阈值的倍率。 |
anim_lod_distance_multiplier |
动画细节层级切换距离倍率。过度提高会增加大量单位同时使用高细节动画的性能成本。 |
size_for_animation_lod |
动画 LOD 采用的体型分类,可与战斗实体size不同。 |
leaves_collision_when_dies |
死亡后是否仍保留碰撞。大型尸体和普通步兵可能使用不同设置。 |
stop_before_turn |
是否在转身前先停止移动。它会显著改变大型实体或载具转向手感。 |
近战武器:melee_weapons_tables
melee_weapons_tables只负责武器本身的伤害、加成、长度、溅射、攻击间隔和接触效果。近战攻击、近战防御、冲锋加成和士气仍在land_units_tables。
伤害、目标加成、长度与类型

| 字段 |
含义与使用要点 |
key |
近战武器唯一 Key,由land_units_tables.primary_melee_weapon引用。 |
damage |
单次武器命中的普通伤害。它会受护甲等规则影响。 |
ap_damage |
单次武器命中的破甲伤害。面板武器强度通常综合普通和破甲部分。 |
bonus_v_infantry |
对步兵类目标的额外伤害与命中加成入口。最终显示和结算由游戏规则组合处理。 |
bonus_v_large |
对非步兵实体类别的加成。不要只按兵牌上是否显示“大型”图标理解;选择模板时要检查实体分类。 |
weapon_length |
武器接触长度或攻击距离相关参数。它必须与攻击动画、模型武器长度和碰撞体匹配。 |
melee_weapon_type |
近战武器规则类型,例如剑、矛、斧或骑枪等。它会参与动画、规则或效果选择,不只是文字标签。 |
audio_type |
近战武器命中或挥舞的音频类型。它不改变伤害。 |
splash_attack_target_size |
溅射攻击允许覆盖的目标体型上限或分类。它与实体size配合决定哪些目标能被同一击波及。 |
溅射、建筑、点燃、魔法与接触效果

| 字段 |
含义与使用要点 |
splash_attack_max_attacks |
一次攻击最多能对多少个目标分配溅射攻击。它不是把完整武器伤害无条件复制给每个目标。 |
splash_attack_power_multiplier |
溅射攻击力量或伤害分配相关倍率。应复制体型和动画相近的怪兽或武器模板。 |
building_damage_multiplier |
对建筑的伤害倍率。能否攻击建筑还受单位和目标规则影响。 |
ignition_amount |
点燃量,并为相应攻击提供火焰上下文。视觉上有火焰不代表该值必须大于0。 |
is_magical |
是否把这件武器的攻击标记为魔法攻击。它与is_spell不同。 |
contact_phase |
近战命中时应用的接触效果阶段,引用special_ability_phases_tables.id。完整链见后文。 |
碰撞攻击、攻击间隔、缩放伤害与法术标记

| 字段 |
含义与使用要点 |
collision_attack_max_targets |
碰撞攻击一次最多作用的目标数,主要供冲撞、战车或特定大型实体使用。 |
collision_attack_max_targets_cooldown |
碰撞攻击达到目标上限后再次允许结算的冷却参数。它不是普通挥砍的攻击间隔。 |
melee_attack_interval |
武器基础近战攻击间隔。把它改得比动画循环更短,不保证单位能按该速度可靠出手。 |
scaling_damage |
缩放伤害规则入口,供伤害随目标或其他条件变化的特殊武器使用。普通武器通常留空。 |
is_spell |
武器伤害是否按法术伤害上下文处理。魔法攻击与法术伤害是两个不同判定。 |
普通伤害、破甲、火焰、魔法和法术不要混淆
| 概念 |
字段 |
说明 |
| 普通武器伤害 |
damage |
会按护甲等常规规则处理。 |
| 破甲伤害 |
ap_damage |
绕过大部分护甲,但仍可能受到其他抗性和规则影响。 |
| 火焰攻击 |
ignition_amount |
提供点燃与火焰上下文。 |
| 魔法攻击 |
is_magical |
用于魔法攻击判定。 |
| 法术伤害 |
is_spell |
用于法术抗性等法术伤害判定。 |
| 接触状态 |
contact_phase |
命中后额外应用一个能力阶段。 |
护甲与盾牌
护甲类型:unit_armour_types_tables

| 字段 |
含义与使用要点 |
key |
护甲类型唯一 Key,由land_units_tables.armour引用。 |
armour_value |
护甲值。它参与普通伤害的护甲减免,但不是固定百分比减伤;最终表现由游戏护甲公式决定。 |
audio_type |
护甲被击中时使用的材质音效类型,例如布甲、链甲或板甲上下文。 |
如果只想让新单位使用与模板完全相同的护甲值和音效,可以继续引用原版护甲记录。只有需要不同护甲值或材质音效时才复制新记录。
盾牌类型:unit_shield_types_tables

| 字段 |
含义与使用要点 |
key |
盾牌类型唯一 Key,由land_units_tables.shield引用。 |
shield_defence_value |
盾牌防御相关数值。不要在没有原版对照的情况下把它直接解释成面板近战防御加成。 |
shield_armour_value |
盾牌护甲相关数值。当前实际用途应以同类原版记录和游戏测试为准。 |
missile_block_chance |
盾牌从有效方向格挡远程攻击的概率。35通常表示35%,但目标朝向、投射物类别和其他规则仍会影响是否可格挡。 |
audio_type |
盾牌受击音效类型。 |
盾牌格挡并不是全方向被动减伤。模型是否持盾、动画中的盾牌方向、攻击来向、投射物类别和游戏规则都会影响结果。只填一条高格挡盾牌记录,无法修复错误的模型或动画。
单位属性
单位属性适合表达unbreakable、causes_fear、causes_terror、stalk、snipe、immune_to_psychology、fatigue_immune等由引擎识别的离散特性。它不是任意填写文本就能创造新机制的系统。
属性组:unit_attributes_groups_tables

| 字段 |
含义与使用要点 |
group_name |
属性组唯一 Key,由land_units_tables.attribute_group引用。一个属性组可以连接多项属性,也可以被多个单位共享。 |
属性与属性组连接:unit_attributes_to_groups_junctions_tables

| 字段 |
含义与使用要点 |
attribute |
单位属性 Key,引用unit_attributes_tables.key。 |
attribute_group |
接收该属性的属性组 Key。为同一组建立多行即可组合多项属性。 |
属性定义:unit_attributes_tables

| 字段 |
含义与使用要点 |
key |
引擎识别的属性 Key。随意创建一个新名字不会让引擎自动产生新行为。普通制作应复用原版已存在的 Key。 |
bullet_text |
该属性在单位信息中的说明文本,属于本地化字段。 |
imued_effect_text |
属性被赋予时的说明文本。字段名中的imued是当前数据结构中的拼写,不要自行改名。 |
removed_effect_text |
属性被移除或抵消时的说明文本,属于本地化字段。 |
当前 RPFM 主表截图只显示key,本地化字段会按 Schema 的本地化结构处理。不要把中文说明直接写进key。
给一个单位增加属性的安全做法
- 查找单位当前
attribute_group。
- 反查该组被哪些单位共用。
- 如果只改一个单位,复制属性组并改成自己的 Key。
- 在连接表中复制该组原有属性行,保留需要的属性。
- 添加目标原版属性 Key。
- 让自己的
land_units_tables.attribute_group指向新组。
- 进战斗验证属性是否出现、是否有对应行为和说明。
不要直接向一个被几十个原版单位共用的属性组添加unbreakable,否则这些单位可能全部变成永不溃逃。
阵型与间距
“单位间距”“军队预设阵型”和“技能特殊阵型”是三套不同概念:
unit_spacings_tables控制一队兵内部相邻实体怎样站位。
formations_tables控制部署或界面中的军队级预设阵型。
special_abilities_specific_formation_types_tables只是技能系统可识别的特殊阵型类型之一,仍需要完整技能链。
单位间距:unit_spacings_tables




| 字段 |
含义与使用要点 |
key |
间距记录唯一 Key,由land_units_tables.spacing引用。 |
close_formation_spacing_horizontal |
紧密阵型中相邻实体的横向间距。 |
close_formation_spacing_vertical |
紧密阵型中前后排实体的纵向间距。 |
close_formation_spacing_variation |
紧密阵型的随机间距变化。数值越大通常越不整齐。 |
loose_formation_spacing_horizontal |
松散阵型横向间距。 |
loose_formation_spacing_vertical |
松散阵型纵向间距。 |
loose_formation_spacing_variation |
松散阵型的随机间距变化。 |
dismounted_close_formation_spacing_horizontal |
下马后紧密阵型横向间距。只对会在相关状态下使用下马间距的单位有意义。 |
dismounted_close_formation_spacing_vertical |
下马后紧密阵型纵向间距。 |
dismounted_close_formation_spacing_variation |
下马后紧密阵型随机变化。 |
dismounted_loose_formation_spacing_horizontal |
下马后松散阵型横向间距。 |
dismounted_loose_formation_spacing_vertical |
下马后松散阵型纵向间距。 |
dismounted_loose_formation_spacing_variation |
下马后松散阵型随机变化。 |
routing_space_variation |
单位溃逃时实体间距的变化。 |
is_chaotic_formation |
是否使用更混乱、不规则的站位方式。它不是溃逃开关。 |
testudo_horizontal_spacing |
龟甲阵横向间距。没有龟甲阵技能和动画时,这个数值不会自动提供龟甲阵。 |
testudo_vertical_spacing |
龟甲阵纵向间距。 |
shield_wall_horizontal_spacing |
盾墙阵横向间距。 |
shield_wall_vertical_spacing |
盾墙阵纵向间距。 |
间距太小会使模型、武器和盾牌互相穿插,也可能让大量实体争抢同一位置;间距太大则会让队列松散、近战接敌慢、转向和穿门表现异常。应同时检查模型体宽、battle_entities_tables.radius、武器长度、动画和队列深度。
军队预设阵型:formations_tables

| 字段 |
含义与使用要点 |
formation |
阵型唯一 Key。 |
icon_name |
阵型按钮或界面使用的图标文件名。资产必须存在。 |
is_army |
是否适用于陆军。 |
is_naval |
是否适用于海军。 |
order |
阵型在界面中的排序。 |
name |
阵型显示名称,本地化字段。 |
description |
阵型说明,本地化字段。 |
tooltip |
阵型悬停提示,本地化字段。 |
阵型与亚文化连接:formations_to_subcultures_tables

| 字段 |
含义与使用要点 |
formation |
引用formations_tables.formation。 |
sub_culture |
允许使用该预设阵型的亚文化。把阵型连接到某个兵种、兵营或派系并不是这张表的职责。 |
技能使用的特殊阵型类型

special_abilities_specific_formation_types_tables只有key,保存技能系统识别的特殊阵型类型,例如盾墙、方阵或楔形阵等。这个 Key 仍需被对应的特殊能力、行为、单位能力连接、动画和界面数据引用。
在这张表新增一行,不会自动给单位添加阵型按钮;在unit_spacings_tables填写盾墙间距,也不会自动生成盾墙技能。要制作可切换的战斗阵型,应先找到一个机制相同的原版阵型单位,沿它的完整技能链复制。
接触效果
接触效果是在近战武器命中后给目标应用一个special_ability_phases_tables阶段。它可以降低速度、攻击、防御或抗性,也可以赋予沉默、恐惧等属性,还能连接特效、音效和界面提示。
land_units_tables.primary_melee_weapon
↓
melee_weapons_tables.contact_phase
↓
special_ability_phases_tables.id
├─ 数值变化:special_ability_phase_stat_effects_tables
├─ 属性变化:special_ability_phase_attribute_effects_tables
├─ 视觉显示:special_ability_phase_displays_tables
└─ 附加界面信息:special_ability_phases_to_additional_ui_effects_junctions_tables
远程投射物和爆炸也能应用接触阶段,但入口分别在projectiles_tables.contact_stat_effect和爆炸表的接触效果字段。本文重点讲近战武器入口;远程入口见《远程武器详解》。
阶段本体:special_ability_phases_tables





| 字段 |
含义与使用要点 |
id |
阶段唯一 Key,由近战武器、投射物、技能和其他系统引用。 |
duration |
阶段持续时间。-1等特殊值在部分原版记录中表示持续型逻辑,必须按同类模板理解。普通接触减益通常使用有限秒数。 |
effect_type |
阶段的正面或负面类型,例如positive、negative。它影响界面和部分规则分类,不会自动决定具体数值。 |
requested_stance |
阶段请求目标采用的特殊姿态。没有对应动画和行为时留空。 |
cant_move |
阶段生效时禁止玩家给目标下达移动或攻击命令;实体仍可能射击、用技能或对近战作出反应。 |
freeze_fatigue |
阶段期间把疲劳状态固定为新鲜状态。它不是“保持当前疲劳值不变”。 |
fatigue_change_ratio |
每秒按最大疲劳比例改变疲劳。Schema 示例中-0.25表示降低25%,0.1表示增加10%。 |
inspiration_aura_range_mod |
对鼓舞或相关光环范围的修正。没有光环时通常没有可见效果。 |
ability_recharge_change |
对目标技能冷却时间的改变;Schema 说明负值减少冷却时间,正值增加冷却时间。 |
resurrect |
是否允许阶段执行复活相关逻辑。它需要与生命变化频率、数量和目标结构一起配置。 |
hp_change_frequency |
尝试应用生命变化的间隔,单位为秒。0通常表示不使用周期生命变化。 |
heal_amount |
治疗时阶段总共改变的生命量,并在实体之间分配。不要把它直接理解为每个士兵获得同样数值。 |
damage_amount |
阶段周期性造成的伤害量。它与近战武器本次命中伤害分开结算。 |
max_damaged_entities |
每次生命伤害最多作用的实体数量。对多实体单位和单体单位应分别选择模板。 |
mana_regen_mod |
法力恢复相关修正。目标没有法力系统时通常无意义。 |
mana_max_depletion_mod |
最大法力消耗或法力上限消耗相关修正。应沿用同类施法效果模板。 |
imbue_magical |
阶段是否让目标的攻击获得魔法攻击属性。 |
imbue_ignition |
阶段是否给目标攻击附加点燃或火焰上下文。 |
imbue_contact |
阶段生效期间,再给目标的攻击附加另一个接触阶段。它引用另一条special_ability_phases_tables.id。避免互相引用形成循环。 |
phase_display |
阶段显示记录 Key,引用special_ability_phase_displays_tables.key。 |
phase_audio |
阶段音效 Key,引用audio_ability_phases_tables.key。 |
is_hidden_in_ui |
是否不在战斗界面显示该阶段。隐藏只影响显示,不代表效果不结算。 |
affects_allies |
阶段能否作用于友军。近战负面接触效果通常应核对这一项,避免错误伤害己方。 |
affects_enemies |
阶段能否作用于敌军。只勾友军而未勾敌军会让常规减益无法作用于敌人。 |
replenish_ammo |
阶段开始时按单位最大弹药的百分比补充弹药;可以使用负值消耗弹药。 |
composite_scene_group |
阶段开始时触发的战斗合成场景组。没有相应场景资源时留空。 |
spreading |
传播规则 Key,引用special_ability_spreadings_tables,用于能够在单位之间扩散的阶段。 |
freeze_recharge |
阶段生效时冻结目标技能冷却。它与ability_recharge_change不是同一机制。 |
barrier_heal_amount |
每次hp_change_frequency触发时,按最大屏障生命比例恢复屏障。 |
remove_magical |
是否移除目标的魔法攻击属性。它与imbue_magical方向相反。 |
execute_ratio |
当目标生命比例等于或低于该值时立即处决目标。0通常表示关闭;误填高值会造成异常秒杀。 |
阶段的玩家可见名称属于本地化字段。截图没有显示并不代表效果无法显示;需要按 RPFM 的本地化结构提供对应文本。
阶段数值效果:special_ability_phase_stat_effects_tables

| 字段 |
含义与使用要点 |
phase |
所属阶段 Key,引用special_ability_phases_tables.id。同一阶段可以建立多行,修改多项数值。 |
stat |
要修改的战斗数值,引用modifiable_unit_stats_tables.stat_key。不要自行发明一个名称。 |
value |
修改量。它怎样解释取决于how。 |
how |
运算方式,常见为add和mult。add直接增减,mult使用倍率;例如0.85表示保留原值的85%,不是增加85%。 |
原版wh_main_unit_contact_poison持续10秒、属于负面阶段、只影响敌军。它对远程普通伤害、远程破甲伤害、移动速度、近战普通伤害和近战破甲伤害分别使用0.85乘算。这说明“中毒”并不是一条笼统的-15记录,而是五行明确的数值效果。
阶段属性效果:special_ability_phase_attribute_effects_tables

| 字段 |
含义与使用要点 |
phase |
所属阶段 Key。 |
attribute |
要改变的单位属性 Key,引用unit_attributes_tables.key。 |
attribute_type |
属性方向。当前 Schema 说明positive表示受影响者拥有该属性,negative表示受影响者抵消该属性。 |
原版wh2_dlc11_unit_contact_disrupted持续10秒,对物理抗性使用add -10,同时以positive方向赋予silenced。这是“数值减益加沉默属性”的完整示例,但它只是可复制的机制模板,不是所有接触效果都要同时建立两张子表。
阶段显示效果:special_ability_phase_displays_tables


| 字段 |
含义与使用要点 |
key |
显示记录唯一 Key,由阶段phase_display引用。 |
banner_vfx |
单位横幅或战斗界面相关特效。 |
active_vfx |
阶段激活时使用的特效。 |
entity_vfx |
附着在单位实体上的特效。 |
entity_vfx_attach_type |
实体特效的挂点或附着类型,例如顶部、底部等上下文。 |
use_new_vfx_scaling |
是否使用新的 VFX 缩放方式。应与原版同类特效保持一致。 |
显示记录只负责视觉。接触效果有数值但没有phase_display时仍可能正常结算;反过来,只有特效而没有数值或属性子记录,也不会自动产生减益。
附加界面效果连接

special_ability_phases_to_additional_ui_effects_junctions_tables用于给阶段连接额外的界面效果说明:
| 字段 |
含义与使用要点 |
special_ability_phase |
接收界面效果的阶段 Key。 |
effect |
额外界面效果 Key。它负责补充玩家看到的信息,不负责实际数值结算。 |
制作一个近战接触效果的完整步骤
- 找到一个机制最接近的原版接触效果,而不是只找名字相近的效果。
- 复制对应
special_ability_phases_tables记录并改成自己的id。
- 复制所有以原阶段为
phase的数值效果行,并改成新阶段 Key。
- 需要属性时,复制属性效果行并确认
attribute_type方向。
- 需要特效时,复用或复制
phase_display指向的显示记录。
- 需要额外界面说明时,复制阶段与附加界面效果的连接。
- 复制近战武器,给武器新 Key,并把
contact_phase改成新阶段。
- 让自己的
land_units_tables.primary_melee_weapon指向新武器。
- 先用一个目标单位测试持续时间、重复命中刷新、数值变化和界面显示。
- 再测试友军、敌军、多实体单位、单体单位、免疫属性和死亡目标等边界情况。
如果只想让新单位使用原版中毒,可以直接让自己的新近战武器引用原版wh_main_unit_contact_poison,不必复制阶段。只有要改变中毒数值、时长、特效或作用对象时才需要建立自己的阶段链。
按目标反查应修改的表单
| 目标 |
首先查看 |
常见后续检查 |
| 改一队有多少人 |
main_units_tables.num_men |
单位规模选项、模型、性能、招募费用。 |
| 改近战攻防 |
land_units_tables.melee_attack、melee_defence |
技能、经验、难度和阶段效果。 |
| 改武器伤害 |
melee_weapons_tables.damage、ap_damage |
武器是否被多个单位共用。 |
| 改对步兵/大型加成 |
melee_weapons_tables.bonus_v_infantry、bonus_v_large |
目标battle_entities_tables.size和单位分类。 |
| 改生命 |
battle_entities_tables.hit_points、land_units_tables.bonus_hit_points |
多实体人数、战役生命和屏障。 |
| 改跑速 |
battle_entities_tables.run_speed |
动画位移、加速度、减速度、转向。 |
| 改冲锋手感 |
战斗实体的冲锋速度和三个距离 |
land_units_tables.charge_bonus、质量、间距、动画。 |
| 改护甲 |
unit_armour_types_tables.armour_value |
是否复制了共享护甲记录、受击音效。 |
| 改盾牌格挡 |
unit_shield_types_tables.missile_block_chance |
模型持盾、动画朝向、投射物类别。 |
| 加恐惧、潜行或免疫心理 |
属性组与连接表 |
是否误改共享属性组、属性 Key 是否为引擎内置。 |
| 改单位站得更密 |
unit_spacings_tables |
实体半径、模型宽度、队列深度、武器长度。 |
| 加中毒或其他命中减益 |
melee_weapons_tables.contact_phase |
阶段本体、数值、属性、显示和作用对象。 |
| 改战役费用或招募时间 |
main_units_tables |
建筑、资源、科技、技能和效果修正。 |
怎样自行找到原版数据
已知一个单位时沿引用向下找
- 在
main_units_tables搜索单位 Key。
- 读取
land_unit,跳到land_units_tables。
- 记录
man_entity、primary_melee_weapon、armour、shield、attribute_group和spacing。
- 分别跳到对应子表,查看实际记录。
- 对近战武器继续读取
contact_phase。
- 对接触阶段继续搜索所有以该阶段为
phase的数值和属性行。
- 反查每个准备修改的子记录被哪些其他单位引用。
只知道想要的机制时反向找
- 想找中毒、破甲、沉默等命中效果:在
melee_weapons_tables筛选contact_phase非空,再沿阶段查看实际内容。
- 想找多目标近战攻击:比较
splash_attack_max_attacks和splash_attack_target_size,同时检查实体体型与攻击动画。
- 想找抗冲锋或冲撞单位:比较
can_brace、实体质量、冲锋距离和碰撞阈值,不要只看一个字段。
- 想找紧密步兵方阵:比较
spacing引用的完整间距记录、队列深度和实体半径。
- 想找不会溃逃的单位:从属性连接表搜索
unbreakable,再反查对应属性组和单位。
- 想找盾墙或龟甲阵:从有对应战斗按钮的原版单位出发,沿完整技能链查;不要只筛间距表。
- 想找高护甲单位:从
unit_armour_types_tables.armour_value筛选,再反查实际单位,确认音效和共享范围。
每次至少比较三类证据
- 数据值:表中到底填了什么。
- 引用关系:多少单位共享这条记录,完整链是否闭合。
- 游戏表现:原版单位实际怎样移动、冲锋、攻击、站位和显示状态。
只看一个数值容易复制到机制不同的模板;只看游戏面板则看不到共享记录、实体参数和隐藏阶段。
常见故障与排查顺序
单位能出现在名册,但进入战斗崩溃或不生成
- 检查
main_units_tables.land_unit是否存在。
- 检查
land_units_tables.man_entity、man_animation和必要模型资产。
- 检查坐骑、载具、战场引擎和关节载具引用是否与模板结构一致。
- 检查自定义 Key 是否拼写一致、是否存在重复。
- 检查单位人数是否与单体、骑兵、载具或火炮结构匹配。
面板生命或战斗生命不符合预期
- 检查
battle_entities_tables.hit_points。
- 检查
land_units_tables.bonus_hit_points。
- 检查
main_units_tables.num_men和当前单位规模设置。
- 检查
barrier_health是否把屏障误认为普通生命。
- 检查技能、科技、难度和阶段效果。
单位移动时滑步、转向僵硬或冲锋散乱
- 比较
run_speed与动画实际位移。
- 检查
acceleration、deceleration和turn_speed。
- 检查三个冲锋距离是否来自同一套模板。
- 检查
stop_before_turn、转向动画开关和locomotion_constants。
- 检查实体半径、单位间距和队列深度。
武器伤害改了但多个单位一起变化
- 反查原近战武器 Key 被哪些单位引用。
- 为目标单位复制近战武器并改成新 Key。
- 让目标单位改用新武器。
- 检查接触效果是否仍有意共享。
溅射攻击表现异常
- 检查
splash_attack_target_size是否允许目标体型。
- 检查
splash_attack_max_attacks是否与动画挥击范围相符。
- 检查实体
size、radius和武器weapon_length。
- 检查是否把碰撞攻击字段误当成普通溅射字段。
- 用单体、小型步兵、骑兵和大型怪兽分别测试。
盾牌图标存在,但仍经常被正面射中
- 检查
land_units_tables.shield是否指向正确记录。
- 检查
missile_block_chance。
- 检查单位是否面对来袭方向。
- 检查模型与动画中的盾牌方向。
- 检查投射物类别是否具有忽略盾牌的规则。
属性没有效果
- 检查单位
attribute_group。
- 检查连接表中的
attribute_group拼写。
- 检查
attribute是否为原版引擎已识别 Key。
- 检查是否误改了另一条同名或旧版本记录。
- 检查该属性是否只在特定状态、单位类型或战斗上下文生效。
接触效果没有应用
- 检查单位是否真的使用填写了
contact_phase的新近战武器。
- 检查阶段
id是否存在。
- 检查
affects_enemies和affects_allies。
- 检查数值效果或属性效果中的
phase是否已改成新 Key。
- 检查
stat和attribute是否为有效原版枚举。
- 先去掉显示和音效,只验证数值是否变化,区分“效果未结算”和“只是没有特效”。
接触效果数值方向错误
- 检查
how是add还是mult。
mult使用倍率,例如0.85表示剩余85%。
add直接加减,例如物理抗性-10表示减少10点。
- 检查阶段是否在重复命中后刷新、叠加或被其他效果覆盖。
- 对照原版同类阶段,不要只按中文描述猜数值。
RPFM 诊断没有报错,但游戏里仍不正常
RPFM 可以发现许多缺失引用、错误类型和重复 Key,但不能证明下面这些行为正确:
- 模型、骨架和动画套装匹配。
- 移动速度与动画位移一致。
- 冲锋距离与冲锋动画时机一致。
- 武器长度和溅射范围符合动作。
- 盾牌方向与格挡判定一致。
- 特效挂点、音效和本地化真实存在。
- AI 会按你的预期使用单位。
- 自动结算估值与实际战斗强度平衡。
这些必须进自定义战斗或战役环境验收。
游戏内验收清单
生成与基础动作
- 单位能进入战斗,人数与单位规模设置一致。
- 模型、坐骑、载具和乘员都正确生成。
- 待机、行走、奔跑、转身、攻击、受击、死亡和溃逃动画正常。
- 没有明显滑步、瞬间转身、实体重叠或寻路卡死。
移动、编队与冲锋
- 紧密和松散阵型的横纵间距合理。
- 拖动长阵线、短阵线和多排编队都不会严重穿模。
- 转向、穿门、上下坡和绕障碍正常。
- 冲锋开始、摆姿势、选目标和接触时机自然。
- 正面迎击、侧后冲锋和大型实体冲撞分别测试。
近战与生存
- 近战攻防、普通伤害、破甲伤害和攻击间隔符合设计。
- 对步兵和非步兵实体的加成分别生效。
- 溅射目标数量没有造成异常高伤害。
- 低甲、高甲、持盾、小型、大型和单体目标分别测试。
- 基础生命、额外生命、屏障和单位人数没有相互混淆。
护甲、盾牌和属性
- 护甲面板与实际承受普通伤害大致符合预期。
- 盾牌只从合理方向格挡,正面和背面分别测试。
- 恐惧、恐怖、潜行、狙击、免疫心理、永不溃逃等目标属性逐项验证。
- 属性说明和图标正确,没有把共享属性组改给其他单位。
接触效果
- 每次有效近战命中后目标获得阶段。
- 持续时间、刷新、重复命中和消失时机正确。
add与mult数值方向正确。
- 属性赋予或抵消方向正确。
- 友军与敌军作用范围正确。
- 特效、音效、横幅和界面说明与实际数值一致。
- 多实体单位、单体单位、免疫目标和死亡目标分别测试。
战役与界面
- 主单位人数、招募费、维护费、招募时间和上限正确。
- 单位等级、界面分组、兵牌、名称、说明和头像正确。
- 建筑、资源、兵种许可或其他计划使用的招募路径能正常获得单位。
- 自动结算强度、AI 使用和多人费用符合预期。
最后检查 Pack
- 每张导入的 DB 子表都已把
data__改成唯一名称。
- 所有自定义 Key 使用统一前缀。
main_units_tables.land_unit确实指向自己的陆战单位。
- 所有非空子表引用都能在自己的 Pack 或已加载依赖中找到。
- 没有为了一个新单位直接修改被大量原版单位共享的武器、实体、护甲、盾牌、属性组或间距。
- 没有把近战攻击、武器伤害、战场速度、战役行动点和自动结算战力填错表。
- 接触效果的阶段、数值、属性、显示和作用对象已经逐层检查。
- 阵型间距、军队预设阵型和技能特殊阵型没有混为一谈。
- RPFM 诊断已检查,但没有把“诊断通过”当成游戏验收通过。
- 自定义战斗和战役测试分别完成,并记录了仍需调整的平衡数值。
本文字段结构以当前 RPFM《战锤 III》Schema、RPFM 真实界面和本机 Assembly Kit 原始数据库为依据。Schema 没有公开公式或字段属于旧式兼容结构时,本文明确要求沿用同类原版模板并在游戏中验证,没有把字面猜测写成确定结论。