11 KiB
新 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 配置
配置路径:
- Authoring:
Unity/Assets/BundleResources/DataAssets/SkillDataAssets.asset - Runtime Export:
Unity/Assets/BundleResources/Export/SkillDataAssets.asset - 类型:
SkillDataAssets/SkillInfo
必须补齐:
SkillInfo 字段 |
要求 |
|---|---|
SkillType |
对应新枚举 |
SkillViewType |
正面 / 负面 / 特殊 / 其他,待填 |
SkillName |
多语言字段 |
SkillDesc |
多语言字段 |
NotShow |
是否隐藏 |
ShowOnUnitMono |
是否显示在单位头顶 |
SkillIcon |
图标资源 |
HasShowList |
是否不同单位显示不同说明 |
SkillShowList |
如有变体,逐项配置 |
skillPriority |
触发顺序 |
ReserveOnCarry |
见生命周期继承 |
ReserveLeaveCarry |
见生命周期继承 |
ReserveGiantUpgrade |
见生命周期继承 |
ReserveCommonTransform |
见生命周期继承 |
如果 Skill 通过科技赋予,还要补充 TechAtomInfo.IsAddSkill、AddSkillCondition、AddSkillType。
10. 文案
新增玩家可见文本必须走多语言:
- Skill 名。
- Skill 描述。
- 变体描述。
- 行动按钮描述,如存在。
- 图鉴描述,如需要。
- 教学/提示/日志,如需要。
文案来源:
- 优先从对应英雄/单位/阵营正式设计文档读取。
- 如果没有正式文案,留空并写警告。
11. AI
| 问题 | 决策 |
|---|---|
| AI 是否需要主动追求该 Skill | 待填 |
| AI 是否需要规避敌方该 Skill | 待填 |
| AI 评分是否要理解层数/剩余回合 | 待填 |
| AI 模拟执行时是否会改变真实表现 | 必须为否 |
| 是否需要 BTNodeCanvas 新节点 | 待填 |
如果 Skill 会显著改变行动价值,程序需要检查 AIActionGenerator、AIActionScoreCalculator 和相关 BTNodeCanvas 节点。
12. 联机、回放、存档
必须确认:
- 随机数来源是否同步。
- Skill 字段是否能被 MemoryPack 正确序列化。
- 存档读回后层数、来源、剩余回合是否正确。
- Host/client 执行结果是否一致。
- 回放/观战是否能重放同样结果。
- AI 评分深拷贝图不会污染真实图。
13. 美术替代资源方案
如果正式 Skill 图标、单位头顶图标或变体图标缺失,程序不能让玩家可见 Skill 以空图标进入实现。必须先找已有资源复制成新占位资源,并让 DataAsset 指向新占位资源。
占位流程:
- 在现有
SkillDataAssets.asset和Unity/Assets/BundleResources/TH1UI/Icon/SkillIcon/中找同类图标。 - 优先选择同功能、同
SkillViewType、同阵营/英雄风格、同显示尺寸的图标;没有完全匹配时选视觉语义最接近的通用图标。 - 将源图标复制为新资源文件,目标命名使用新 Skill 的正确名字:
Skill_<SkillType>.png;变体图标使用Skill_<SkillType>_<UnitFullType>.png。 - 不要直接让新 Skill 引用旧 Skill 的原始图标;必须复制出独立占位文件,方便后续美术替换。
- 不要复制源
.meta文件。优先在 Unity Editor 内 Duplicate 后重命名;如果用文件系统复制,只复制图片文件,让 Unity 生成新的.meta和 GUID,再按源图标补齐必要的 import settings。 - 将
SkillInfo.SkillIcon指向新占位图标;如果HasShowList = true,每个SkillInfoShowPack.Icon也要按变体复制并指向对应占位图标。 - 在警告清单中记录占位来源、目标路径和待替换状态。
占位登记:
| 字段 | 目标占位资源 | 复制来源 | 是否已接入 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 状态一致。
- 回放/观战结果一致。