[T.6] 团队项目:技术规格说明书(技术设计文档)
[T.6] 团队项目:技术规格说明书(技术设计文档)
| 项目 | 内容 |
|---|---|
| 这个作业属于哪个课程 | 首页 - 2026年春季软件工程 - 北京航空航天大学 - 班级博客 - 博客园 |
| 这个作业的需求在哪里 | [T.6] 团队项目:技术规格说明书 - 作业 - 2026年春季软件工程 - 班级博客 - 博客园 |
| 我在这个课程的目标是 | 通过学习软件工程理论与敏捷开发实践,熟悉产品从立项到交付的全流程,提升团队协作与工程开发经验。 |
| 这个作业在哪个具体方面帮助我实现目标 | 明确2D横版硬核动作游戏的技术架构、接口规范、测试标准与部署流程,为后续的代码实现、敏捷迭代与团队协同提供技术基石。 |
一、 写作目标
1. 技术规格说明书的目标
本文档旨在为团队的开发人员、测试人员及项目管理者提供一个全局的技术蓝图。具体来说:
- 指导开发: 明确系统的整体架构、子系统划分及核心模块的技术选型,确保所有开发者在同一技术底座上工作。
- 规范接口: 统一数据驱动格式与内部系统调用规范,降低模块间的耦合度。
- 确立标准: 设定明确的性能指标、测试计划与软件出口条件,保障最终交付的动作游戏具备“帧级精准”的体验。
2. 叙述和讨论的范畴与界限
- 包含范畴: 前端(客户端)架构设计、核心战斗逻辑的技术实现方案、数据存储与加载机制、性能量度与部署环境。
- 边界: 本文档暂不包含具体的每一行代码级别的逻辑全图,暂不包含美术资产的制作规范。
二、 概念和术语
为避免团队内部沟通歧义,特对以下核心概念进行精确定义:
- 精确弹反 (Perfect Parry): 在受击判定框(Hitbox)接触玩家受击框(Hurtbox)前的特定物理帧数(如5-8帧)内,玩家输入防御指令触发的特殊状态。该状态下玩家免疫伤害,并触发敌方架势条削减。
- 顿帧 (Hitstop): 视觉与手感强调技术。当触发“精确弹反”或高强度攻击命中时,将游戏全局时间缩放(
Time.timeScale)短暂设为0或极小值,持续若干毫秒,随后恢复正常,以增强“刀剑交锋的打铁感”。 - 无敌帧 (i-frame / Invincibility Frame): 玩家执行“闪避”动作时,动画中特定的一段帧区间。在此区间内,玩家的受击框被临时禁用,免疫一切常规伤害。
- 妖气轮回 (NG+): 即多周目系统。每次通关后,读取数据驱动配置文件中的下一级难度系数,对全局敌人进行数值重载与AI逻辑树切换。
三、 技术栈
鉴于本项目为“轻量级2D单机动作游戏”,且追求极致的帧级判定与本地运行效率,我们的技术栈选择如下:
- 程序设计语言: C#(面向对象,强类型,适合游戏逻辑的高效编写与Unity引擎深度集成)。
- 应用开发框架/引擎: Unity 2022 LTS (或更高版本)。选用LTS版本以保证开发周期的稳定性。
- 物理核心: 依托Unity内置的 2D Physics 系统,通过 Kinematic(运动学)结合 Raycast(射线检测)来实现更精准的碰撞,避免纯刚体(Rigidbody2D)可能带来的受力滑步问题。
- 动画核心: Unity Animator 状态机(配合Animation Event精确控制动作帧与判定帧的同步)。
- 运行与开发环境:
- 开发环境: Windows 10/11,Visual Studio 2022 / JetBrains Rider。
- 部署与运行环境(客户端): Windows 平台,支持 DirectX 11/12 的 x64 架构 PC。
四、 软件架构
为了保证“硬核动作反馈”的高效运行以及“数据驱动”的灵活性,本项目采用表现与逻辑分离的单机游戏架构。
1. 包含的子系统及任务划分
本项目无需服务端,作为纯客户端应用,内部划分为以下核心子系统:
- Input System (输入子系统): 负责接收玩家的键盘/手柄输入,并将其转化为标准化的指令(如:按下“攻击”、长按“防御”),支持输入缓存(Input Buffer)以提升动作连贯性。
- Combat System (战斗核心子系统): 负责计算攻击判定、弹反逻辑、无敌帧计算、伤害结算与架势条削减。
- Entity State Machine (实体状态机): 控制玩家(Player)和四大妖王(Boss)的行为状态轮转(如:Idle -> Attack -> Hitstun -> Dead)。
- VFX & Audio (视听表现子系统): 监听战斗系统派发的事件(Event),触发屏幕震动、顿帧、粒子特效及打铁音效。
2. 系统交互工作模式与设计原则
- 内聚/耦合: 采用事件驱动与观察者模式。实现界面与业务逻辑的严格分离s。
- 信息隐藏: 实体(Entity)的内部属性(如具体HP数值)对外私有,仅暴露受击(
TakeDamage)等公共方法。
五、 软件设计和实现
1. 核心代码编写需求
- 基础控制器构建: 编写具有重力、跳跃、地面检测、平台穿透功能的 2D Character Controller。
- 战斗逻辑模块: 实现基于 Animation Event 的帧级攻击判定;实现基于接口的伤害传递系统(如
IDamageable接口)。 - AI 行为树 / FSM: 为四大妖王编写各自的状态机,包含观察距离、招式冷却、二阶段变异逻辑。
- 内心道场养成系统: 编写灵魄消耗逻辑、属性计算器(公式化处理升级带来的HP与体力恢复收益),以及技能(咒印)装配切换的UI逻辑。
2. 系统文档编写需求
- 《配置数据表规范》: 详细说明策划在填写怪物数值、多周目膨胀系数时的字段含义与取值范围。
- (实现阶段补充)API接口说明: 列出核心单例(如
GameManager,AudioManager)的公共方法,供各模块开发者调用。
3. 异常处理机制
- 输入假设: 假设所有配置文件读取格式正确。
- 异常处理: 如果JSON文件损坏或缺失,系统应能捕获
FileNotFoundException或JsonSerializationException,并自动加载项目内置的默认(Default)配置回退,并在本地生成错误日志,保证游戏不会直接崩溃死锁。
六、 软件测试和性能量度
1. 测试计划
- 单元测试 (Unit Testing): 重点测试非表现层的纯数学逻辑。例如“伤害计算器模块”、“属性升级属性计算”、“多周目数值乘区叠加”。确保计算结果严格符合公式设定。
- 系统边界与压力测试:
- 在“内心道场”的试炼结界中,同屏生成 50-100 个“怨念碎片”实体,监控帧率波动与内存分配。
- 极限操作测试:使用脚本模拟极高频率的输入(1秒内按键50次),测试输入缓存机制是否会导致内存溢出或状态机死锁。
- 真实场景灰度测试(Playtesting):
- 重点: 寻找动作游戏经验丰富的玩家进行盲测,重点反馈“弹反判定区间是否合理”、“起跳是否有粘滞感”、“大妖攻击前摇是否清晰”。
2. 软件性能量度与技术边界
- 性能指标: 作为硬核动作游戏,帧率是绝对的生命线。游戏在运行时的量度标准为:在主流配置(如Intel i5 + GTX 1650)下,全局稳定保持 60 FPS(每帧处理时间低于 16.6ms)。
- 内存占用: 峰值内存控制在 2GB 以内。
- 能力边界: 受限于2D物理引擎与本项目克制的规模,同屏高复杂度AI实体不宜超过 20 个,超出可能导致物理运算拖慢帧率。
3. 出口条件(Release Criteria)
软件最终版本的硬性技术标准:
- 四大妖王的核心行为树与状态机运转无报错。
- 精准弹反、闪避的核心博弈闭环测试通过,顿帧表现不引起画面卡死。
- 玩家的存档/读档(进度持久化)经过测试无丢失现象。
- 打包为 Windows
.exe可执行文件并在至少 3 台不同硬件环境的PC上冷启动成功且帧率达标。
七、 技术风险识别和评估
| 潜在风险 | 影响程度 | 应对策略 / 避免方法 |
|---|---|---|
| 判定精度与帧率耦合 | 致命 | 避免在 Update 中进行容易漏帧的快速碰撞检测,采用 FixedUpdate 配合射线的 RaycastNonAlloc 方案;动作判定帧严格绑定动画事件,而非单纯的计时器。 |
| 状态机“死锁” | 严重 | 为所有实体状态机设计“强制打断”与“超时退出”机制(Fail-safe),防止怪物卡在“正在攻击”状态且不播放后续动画。 |
八、 软件部署和维护
- 构建与部署:
- 本项目最终交付形态为免安装绿包 (.zip 压缩的文件夹,内含 .exe 及依赖数据)。
- 利用 GitHub Actions 配置轻量级的 CI 自动化流水线。每次合并至
main分支时,自动触发 Unity 命令行进行 Windows 平台的 Build,并输出打包日志,确保代码合并不会破坏构建。
- 维护环境: 发布后通过玩家社群收集 Bug 反馈,针对数值不平衡问题,通过修改外部的“数据驱动配置表”快速下发热更新补丁(替换配置文件),而无需重新编译庞大的代码库。
浙公网安备 33010602011771号