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

搜索教程

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

输入教程标题开始搜索。

教程目录

驻军详解

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

游戏里的聚居地驻军通常不是“建筑直接连接某个兵种”,而是“建筑等级连接驻军单位组,单位组再连接多个部队”。这层单位组让多个建筑可以复用同一套驻军,也让游戏按优先级合并、替换或截取驻军条目。

驻军、建筑招募和驻扎在城内的军队是三件事。building_units_allowed_tables控制建筑招募,不控制建筑自带驻军;玩家军队进入聚居地也不会改写驻军数据库。

主要表单

表单 作用
building_level_armed_citizenry_junctions_tables 把建筑等级连接到驻军单位组
armed_citizenry_unit_groups_tables 定义驻军单位组 Key
armed_citizenry_units_to_unit_groups_junctions_tables 把具体部队加入驻军单位组,并设置优先级
building_levels_tables 定义提供驻军的具体建筑等级
main_units_tables 提供驻军使用的主单位记录
faction_rebellion_units_junctions_tables 控制派系叛军可使用的部队,不是普通城镇驻军

建筑驻军的数据链

building_levels
    ↓ building_level
building_level_armed_citizenry_junctions
    ↓ unit_group
armed_citizenry_unit_groups
    ↓ unit_group
armed_citizenry_units_to_unit_groups_junctions
    ↓ unit
main_units

建筑驻军连接表

编号①~③依次说明连接记录、建筑等级和驻军单位组。示例筛选的是wh3_main_cth_settlement_major_1,当前原版表中可见 10 条建筑连接,共享同一个驻军组。它们并非“制作驻军必须全部复制的十行”:只改一座建筑时,应先复制一个独立单位组,再让目标建筑连接新组;想统一修改这些建筑时,才考虑修改共享组。其他派系或不同等级可以沿同样的引用关系查找自己的模板。

building_level_armed_citizenry_junctions_tables

这张表决定某个具体建筑等级提供哪一个驻军单位组。

字段 作用 注意事项
id 连接记录的唯一整数 ID 新增连接使用新的唯一值;替换原有建筑连接时保留其 ID 并修改unit_group,详见下文。
building_level 提供驻军的建筑等级 Key 指向building_levels_tables,不是建筑链 Key
unit_group 被授予的驻军单位组 指向armed_citizenry_unit_groups_tables

一个聚居地可能同时拥有多个提供驻军的建筑,所以最终驻军是多条建筑连接共同作用的结果。主城建筑、防御建筑、地标和其他派系建筑都可能贡献单位组,不要只检查城墙建筑。

为什么必须使用建筑等级

驻军会随建筑升级而变化,因此连接的是具体等级,而不是整条建筑链。例如同一条主城链的一级、三级和五级可以分别连接不同单位组。

如果只给高等级建筑添加连接,低等级阶段不会自动继承,除非原版链条的其他数据或运行时逻辑确实这样处理。最稳妥的做法是逐级查看原版同类建筑的连接方式。

armed_citizenry_unit_groups_tables

这张表主要定义驻军单位组的身份:

字段 作用
unit_group 驻军单位组的唯一 Key

驻军单位组的唯一Key

编号①标出unit_group这一列。它只创建可被其他表引用的单位组身份,不包含驻军部队名单。

单位组本身通常没有名称、说明或部队列表。实际包含哪些部队,要到armed_citizenry_units_to_unit_groups_junctions_tables查看。

何时新建单位组

以下情况适合新建:

  • 新建筑需要一套独立驻军,不应影响所有引用原组的建筑。
  • 原版组的部队构成与目标差异很大。
  • 需要清晰区分不同等级、派系或机制的驻军。

如果直接修改原版组,所有引用它的建筑都可能同时改变。教程示例应优先复制为新 Key,再修改自己的连接。

armed_citizenry_units_to_unit_groups_junctions_tables

这张表组成实际驻军名单。

字段 作用 注意事项
id 当前成员连接的唯一编号或 Key 每一行必须唯一
unit_group 所属驻军单位组 必须与单位组定义和建筑连接一致
unit 驻军使用的main_units Key 不能填land_units Key
priority 此单位在驻军合并或容量处理中的优先级 数值含义应对照同一套原版组,不要凭感觉统一填写

一行代表一条驻军成员记录,不是“一个兵种类别只能出现一次”。同一个unit可以重复出现在多行中,各行使用不同的id;不要按兵种 Key 去重,否则会把本来配置的多队部队删少。

同一驻军单位组中的成员、重复兵种与优先级

编号①~④依次对应唯一 ID、优先级、部队和所属单位组。上面同一个驻军组在当前原版成员表中有 8 行:4 行玉勇、2 行役农长柄矛手、2 行役农弓手,而不是 8 种兵。这是该组自身的配置;实际聚居地还可能叠加其他建筑驻军,不能把这 8 行直接当成所有情况下的最终名单。

完整八行应怎样复制

本例组 Key 为wh3_main_cth_settlement_major_1。在成员表按unit_group精确筛选,八行可归纳如下;名称已按同一 Loc Key 对照官方三种文本。

部队 unit 行数 每行priority
玉勇 wh3_main_cth_inf_jade_warriors_0 4 500
役农长柄矛手 wh3_main_cth_inf_peasant_spearmen_1 2 350
役农弓手 wh3_main_cth_inf_peasant_archers_0 2 450

成员表没有“数量”列。要四队玉勇就保留四条记录,各用不同id;不要写成一行再把priority填4。若改成两队玉勇弩手,可以把其中两条玉勇行的unit改为wh3_main_cth_inf_jade_warrior_crossbowmen_0,再以同组远程部队的优先级作为比较入口,不把优先级当作战斗人数。

priority不是阵型顺序

priority用于驻军系统在合并和处理条目时判断优先关系,不等于战斗部署界面的固定站位,也不保证列表会按你填写的顺序显示。

不同建筑同时提供驻军时,最终可用部队还会受到驻军规模、合并规则和游戏运行时逻辑影响。修改优先级后,必须在实际聚居地中检查最终名单,不能只看表格推断。

主单位记录的影响

驻军成员引用main_units_tables,因此它会继承对应主单位的:

  • 显示名称和兵牌。
  • land_units战斗属性。
  • 人数、成本类别及其他主单位设置。
  • 模型、动画、武器和远程武器数据。
  • 可用内容包和部分权限限制。

这不意味着驻军必须同时拥有常规招募入口。一个兵种可以只出现在驻军中,也可以既能招募又能作为驻军。两条数据链需要分别配置。

建筑、派系和文化范围

驻军连接只回答“这个建筑等级提供哪个单位组”。哪些派系能得到这个建筑,还要继续检查:

  • building_chains_tables:建筑链定义。
  • building_levels_tables:具体等级。
  • building_culture_variants_tables:文化、亚文化或派系的显示变体。
  • building_chain_availabilities_tables:建筑链的派系和战役可用性。
  • settlement_type_to_building_chains_junctions_tables:聚居地类型是否允许该建筑链。
  • slot_template_permitted_building_chains_tables:特定槽位是否允许该建筑链。

如果多个派系共享建筑等级,它们也会共享该等级连接的驻军组。想要派系专属驻军时,往往需要派系专属建筑等级或其他已存在的限定路径,而不是在驻军成员表中期待一个不存在的派系字段。

主城驻军与附加驻军

最终驻军可能由多部分叠加:

主城建筑驻军
+ 防御建筑驻军
+ 地标或特殊建筑驻军
+ 战役机制临时增援
= 玩家实际看到的聚居地驻军

制作时要先决定自己的目标:

  • 替换主城基础驻军:修改或复制主城等级对应的单位组。
  • 让某个建筑额外提供部队:为该建筑等级连接新的附加单位组。
  • 让升级后的建筑换一套驻军:分别处理每个建筑等级的连接。
  • 临时或条件性增援:优先寻找相同原版机制的 Effect、脚本或战役系统,静态建筑连接未必合适。

本文的主城建筑案例只是其中一种路径,不能推导出所有驻军都来自主城或城墙建筑。

城墙、攻城战地图与驻军不是同一系统

给建筑增加驻军部队,不会自动:

  • 让聚居地获得城墙。
  • 改变聚居地使用的战斗地图。
  • 设置攻城器械、城门或胜利点。
  • 改变守军部署区域。
  • 让野外建筑变成可围攻聚居地。

这些结果涉及聚居地、战斗地图、槽位、建筑 Effect 或战役逻辑。驻军表只负责单位构成。

叛军部队

faction_rebellion_units_junctions_tables把派系与可用于叛乱的部队连接起来:

字段 作用
faction_key 叛军所属或参照的派系
unit_key 可用于叛军的主单位

叛军不是普通驻军。把部队加入此表不会让城市自带该部队,也不会让正常派系获得招募权限。制作叛乱相关内容时,还要检查叛乱派系、地区文化、脚本和生成逻辑。

新战役和旧存档分别检查

建筑驻军由聚居地当前实际拥有的建筑等级及其单位组共同决定。新战役与旧存档的建筑、损坏状态、派系控制权和驻军补员状态可能不同,所以要分别测试,不能仅凭其中一个存档判断 DB 修改是否正确。

本文不使用start_pos编辑开局驻军。目标是修改建筑常驻部队时,沿上面的“建筑等级 → 单位组 → 成员”链处理;目标是临时增援或特定事件驻军时,则另查对应的原版脚本或机制入口。不要把 AK 初始化表导入普通 Mod Pack。

制作一套独立建筑驻军

  1. 明确驻军由哪个具体建筑等级提供。
  2. 在原版数据中找一个规模和用途相近的驻军模板。
  3. 从building_level_armed_citizenry_junctions_tables反查模板单位组。
  4. 在armed_citizenry_units_to_unit_groups_junctions_tables查看完整成员和优先级。
  5. 将单位组定义复制到自己的 Pack,并改为唯一 Key。
  6. 复制需要的成员行,给每行设置唯一id。
  7. 将unit_group全部改为新单位组 Key。
  8. 将unit替换为目标main_units Key,并按模板关系设置priority。
  9. 新增驻军时创建新的建筑连接 ID;替换已有驻军时保留目标原版连接 ID,并把unit_group改为新组。
  10. 检查该建筑在目标派系、文化、聚居地类型和战役中确实可用。
  11. 运行 RPFM 诊断,并检查所有引用是否指向自己的 Key。
  12. 进入游戏分别测试仅有主城建筑、建成附加建筑和建筑升级后的驻军。

替换与追加必须使用不同的 ID 处理

要只替换建筑wh3_main_cth_settlement_major_1的这组基础驻军:

  1. 新建armed_citizenry_unit_groups_tables.unit_group=yourmod_cth_garrison_1。
  2. 复制上面八条成员,为每条分配新的唯一整数 ID,并统一改为新unit_group。本次两张驻军连接表的id均按有符号 32 位整数处理,不能写yourmod_001。
  3. 将原版建筑连接导入自己的表,保留id=331008905与building_level=wh3_main_cth_settlement_major_1,只把unit_group改为yourmod_cth_garrison_1。这个 ID 标识你要覆盖的原有连接。

如果第三步另造一个 ID,原版331008905仍在,就变成给同一建筑追加一组驻军,可能与旧组叠加。这正是“只想换八队,却同时留下原八队”的常见原因。

本建筑按building_level精确筛选只有上述一条连接;沿原unit_group反查才会看到其他共享该组的建筑。保留原组、只覆盖目标建筑连接,可避免让全部共享建筑一起改变。给自建新建筑添加驻军时,则应使用新建筑 Key 和新的建筑连接 ID。

如何自行查找驻军数据

已知一个建筑

  1. 在building_levels_tables找到具体等级 Key。
  2. 在building_level_armed_citizenry_junctions_tables筛选building_level。
  3. 记录命中的unit_group。
  4. 在驻军成员连接表中筛选该组,得到全部部队和优先级。

已知一个驻军部队

  1. 取得它的main_units Key。
  2. 在armed_citizenry_units_to_unit_groups_junctions_tables搜索该 Key。
  3. 记录所有命中的单位组。
  4. 反查哪些建筑等级连接了这些组。
  5. 继续检查建筑链的派系和文化可用性。

只知道游戏里的聚居地

先确认该聚居地当前拥有的建筑和等级,再逐个反查对应单位组。不要看到最终驻军有十队,就假定十队全部来自一座建筑。

常见错误

  • 建筑能招募部队但没有驻军:把记录加到了building_units_allowed_tables,没有建立驻军单位组连接。
  • 驻军中完全不出现新部队:成员表填了land_units Key,或单位组没有连接到实际建筑等级。
  • 多个无关建筑一起改变:直接修改了被它们共同引用的原版单位组。
  • 升级建筑后驻军退回旧配置:只处理了一个等级,没有检查整条建筑链。
  • 目标派系没有变化:派系使用的是另一个建筑等级、文化变体或专属建筑链。
  • 部队被其他驻军挤掉:多个单位组合并后受规模和priority影响。
  • 新增驻军后仍没有城墙:驻军数据不负责聚居地防御地图。
  • 把叛军表当成驻军表:叛乱生成和建筑驻军是独立系统。

游戏内验收

  • 正确建筑等级提供正确单位组,升级前后变化符合设计。
  • 目标派系和聚居地能获得驻军,其他派系不会被共享记录误改。
  • 多个建筑同时存在时,最终驻军人数、兵种和优先级合理。
  • 部队兵牌、人数、武器和战斗属性正常。
  • 拆除、损坏、修复或升级建筑后,驻军能够正确刷新。
  • 保存并读取战役后,驻军名单保持一致。

RPFM 诊断不能计算一座聚居地最终合并出的驻军,也不能验证攻城地图。至少要在游戏中测试不同建筑组合、升级前后和读取存档后的结果。

图片查看
100%

滚轮或按钮缩放 · 拖动或滑动查看 · Esc 关闭