$npx -y skills add HOBOBO/AbilityKit --skill abilitykit-developmentAbilityKit 游戏技能框架开发技能。用于开发、调试 MOBA 技能系统,包括 Console Demo 运行、帧同步调试、日志分析、配置文件编辑。触发场景:用户提到 AbilityKit、Console Demo、MOBA、帧同步、Debug、日志分析。
| 1 | # AbilityKit 开发指南 |
| 2 | |
| 3 | ## 项目结构 |
| 4 | |
| 5 | ``` |
| 6 | AbilityKit/ |
| 7 | ├── Unity/Packages/ # Unity Package 源码(唯一源码位置) |
| 8 | │ ├── com.abilitykit.core/ |
| 9 | │ ├── com.abilitykit.triggering/ |
| 10 | │ ├── com.abilitykit.ability/ |
| 11 | │ └── ... |
| 12 | ├── src/ # .NET SDK 项目(编译/测试用) |
| 13 | │ ├── AbilityKit.Demo.Moba.Console/ # Console Demo(主要开发入口) |
| 14 | │ ├── AbilityKit.Demo.Moba.Core/ |
| 15 | │ └── ... |
| 16 | └── Docs/ # 设计文档 |
| 17 | ``` |
| 18 | |
| 19 | ## 源码位置规则 |
| 20 | |
| 21 | | 操作 | 去哪里 | |
| 22 | |-----|-------| |
| 23 | | **阅读/修改代码** | `Unity/Packages/` | |
| 24 | | **运行 dotnet build** | `src/` | |
| 25 | | **Unity 开发/运行** | `Unity/Packages/` | |
| 26 | | **编写新代码** | `Unity/Packages/` | |
| 27 | |
| 28 | **禁止**:在 `src/` 目录创建与 `Unity/Packages/` 重复的源码文件 |
| 29 | |
| 30 | ## Console Demo 调试 |
| 31 | |
| 32 | ### 运行 Console Demo |
| 33 | |
| 34 | ```powershell |
| 35 | cd src/AbilityKit.Demo.Moba.Console |
| 36 | dotnet run |
| 37 | ``` |
| 38 | |
| 39 | ### 自动测试 |
| 40 | |
| 41 | 程序启动后自动运行 7 项测试: |
| 42 | 1. **Initialization** - 初始化流程 |
| 43 | 2. **Phase Transition** - 阶段切换 |
| 44 | 3. **Frame Sync** - 帧同步 |
| 45 | 4. **Skill Cast** - 技能释放 |
| 46 | 5. **Damage Calculation** - 伤害计算 |
| 47 | 6. **Cooldown System** - 冷却系统 |
| 48 | 7. **Move System** - 移动系统 |
| 49 | |
| 50 | ### 日志级别 |
| 51 | |
| 52 | ```csharp |
| 53 | Log.SetMinLevel(Log.LogLevel.System); // 默认:只显示系统日志 |
| 54 | Log.SetMinLevel(Log.LogLevel.Debug); // 测试期间:显示调试日志 |
| 55 | Log.EnableTrace(); // 追踪模式:显示所有日志 |
| 56 | ``` |
| 57 | |
| 58 | ### 常用调试命令 |
| 59 | |
| 60 | | 任务 | 命令 | |
| 61 | |-----|------| |
| 62 | | 编译 | `dotnet build` | |
| 63 | | 运行 | `dotnet run` | |
| 64 | | 查看日志 | `Select-String -Path "output.txt" -Pattern "ERROR"` | |
| 65 | |
| 66 | ## 配置文件 |
| 67 | |
| 68 | | 配置 | 路径 | |
| 69 | |-----|------| |
| 70 | | 角色配置 | `src/AbilityKit.Demo.Moba.Console/Configs/moba/characters.json` | |
| 71 | | 技能配置 | `src/AbilityKit.Demo.Moba.Console/Configs/moba/skills.json` | |
| 72 | | 属性模板 | `src/AbilityKit.Demo.Moba.Console/Configs/moba/attribute_templates.json` | |
| 73 | | Buff 配置 | `src/AbilityKit.Demo.Moba.Console/Configs/moba/buffs.json` | |
| 74 | | 弹道配置 | `src/AbilityKit.Demo.Moba.Console/Configs/moba/projectiles.json` | |
| 75 | |
| 76 | ### 技能 ID 命名规则 |
| 77 | |
| 78 | 角色配置中的 `SkillIds` 需要与技能配置中的 `Id` 匹配: |
| 79 | |
| 80 | ```json |
| 81 | // characters.json |
| 82 | "SkillIds": [10010101, 10010201, 10010301] |
| 83 | |
| 84 | // skills.json - 必须包含这些 Id |
| 85 | {"Id": 10010101, "Name": "廉颇-技能1", "CooldownMs": 5000} |
| 86 | {"Id": 10010201, "Name": "廉颇-技能2", "CooldownMs": 8000} |
| 87 | {"Id": 10010301, "Name": "廉颇-技能3", "CooldownMs": 12000} |
| 88 | ``` |
| 89 | |
| 90 | ## 关键模块 |
| 91 | |
| 92 | | 模块 | 路径 | 说明 | |
| 93 | |-----|------|------| |
| 94 | | 日志系统 | `Platform/Log.cs` | 支持分级日志输出 | |
| 95 | | 技能执行器 | `Services/SkillExecutor.cs` | 处理技能施放和冷却 | |
| 96 | | 战斗服务 | `Services/BattleServices.cs` | 伤害计算、角色管理 | |
| 97 | | 输入处理 | `Battle/ConsoleInputFeature.cs` | 技能输入触发 | |
| 98 | | 自动测试 | `AutoTest/AutoTestRunner.cs` | 流程完整性验证 | |
| 99 | |
| 100 | ## 帧同步调试 |
| 101 | |
| 102 | 帧同步状态通过日志 `[SYNC]` 频道输出: |
| 103 | |
| 104 | ``` |
| 105 | [SYNC] [Sync] Frame: 539, State: InMatch, Actors: 7 |
| 106 | ``` |
| 107 | |
| 108 | 检查要点: |
| 109 | 1. Frame 持续增长(约 30 FPS) |
| 110 | 2. State 保持 `InMatch` |
| 111 | 3. ActorCount 正确 |
| 112 | |
| 113 | ## 故障排查 |
| 114 | |
| 115 | | 问题 | 排查方法 | |
| 116 | |-----|---------| |
| 117 | | 技能配置未加载 | 检查 `skills.json` 中技能 ID 是否与 `characters.json` 匹配 | |
| 118 | | 冷却不生效 | 确认 `CooldownMs > 0` 且配置正确加载 | |
| 119 | | 输入无响应 | 检查 `Context.State` 是否为 `InMatch` | |
| 120 | | 帧不同步 | 检查 `ConsoleSyncFeature` 是否正确 Tick | |
| 121 | |
| 122 | ## 参考文档 |
| 123 | |
| 124 | - 详细架构设计见 [Docs/通用技能系统架构设计.md](Docs/通用技能系统架构设计.md) |
| 125 | - Console 视图层设计见 [Docs/AbilityKit.Moba.Console视图层架构设计.md](Docs/AbilityKit.Moba.Console视图层架构设计.md) |