我在修改游戏单位的 XML 文件时,不清楚各个组件的 XML 语法和可用参数,请问有没有相关的官方文档可以参考?
以下页面列出了可以添加到实体的组件以及其初始化数据的 XML 语法:实体文档。
在 0 A.D. 中,实体(单位、建筑及其他世界对象)由一系列组件构成,每个组件决定实体行为的某一部分。实体模板 XML 文件指定了每种实体类型加载的组件列表,以及各组件的初始化数据。
本页列出可添加到实体的所有组件及其初始化数据的 XML 语法。
无参数,仅占位。
List受此警报发起者影响的实体类别。值类型: 文本。
RaiseAlertRange:发起警报的范围(整数)EndOfAlertRange:解除警报的范围(整数)SearchRange:搜索范围(整数)控制单位的攻击能力和攻击强度。
<Attack>
<Melee>
<AttackName>Spear</AttackName>
<Damage>
<Hack>10.0</Hack>
<Pierce>0.0</Pierce>
<Crush>5.0</Crush>
</Damage>
<MaxRange>4.0</MaxRange>
<RepeatTime>1000</RepeatTime>
...
</Melee>
<Ranged>
<AttackName>Bow</AttackName>
...
</Ranged>
</Attack>
攻击类型目前包括:Melee(近战)、Ranged(远程)、Capture(占领)、Slaughter(屠杀)。
| 字段 | 说明 |
|---|---|
AttackName |
攻击名称,显示在 GUI 中 |
Damage |
伤害类型元素(非负小数) |
Capture |
占领点数值 |
ApplyStatus |
状态效果(中毒、燃烧等),需在 data/status_effects 中有对应 JSON 文件 |
Duration |
状态持续时间(可选) |
Interval |
状态效果触发间隔 |
Stackability |
状态叠加方式:Ignore(忽略新效果)、Extend(延长持续时间)、Replace(替换)、Stack(叠加) |
Civ |
可选,指定文明时才触发加成 |
Classes |
指定拥有所有这些类别的实体才触发加成 |
Multiplier |
效果强度乘数 |
MaxRange |
最大攻击范围(米) |
MinRange |
最小攻击范围(米,可选,默认为 0) |
Origin |
攻击起点相对于实体位置的偏移(可选,默认 {0,0,0}) |
PrepareTime |
攻击命令发出到实际攻击的时间(毫秒,可选,默认 0) |
RepeatTime |
攻击间隔时间(毫秒),攻击动画会拉伸以匹配此时间 |
EffectDelay |
攻击命中后效果生效的延迟(毫秒,可选,默认 0) |
PreferredClasses |
优先攻击的类别列表(空格分隔,可选) |
RestrictedClasses |
不能攻击的类别列表(空格分隔,可选) |
| 字段 | 说明 |
|---|---|
Shape |
溅射形状:圆形或线形 |
Range |
溅射影响区域大小 |
FriendlyFire |
溅射是否伤害非敌方单位 |
| 字段 | 说明 |
|---|---|
Speed |
投射物速度(米/秒) |
Spread |
在 100 米处的双变量正态分布标准差(散布精度) |
Gravity |
影响投射物飞行曲线的重力值 |
FriendlyFire |
流弹是否伤害非敌方单位 |
ActorName |
投射物动画 actor(可选) |
ImpactActorName |
命中动画 actor(可选) |
ImpactAnimationLifetime |
命中动画时长(可选) |
检测传入的攻击。
| 字段 | 说明 |
|---|---|
SuppressionTransferRange |
此范围内(米)的攻击将替换之前的攻击抑制 |
SuppressionRange |
此范围内(米)的其他攻击不会被登记 |
SuppressionTime |
此时间内(毫秒)的其他攻击不会被登记 |
光环列表,以空格分隔的 token 形式表示。
定义实体是否可以自我建造。
| 字段 | 说明 |
|---|---|
Rate |
建筑自动建造的速率(非负小数) |
检测战斗的发生。
| 字段 | 说明 |
|---|---|
TimerInterval |
单个计时器周期的持续时间(毫秒) |
RecordLength |
用于计算伤害率的计时器周期数 |
DamageRateThreshold |
触发警戒提升的伤害率 |
AlertnessBattleThreshold |
玩家被判定为处于战斗状态的警戒值 |
AlertnessPeaceThreshold |
玩家被判定为处于和平状态的警戒值 |
AlertnessMax |
最大警戒等级 |
指定与地形、领土和距离相关的建筑放置限制。
| 字段 | 说明 |
|---|---|
PlacementType |
地形类型限制:land(陆地)、shore(海岸)、land-shore(陆地或海岸) |
Territory |
领土类型限制:own(己方)、ally(盟友)、neutral(中立)、enemy(敌方) |
Category |
建筑类别(用于满足特殊约束,如 Palace、Fortress、Wonder 等) |
MatchLimit |
可选,指定此实体在一场比赛中的创建上限 |
Distance |
可选,相对于指定类别建筑的距离限制 |
允许单位建造和修复建筑。
| 字段 | 说明 |
|---|---|
Rate |
建造速度倍率(1.0 为正常速度) |
Entities |
该单位可建造的实体模板名称列表(空格分隔)。{civ} 会替换为所有者的文明代码,{native} 替换为单位自身的文明代码 |
| 字段 | 说明 |
|---|---|
DefaultArrowCount |
默认箭矢数量 |
MaxArrowCount |
最大箭矢数量(可选) |
GarrisonArrowMultiplier |
每个驻守单位增加的箭矢倍率 |
GarrisonArrowClasses |
可增加额外箭矢的单位类别 |
| 字段 | 说明 |
|---|---|
CapturePoints |
最大占领点数 |
RegenRate |
每秒为所有者恢复的占领点数 |
GarrisonRegenRate |
每个驻守实体每秒为所有者增加的占领点数倍率 |
指定此实体的建造/训练费用。
| 字段 | 说明 |
|---|---|
Population |
人口消耗 |
BuildTime |
建造/训练所需时间(秒) |
Resources |
资源消耗(food 食物、wood 木材、stone 石材、metal 金属) |
当单位或建筑被摧毁时,对附近单位造成伤害。
| 字段 | 说明 |
|---|---|
Shape |
溅射形状(圆形等) |
Range |
溅射影响区域大小 |
FriendlyFire |
是否伤害非敌方单位 |
Damage / Capture / ApplyStatus |
伤害类型,同 Attack 组件 |
| 字段 | 说明 |
|---|---|
Active |
为 false 时实体不会消散 |
SinkingAnim |
为 true 时以类似船只下沉的方式消散 |
SinkProb |
每帧消散的概率 |
DelayTime |
开始下沉前的等待时间(秒) |
SinkRate |
初始下沉速率(米/秒) |
SinkAccel |
下沉加速度(米/秒²) |
| 字段 | 说明 |
|---|---|
SharedLosTech |
研究此科技后盟友共享视野(留空则永不共享) |
SharedDropsitesTech |
研究此科技后盟友共享资源投放点(留空则永不共享) |
指定每个玩家可创建的各类建筑或单位的数量上限。
| 字段 | 说明 |
|---|---|
Limits |
各类别建筑/单位的数量上限 |
LimitChangers |
可改变特定上限的建筑/单位 |
LimitRemovers |
满足条件后可解除特定上限的建筑/单位 |
允许此实体在战争迷雾中被幻影实体替代。
实体形状的近似表示,用于碰撞检测、轮廓渲染和可选择边界框。
| 字段 | 说明 |
|---|---|
Square |
设置为指定尺寸的正方形(width 宽度,depth 深度,单位:米) |
Circle |
设置为指定半径的圆形(radius,单位:米) |
Height |
占地面积的垂直高度(米) |
MaxSpawnDistance |
单位可从此实体边缘生成的最远距离(可选) |
| 字段 | 说明 |
|---|---|
RequiredMemberCount |
阵型所需的最小实体数量(至少 2) |
DisabledTooltip |
阵型被禁用时显示的提示文字 |
SpeedMultiplier |
阵型速度 = 所有成员最低速度 × 此倍率 |
FormationShape |
阵型形状:square(方形)、triangle(三角形)、special(特殊) |
MaxTurningAngle |
阵型尝试转向的角度阈值(弧度) |
ShiftRows |
为 true 时后续行将交错排列 |
SortingClasses |
根据类别层级决定单位在阵型中的位置 |
SortingOrder |
排序顺序(可选):默认从第一行到最后一行、每行从中心向两侧填充;fillFromTheSides 将重要单位置于两侧;fillToTheCenter 将脆弱单位置于中心 |
WidthDepthRatio |
平均宽深比(按单位数量) |
Sloppiness |
实际位置与理想阵型位置之间的最大偏差(米) |
MinColumns |
最小列数(可选) |
MaxColumns |
最大列数(可选) |
MaxRows |
最大行数(可选) |
CenterGap |
中央间隔大小(以单位宽度为单位,可选) |
UnitSeparationWidthMultiplier |
单位横向间距倍率 |
UnitSeparationDepthMultiplier |
单位纵向间距倍率 |
AnimationVariants |
根据成员位置使用的动画变体列表 |
CanAttackAsFormation:指定是否可以整体阵型进行攻击。
| 字段 | 说明 |
|---|---|
BuildTimeModifier |
多个建造者同时建造时的效果(非负小数) |
| 字段 | 说明 |
|---|---|
Max |
可驻守的最大实体数量 |
List |
允许驻守的实体类别(来自 Identity) |
EjectClassesOnDestroy |
被摧毁时弹出的单位类别(其余被杀死) |
BuffHeal |
每秒为驻守单位恢复的生命值 |
LoadingRange |
允许驻守的最大距离(米) |
EjectHealth |
可选,低于此生命百分比时不再允许驻守 |
Pickup |
可选,为 true 时此容器会主动移动去接收待驻守单位 |
| 字段 | 说明 |
|---|---|
Size |
此实体驻守时占用的驻守槽数量 |
控制城墙城门的行为。
| 字段 | 说明 |
|---|---|
PassRange |
单位必须在此距离(米)内城门才会打开 |
无参数。
控制单位的治疗能力。
| 字段 | 说明 |
|---|---|
Range |
可进行治疗的范围(米) |
Health |
每次治疗恢复的生命值 |
Interval |
治疗间隔时间(毫秒) |
UnhealableClasses |
拥有这些类别的目标无法被治疗(即使也有 HealableClasses 中的类别) |
HealableClasses |
目标必须拥有其中一个类别才可被治疗 |
处理生命值与死亡。
| 字段 | 说明 |
|---|---|
Max |
最大生命值 |
Initial |
初始生命值(可选,默认等于 Max) |
DamageVariants |
生命值低于特定比例时切换的外观变体 |
RegenRate |
每秒生命值恢复速率(可为负数) |
IdleRegenRate |
空闲或驻守时每秒生命值恢复速率 |
DeathType |
死亡行为:vanish(立即消失)、corpse(变为尸体)、remain(以 0 生命值保留在世界中) |
SpawnEntityOnDeath |
可选,死亡时生成的实体模板 |
Unhealable |
此实体无法被治疗者治疗 |
指定与实体相关的各种名称和值,通常用于 GUI 显示。
| 字段 | 说明 |
|---|---|
Civ |
主要关联的文明(4 字母代码,如 athen、rome、cart 等) |
Lang |
语音语言(可选) |
Phenotype |
语音和外观表现型,指定多个时随机选择(可选) |
GenericName |
英文通用名称 |
SpecificName |
本地语言专有名称(可选) |
SelectionGroupName |
用于对同级实体分组的名称(可选) |
Rank |
等级:Basic(基础)、Advanced(进阶)、Elite(精英) |
Classes |
可选的实体类别列表(影响游戏机制) |
VisibleClasses |
可选的实体类别列表(同时显示在 GUI 中) |
Requirements |
生产此实体前需满足的条件(可选) |
Controllable |
玩家是否可控制此实体(可选,默认为 true) |
Undeletable |
防止玩家删除此实体 |
指定此实体被消灭时获得的战利品。
字段:food(食物)、wood(木材)、stone(石材)、metal(金属)、xp(经验值),均为非负整数。
| 字段 | 说明 |
|---|---|
TradeType |
贸易路线类型:land(陆地)或 naval(海上) |
InternationalBonus |
两个不同玩家之间贸易时的额外收益比例 |
| 字段 | 说明 |
|---|---|
Color |
小地图上的颜色(r、g、b 属性,0–255) |
Icon |
小地图上显示的图标纹理(可选,相对于 art/textures/ui/session/icons/minimap/) |
幻影实体在战争迷雾中替代真实实体。无参数。
使此实体阻挡其他单位的移动。
| 字段 | 说明 |
|---|---|
Static |
静态矩形障碍物(width × depth) |
Unit |
单位障碍物 |
Obstructions |
多个子障碍物 |
Active |
为 false 时被其他单位的碰撞检测忽略 |
BlockMovement |
是否阻挡单位通行 |
BlockPathfinding |
是否阻挡长距离寻路(仅用于大型静止障碍物) |
BlockFoundation |
是否阻止在其上放置建筑地基 |
BlockConstruction |
是否阻止在其上开始建造建筑 |
DeleteUponConstruction |
在其上开始建造时是否删除此实体 |
DisableBlockMovement |
为 true 时覆盖 BlockMovement(专用于地基处理) |
DisableBlockPathfinding |
为 true 时覆盖 BlockPathfinding(专用于地基处理) |
ControlPersist |
可选,若存在则将此实体的控制组传递给与之碰撞的实体 |
允许此实体被玩家拥有。无参数。
| 字段 | 说明 |
|---|---|
Entity |
变形后的实体模板 |
Time |
变形所需时间(毫秒) |
State |
当前状态:packed(已收起)或 unpacked(已展开) |
| 字段 | 说明 |
|---|---|
BarterMultiplier |
物物交换价格倍率(Buy 买入、Sell 卖出) |
Formations |
此玩家可使用的阵型列表(空格分隔) |
SpyCostMultiplier |
间谍费用倍率 |
| 字段 | 说明 |
|---|---|
Bonus |
此实体存在时增加的人口上限 |
允许此实体在世界中存在于某位置(和朝向)。
| 字段 | 说明 |
|---|---|
Anchor |
跟随地形坡度的旋转方式:upright(直立,如人类)、pitch(前后倾斜,如动物)、roll(左右倾斜)、pitch-roll(全方向倾斜,如车辆) |
Altitude |
地形以上的高度(米) |
Floating |
是否在水面漂浮 |
FloatDepth |
在水面漂浮的深度(需 Floating 为 true) |
TurnRate |
绕 Y 轴的最大旋转速度(弧度/秒) |
帮助建筑训练新单位和研究科技。无参数。
| 字段 | 说明 |
|---|---|
Entity |
晋升后变为的实体模板 |
TrickleRate |
每秒获得的经验值涓流(可选) |
RequiredXp |
晋升所需的经验值 |
无参数。
显示新训练单位将聚集的集结点标记。
| 字段 | 说明 |
|---|---|
MarkerTemplate |
集结点标记实体的模板名称(通常是航路旗 actor) |
LineTexture |
集结点连线的纹理文件 |
LineTextureMask |
纹理遮罩(指示叠加颜色区域) |
LineThickness |
连线厚度 |
LineDashColor |
连线虚线颜色(r、g、b) |
LineStartCap / LineEndCap |
线段端点形状:flat(平直)、round(圆形)、sharp(尖锐)、square(方形) |
LinePassabilityClass |
计算集结点路径时使用的寻路通行级别 |
| 字段 | 说明 |
|---|---|
RepairTimeRatio |
相对于建造时间的修复时间比例 |
允许实体研究科技。
| 字段 | 说明 |
|---|---|
Technologies |
此建筑可研究的科技名称列表(空格分隔,可选)。{civ} 会被替换为所有者的文明代码 |
TechCostMultiplier |
修改资源费用和研究时间的倍率(可选) |