TH1/DOC/devmissiondoc/templates/new-skill-template.md
2026-06-15 16:00:53 +08:00

11 KiB
Raw Blame History

新 Skill 策划需求模板

文档类型:策划给程序的 Skill 开发需求
适用范围:新增或重做一个 SkillType 对应的单位/英雄技能,包括被动、状态、触发器、叠层、持续效果、技能表现
不适用范围:玩家主动点击并改变地图数据的行为按钮;这类同时需要 new-unit-action-template.md
模板用途:后续具体 Skill 需求从本文件复制到 DOC/devmissiondoc/YY_MM/ 后补齐
程序执行前要求:生命周期、叠层、继承、动画时序和资源缺失必须明确;不能让程序按旧技能猜

1. Skill 概要

字段 内容
Skill 名称 待填
建议 SkillType 待填
归属阵营/英雄/单位 待填
Skill 类型 被动 / 状态 / 触发器 / 消耗型 / 光环 / 召唤物规则 / 其他
是否玩家可见 是 / 否
是否显示在单位头顶 是 / 否
是否可叠层 是 / 否
是否需要新行动按钮 是 / 否;若是,关联 new-unit-action-template.md
是否需要新美术/动画 是 / 否
是否影响 AI 决策 是 / 否
是否影响联机同步/回放 是 / 否

2. 设计目标

说明这个 Skill 要解决的玩法问题,不写实现。

  • 核心体验:待填。
  • 玩家决策点:待填。
  • 与英雄/单位/科技的关系:待填。
  • 不希望出现的玩法:待填。

3. 获得与移除

场景 是否获得/移除 规则
单位创建 待填 待填
英雄升级 待填 待填
科技解锁 待填 待填
行动执行后 待填 待填
攻击/受击后 待填 待填
回合开始/结束 待填 待填
死亡 待填 待填
复活 待填 待填
变成船 / 离船 待填 待填
变形 / 转换单位 待填 待填
复制 / 召唤物继承 待填 待填
被驱散 / 清除负面 待填 待填

必须明确:

  • 由谁添加:单位自身 / 友军 / 敌军 / 玩家 / 地块 / 城市 / 科技。
  • originId 语义:施加者单位 ID / 技能宿主 ID / 玩家 ID / 0。
  • 重复获得时:刷新、覆盖、叠层、拒绝、延长回合数,必须选一个。

4. 生命周期继承规则

对应 SkillInfo 字段必须给出策划决策:

字段 决策 说明
ReserveOnCarry 待填 变成船/运输携带时是否保留
ReserveLeaveCarry 待填 离船/离开携带状态时是否保留
ReserveGiantUpgrade 待填 英雄 Lv1->Lv4 升级时是否保留
ReserveCommonTransform 待填 普通变形/转换单位时是否保留

额外说明:

  • 死亡后是否进入尸体、火焰、召唤物、复活形态:待填。
  • 临时单位、幻象、复制体是否继承:待填。
  • 队友/盟友/敌方转换阵营后是否保留:待填。

5. 数值与叠层

字段 内容
初始层数/等级 待填
最大层数/等级 待填
层数含义 待填
回合限制 永久 / N 回合 / 到本回合结束 / 到下次行动 / 其他
刷新规则 待填
覆盖规则 待填
多来源叠加 同来源叠加 / 不同来源叠加 / 只取最高 / 只保留最新
层数归零后 移除 Skill / 保留 0 层显示 / 转换为其他 Skill

如果数值依赖单位属性、地图、科技、资源、城市或其他 Skill必须写公式和边界。

6. 触发时机

勾选所有相关生命周期,并补充触发条件。

生命周期 是否使用 条件 效果
OnActionExecuted 待填 待填 待填
OnTurnStart 待填 待填 待填
OnAfterTurnStart 待填 待填 待填
OnTurnEnd 待填 待填 待填
BeforeDamageOther 待填 待填 待填
OnDamageOther 待填 待填 待填
AfterDamageOther 待填 待填 待填
BeforeDamagedSupportStage 待填 待填 待填
BeforeDamagedTransformStage 待填 待填 待填
OnDamaged 待填 待填 待填
BeforeUnitDamaged 待填 待填 待填
OnAnyUnitMove 待填 待填 待填
OnAnyUnitDie 待填 待填 待填
OnAnyUnitCreate 待填 待填 待填
其他 待填 待填 待填

若同一事件中多个 Skill 都会触发,需说明优先级或是否允许按现有 SkillPriority 处理。

7. 逻辑效果

写清楚权威数据变化:

  • 影响单位属性:生命、攻击、防御、移动、射程、视野、行动点。
  • 影响地图数据:地块、城市、资源、领土、可见性。
  • 影响玩家数据:金币、科技、文化、外交、任务进度。
  • 创建/删除/转换单位:待填。
  • 添加/移除其他 Skill待填。
  • 触发英雄任务:待填。

如果会改变 MapData,程序必须判断是否需要通过 action 执行;不能只在 UI、动画或网络接收处改数据。

8. 表现与动画

表现项 是否需要 资源/说明
Skill 图标 待填 待填
单位头顶图标 待填 待填
地块 VFX 待填 待填
单位 VFX 待填 待填
投射物 待填 待填
音效 待填 待填
BGM/特殊音乐 待填 待填
文字提示/飘字 待填 待填
摄像机/镜头 待填 待填

攻击相关 Skill 必须说明表现阶段:

  • 攻击开始前。
  • 弹道/近战命中前。
  • 命中后立刻。
  • 反击命中后。
  • 攻击流程结算末尾。

程序要求:

  • 若 Skill 在 OnDamageOther / OnDamaged 等攻击流程中刷新 Renderer必须使用 scope-aware 动画模式。
  • 视觉表现只在 mapData == Main.MapData 时执行。
  • AI 模拟图、回放重放准备阶段不能播放真实 UI/VFX 副作用。

9. DataAsset 配置

配置路径:

  • AuthoringUnity/Assets/BundleResources/DataAssets/SkillDataAssets.asset
  • Runtime ExportUnity/Assets/BundleResources/Export/SkillDataAssets.asset
  • 类型:SkillDataAssets / SkillInfo

必须补齐:

SkillInfo 字段 要求
SkillType 对应新枚举
SkillViewType 正面 / 负面 / 特殊 / 其他,待填
SkillName 多语言字段
SkillDesc 多语言字段
NotShow 是否隐藏
ShowOnUnitMono 是否显示在单位头顶
SkillIcon 图标资源
HasShowList 是否不同单位显示不同说明
SkillShowList 如有变体,逐项配置
skillPriority 触发顺序
ReserveOnCarry 见生命周期继承
ReserveLeaveCarry 见生命周期继承
ReserveGiantUpgrade 见生命周期继承
ReserveCommonTransform 见生命周期继承

如果 Skill 通过科技赋予,还要补充 TechAtomInfo.IsAddSkillAddSkillConditionAddSkillType

10. 文案

新增玩家可见文本必须走多语言:

  • Skill 名。
  • Skill 描述。
  • 变体描述。
  • 行动按钮描述,如存在。
  • 图鉴描述,如需要。
  • 教学/提示/日志,如需要。

文案来源:

  • 优先从对应英雄/单位/阵营正式设计文档读取。
  • 如果没有正式文案,留空并写警告。

11. AI

问题 决策
AI 是否需要主动追求该 Skill 待填
AI 是否需要规避敌方该 Skill 待填
AI 评分是否要理解层数/剩余回合 待填
AI 模拟执行时是否会改变真实表现 必须为否
是否需要 BTNodeCanvas 新节点 待填

如果 Skill 会显著改变行动价值,程序需要检查 AIActionGeneratorAIActionScoreCalculator 和相关 BTNodeCanvas 节点。

12. 联机、回放、存档

必须确认:

  • 随机数来源是否同步。
  • Skill 字段是否能被 MemoryPack 正确序列化。
  • 存档读回后层数、来源、剩余回合是否正确。
  • Host/client 执行结果是否一致。
  • 回放/观战是否能重放同样结果。
  • AI 评分深拷贝图不会污染真实图。

13. 美术替代资源方案

如果正式 Skill 图标、单位头顶图标或变体图标缺失,程序不能让玩家可见 Skill 以空图标进入实现。必须先找已有资源复制成新占位资源,并让 DataAsset 指向新占位资源。

占位流程:

  1. 在现有 SkillDataAssets.assetUnity/Assets/BundleResources/TH1UI/Icon/SkillIcon/ 中找同类图标。
  2. 优先选择同功能、同 SkillViewType、同阵营/英雄风格、同显示尺寸的图标;没有完全匹配时选视觉语义最接近的通用图标。
  3. 将源图标复制为新资源文件,目标命名使用新 Skill 的正确名字:Skill_<SkillType>.png;变体图标使用 Skill_<SkillType>_<UnitFullType>.png
  4. 不要直接让新 Skill 引用旧 Skill 的原始图标;必须复制出独立占位文件,方便后续美术替换。
  5. 不要复制源 .meta 文件。优先在 Unity Editor 内 Duplicate 后重命名;如果用文件系统复制,只复制图片文件,让 Unity 生成新的 .meta 和 GUID再按源图标补齐必要的 import settings。
  6. SkillInfo.SkillIcon 指向新占位图标;如果 HasShowList = true,每个 SkillInfoShowPack.Icon 也要按变体复制并指向对应占位图标。
  7. 在警告清单中记录占位来源、目标路径和待替换状态。

占位登记:

字段 目标占位资源 复制来源 是否已接入 DataAsset 备注
SkillInfo.SkillIcon 待填 <SourceSkillType> / <source path> 是 / 否 待填
SkillInfoShowPack.Icon 待填 <SourceSkillType> / <source path> 是 / 否 如无变体可删

只有满足以下情况,才允许不创建占位图标:

  • NotShow = true,且不会出现在单位头顶、图鉴、科技树、行动提示、战斗提示等任何玩家可见位置。
  • 策划明确该 Skill 是纯内部状态,并在本文档中写明“不需要玩家可见图标”。

14. 资源缺失与占位警告

按格式记录:

[WARN][skill-icon-placeholder] SkillDataAssets: <SkillType>.SkillIcon - 正式图标缺失,已复制 <source path> 为 <target path> 占位 - 等待美术替换
[WARN][skill-variant-icon-placeholder] SkillDataAssets: <SkillType>.SkillShowList[<UnitFullType>].Icon - 正式变体图标缺失,已复制 <source path> 为 <target path> 占位 - 等待美术替换
[WARN][skill-icon-missing] SkillDataAssets: <SkillType>.SkillIcon - 缺 Skill 图标且未找到可接受占位源 - 需要策划或美术确认
[WARN][vfx-missing] <SkillType>: 命中特效缺失 - 等待特效资源
[WARN][copy-missing] SkillDataAssets: <SkillType>.SkillDesc - 缺正式技能描述 - 等待策划文案
[WARN][lifecycle-unclear] <SkillType>: ReserveGiantUpgrade 未确认 - 策划需确认英雄升级是否保留

15. 验收测试

  • 获得 Skill 的所有入口均能正确添加。
  • 重复获得、刷新、叠层、覆盖均符合设计。
  • 变船、离船、升级、死亡、复活、变形、复制等生命周期符合设计。
  • 图标、单位头顶显示、描述、多语言正确。
  • 正式图标缺失时,已复制独立占位资源并接到 SkillIcon / SkillInfoShowPack.Icon,没有直接复用旧图标引用。
  • 攻击相关表现时序正确,不提前刷新血条或状态。
  • 单机玩家使用正常。
  • AI 模拟不报错,不污染真实地图。
  • 联机 host/client 结果一致。
  • 存档读回后 Skill 状态一致。
  • 回放/观战结果一致。