全面战争模组中文站全面战争模组中文站
搜索/

搜索教程

输入标题,直接打开已发布教程。

输入教程标题开始搜索。

教程目录

陆战单位详解

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

一个可在战斗中正常工作的陆战单位,不是由一张表单决定的。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

这条链需要先分成三个层次理解:

  1. main_units_tables回答“战役和名册里这是什么单位、多少人、多少钱、什么等级”。
  2. land_units_tables回答“进入战斗后这一队兵使用什么实体、武器、防具、属性和基础战斗值”。
  3. 被引用的子表回答“每个士兵怎样移动、碰撞、攻击、承受伤害和应用特殊状态”。

制作一个全新单位时还需要兵牌、本地化、兵种许可、战役招募等表单。本文中的表单负责陆战核心数据,不会单独让单位自动出现在自定义战斗或建筑招募列表中。

开始前:复制记录而不是破坏共享数据

不要直接修改或保存db.pack。建立自己的Mod类型 Pack 后,可以使用下面两种方式准备表单。

新建空表单

  1. 在自己的 Pack 上右键,新建需要的 DB 表。
  2. 新增记录。
  3. 从依赖项中的同类原版记录逐列复制。
  4. 立刻把主 Key 改成带个人前缀的新 Key。

这种方式适合unit_armour_types_tables之类字段很少的表。land_units_tablesbattle_entities_tables字段很多,手工复制更容易漏列。

从依赖项导入原版表单

  1. 在依赖项中搜索表单名或模板 Key。
  2. 打开原版表单,确认记录与目标机制相同。
  3. 将原版表单导入自己的 Pack。
  4. 把导入后的data__重命名为自己的子表名。
  5. 选中要保留的记录,反选后删除其他记录。
  6. 修改保留记录的主 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_enginesenginearticulated_recordmountnum_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.damageap_damage
对步兵/大型加成 melee_weapons_tables.bonus_v_infantrybonus_v_large
攻击间隔 melee_weapons_tables.melee_attack_interval,同时受动画限制
基础生命 battle_entities_tables.hit_pointsland_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 盾牌受击音效类型。

盾牌格挡并不是全方向被动减伤。模型是否持盾、动画中的盾牌方向、攻击来向、投射物类别和游戏规则都会影响结果。只填一条高格挡盾牌记录,无法修复错误的模型或动画。

单位属性

单位属性适合表达unbreakablecauses_fearcauses_terrorstalksnipeimmune_to_psychologyfatigue_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

给一个单位增加属性的安全做法

  1. 查找单位当前attribute_group
  2. 反查该组被哪些单位共用。
  3. 如果只改一个单位,复制属性组并改成自己的 Key。
  4. 在连接表中复制该组原有属性行,保留需要的属性。
  5. 添加目标原版属性 Key。
  6. 让自己的land_units_tables.attribute_group指向新组。
  7. 进战斗验证属性是否出现、是否有对应行为和说明。

不要直接向一个被几十个原版单位共用的属性组添加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 阶段的正面或负面类型,例如positivenegative。它影响界面和部分规则分类,不会自动决定具体数值。
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 运算方式,常见为addmultadd直接增减,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。它负责补充玩家看到的信息,不负责实际数值结算。

制作一个近战接触效果的完整步骤

  1. 找到一个机制最接近的原版接触效果,而不是只找名字相近的效果。
  2. 复制对应special_ability_phases_tables记录并改成自己的id
  3. 复制所有以原阶段为phase的数值效果行,并改成新阶段 Key。
  4. 需要属性时,复制属性效果行并确认attribute_type方向。
  5. 需要特效时,复用或复制phase_display指向的显示记录。
  6. 需要额外界面说明时,复制阶段与附加界面效果的连接。
  7. 复制近战武器,给武器新 Key,并把contact_phase改成新阶段。
  8. 让自己的land_units_tables.primary_melee_weapon指向新武器。
  9. 先用一个目标单位测试持续时间、重复命中刷新、数值变化和界面显示。
  10. 再测试友军、敌军、多实体单位、单体单位、免疫属性和死亡目标等边界情况。

如果只想让新单位使用原版中毒,可以直接让自己的新近战武器引用原版wh_main_unit_contact_poison,不必复制阶段。只有要改变中毒数值、时长、特效或作用对象时才需要建立自己的阶段链。

按目标反查应修改的表单

目标 首先查看 常见后续检查
改一队有多少人 main_units_tables.num_men 单位规模选项、模型、性能、招募费用。
改近战攻防 land_units_tables.melee_attackmelee_defence 技能、经验、难度和阶段效果。
改武器伤害 melee_weapons_tables.damageap_damage 武器是否被多个单位共用。
改对步兵/大型加成 melee_weapons_tables.bonus_v_infantrybonus_v_large 目标battle_entities_tables.size和单位分类。
改生命 battle_entities_tables.hit_pointsland_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 建筑、资源、科技、技能和效果修正。

怎样自行找到原版数据

已知一个单位时沿引用向下找

  1. main_units_tables搜索单位 Key。
  2. 读取land_unit,跳到land_units_tables
  3. 记录man_entityprimary_melee_weaponarmourshieldattribute_groupspacing
  4. 分别跳到对应子表,查看实际记录。
  5. 对近战武器继续读取contact_phase
  6. 对接触阶段继续搜索所有以该阶段为phase的数值和属性行。
  7. 反查每个准备修改的子记录被哪些其他单位引用。

只知道想要的机制时反向找

  • 想找中毒、破甲、沉默等命中效果:在melee_weapons_tables筛选contact_phase非空,再沿阶段查看实际内容。
  • 想找多目标近战攻击:比较splash_attack_max_attackssplash_attack_target_size,同时检查实体体型与攻击动画。
  • 想找抗冲锋或冲撞单位:比较can_brace、实体质量、冲锋距离和碰撞阈值,不要只看一个字段。
  • 想找紧密步兵方阵:比较spacing引用的完整间距记录、队列深度和实体半径。
  • 想找不会溃逃的单位:从属性连接表搜索unbreakable,再反查对应属性组和单位。
  • 想找盾墙或龟甲阵:从有对应战斗按钮的原版单位出发,沿完整技能链查;不要只筛间距表。
  • 想找高护甲单位:从unit_armour_types_tables.armour_value筛选,再反查实际单位,确认音效和共享范围。

每次至少比较三类证据

  1. 数据值:表中到底填了什么。
  2. 引用关系:多少单位共享这条记录,完整链是否闭合。
  3. 游戏表现:原版单位实际怎样移动、冲锋、攻击、站位和显示状态。

只看一个数值容易复制到机制不同的模板;只看游戏面板则看不到共享记录、实体参数和隐藏阶段。

常见故障与排查顺序

单位能出现在名册,但进入战斗崩溃或不生成

  1. 检查main_units_tables.land_unit是否存在。
  2. 检查land_units_tables.man_entityman_animation和必要模型资产。
  3. 检查坐骑、载具、战场引擎和关节载具引用是否与模板结构一致。
  4. 检查自定义 Key 是否拼写一致、是否存在重复。
  5. 检查单位人数是否与单体、骑兵、载具或火炮结构匹配。

面板生命或战斗生命不符合预期

  1. 检查battle_entities_tables.hit_points
  2. 检查land_units_tables.bonus_hit_points
  3. 检查main_units_tables.num_men和当前单位规模设置。
  4. 检查barrier_health是否把屏障误认为普通生命。
  5. 检查技能、科技、难度和阶段效果。

单位移动时滑步、转向僵硬或冲锋散乱

  1. 比较run_speed与动画实际位移。
  2. 检查accelerationdecelerationturn_speed
  3. 检查三个冲锋距离是否来自同一套模板。
  4. 检查stop_before_turn、转向动画开关和locomotion_constants
  5. 检查实体半径、单位间距和队列深度。

武器伤害改了但多个单位一起变化

  1. 反查原近战武器 Key 被哪些单位引用。
  2. 为目标单位复制近战武器并改成新 Key。
  3. 让目标单位改用新武器。
  4. 检查接触效果是否仍有意共享。

溅射攻击表现异常

  1. 检查splash_attack_target_size是否允许目标体型。
  2. 检查splash_attack_max_attacks是否与动画挥击范围相符。
  3. 检查实体sizeradius和武器weapon_length
  4. 检查是否把碰撞攻击字段误当成普通溅射字段。
  5. 用单体、小型步兵、骑兵和大型怪兽分别测试。

盾牌图标存在,但仍经常被正面射中

  1. 检查land_units_tables.shield是否指向正确记录。
  2. 检查missile_block_chance
  3. 检查单位是否面对来袭方向。
  4. 检查模型与动画中的盾牌方向。
  5. 检查投射物类别是否具有忽略盾牌的规则。

属性没有效果

  1. 检查单位attribute_group
  2. 检查连接表中的attribute_group拼写。
  3. 检查attribute是否为原版引擎已识别 Key。
  4. 检查是否误改了另一条同名或旧版本记录。
  5. 检查该属性是否只在特定状态、单位类型或战斗上下文生效。

接触效果没有应用

  1. 检查单位是否真的使用填写了contact_phase的新近战武器。
  2. 检查阶段id是否存在。
  3. 检查affects_enemiesaffects_allies
  4. 检查数值效果或属性效果中的phase是否已改成新 Key。
  5. 检查statattribute是否为有效原版枚举。
  6. 先去掉显示和音效,只验证数值是否变化,区分“效果未结算”和“只是没有特效”。

接触效果数值方向错误

  1. 检查howadd还是mult
  2. mult使用倍率,例如0.85表示剩余85%
  3. add直接加减,例如物理抗性-10表示减少10点。
  4. 检查阶段是否在重复命中后刷新、叠加或被其他效果覆盖。
  5. 对照原版同类阶段,不要只按中文描述猜数值。

RPFM 诊断没有报错,但游戏里仍不正常

RPFM 可以发现许多缺失引用、错误类型和重复 Key,但不能证明下面这些行为正确:

  • 模型、骨架和动画套装匹配。
  • 移动速度与动画位移一致。
  • 冲锋距离与冲锋动画时机一致。
  • 武器长度和溅射范围符合动作。
  • 盾牌方向与格挡判定一致。
  • 特效挂点、音效和本地化真实存在。
  • AI 会按你的预期使用单位。
  • 自动结算估值与实际战斗强度平衡。

这些必须进自定义战斗或战役环境验收。

游戏内验收清单

生成与基础动作

  • 单位能进入战斗,人数与单位规模设置一致。
  • 模型、坐骑、载具和乘员都正确生成。
  • 待机、行走、奔跑、转身、攻击、受击、死亡和溃逃动画正常。
  • 没有明显滑步、瞬间转身、实体重叠或寻路卡死。

移动、编队与冲锋

  • 紧密和松散阵型的横纵间距合理。
  • 拖动长阵线、短阵线和多排编队都不会严重穿模。
  • 转向、穿门、上下坡和绕障碍正常。
  • 冲锋开始、摆姿势、选目标和接触时机自然。
  • 正面迎击、侧后冲锋和大型实体冲撞分别测试。

近战与生存

  • 近战攻防、普通伤害、破甲伤害和攻击间隔符合设计。
  • 对步兵和非步兵实体的加成分别生效。
  • 溅射目标数量没有造成异常高伤害。
  • 低甲、高甲、持盾、小型、大型和单体目标分别测试。
  • 基础生命、额外生命、屏障和单位人数没有相互混淆。

护甲、盾牌和属性

  • 护甲面板与实际承受普通伤害大致符合预期。
  • 盾牌只从合理方向格挡,正面和背面分别测试。
  • 恐惧、恐怖、潜行、狙击、免疫心理、永不溃逃等目标属性逐项验证。
  • 属性说明和图标正确,没有把共享属性组改给其他单位。

接触效果

  • 每次有效近战命中后目标获得阶段。
  • 持续时间、刷新、重复命中和消失时机正确。
  • addmult数值方向正确。
  • 属性赋予或抵消方向正确。
  • 友军与敌军作用范围正确。
  • 特效、音效、横幅和界面说明与实际数值一致。
  • 多实体单位、单体单位、免疫目标和死亡目标分别测试。

战役与界面

  • 主单位人数、招募费、维护费、招募时间和上限正确。
  • 单位等级、界面分组、兵牌、名称、说明和头像正确。
  • 建筑、资源、兵种许可或其他计划使用的招募路径能正常获得单位。
  • 自动结算强度、AI 使用和多人费用符合预期。

最后检查 Pack

  1. 每张导入的 DB 子表都已把data__改成唯一名称。
  2. 所有自定义 Key 使用统一前缀。
  3. main_units_tables.land_unit确实指向自己的陆战单位。
  4. 所有非空子表引用都能在自己的 Pack 或已加载依赖中找到。
  5. 没有为了一个新单位直接修改被大量原版单位共享的武器、实体、护甲、盾牌、属性组或间距。
  6. 没有把近战攻击、武器伤害、战场速度、战役行动点和自动结算战力填错表。
  7. 接触效果的阶段、数值、属性、显示和作用对象已经逐层检查。
  8. 阵型间距、军队预设阵型和技能特殊阵型没有混为一谈。
  9. RPFM 诊断已检查,但没有把“诊断通过”当成游戏验收通过。
  10. 自定义战斗和战役测试分别完成,并记录了仍需调整的平衡数值。

本文字段结构以当前 RPFM《战锤 III》Schema、RPFM 真实界面和本机 Assembly Kit 原始数据库为依据。Schema 没有公开公式或字段属于旧式兼容结构时,本文明确要求沿用同类原版模板并在游戏中验证,没有把字面猜测写成确定结论。