[T.6] 团队项目:技术规格说明书
[T.6] 团队项目:技术规格说明书
| 项目 | 内容 |
|---|---|
| 这个作业属于哪个课程 | 2026年春季软件工程(罗杰、任健) |
| 这个作业的要求在哪里 | [T.6] 团队项目:技术规格说明书 - 作业 - 2026年春季软件工程 - 班级博客 - 博客园 |
| 我在这个课程的目标是 | 学习软件工程理论,在完成高质量的软件开发项目中深入学习软件工程经验 |
| 这个作业在哪个具体方面帮助我实现目标 | 确定团队产品的基本定义 |
1. 技术栈
1.1 程序设计语言
- C# 9.0+: 利用强类型特性、接口、抽象类以及
Action/Delegate实现复杂的事件驱动逻辑。
1.2 应用开发框架
- Unity 6000.3.11f1: 核心引擎。
- 2D 基础套件:
- Tilemap: 用于关卡地形与网格布局。
- Cinemachine (2D): 实现平滑的相机追踪与镜头震动效果。
1.3 运行环境
- 平台: PC (Windows)。
- 输入支持: 输入系统 (Input System Package),支持键盘鼠标。
2. 软件总体架构 (MVC)
2.1 Model (模型层)
存储静态配置与动态运行时数据。
- RPG Data 模块:
- EntityData: 玩家与 NPC 的基础属性(基础血量上限等基础数值)。
- InventoryData: 背包数据、道具信息、装备槽位。
- QuestData: 任务进度状态(未接取、进行中、已完成)。
- ObjectState 模块:
- SceneObjectData: 物理坐标、网格位置、
TagContainer、关联的数值对象集合。 - TimelineObjectData: 记录过去与现在
SceneObject的关联镜像规则。
- SceneObjectData: 物理坐标、网格位置、
- Tag & Rule 模块:
- AbstractTag (基类): 包含多个核心钩子(Add, Remove, Tick, DealDamage, ReceiveDamage等)。
- ConservationModel: 记录全局的数值守恒规则。
2.2 View (视图层)
负责渲染、视觉反馈与 UI 呈现。
- World Rendering 模块:
- Sprite/Animator: 处理 2D 角色 8 方向移动动画。
- Tilemap Renderer: 分层渲染背景、障碍物及叠加态阴影。
- TagVisualManager: 动态管理标签产生的特效。
- UI/HUD 模块:
- Dialogue Panel: 对话框与选项分支展示。
- Numerical Dashboard: 血条、蓝条,攻防显示。
- Tag Interaction UI: 标签查看与拖拽使用界面。
2.3 Controller (控制层)
处理系统逻辑分发、AI 与 玩家交互。
- Game Framework 子系统:
- PlayerController: 处理 2D 移动、与环境交互。
- MapManager: 负责场景加载、Tilemap 碰撞更新。
- DialogueManager: 驱动剧情文本流,处理基于标签的对话分支。
- QuestManager: 监听数值变化或标签移动事件,判断任务目标是否达成。
- DynamicTag 子系统:
- LifecycleModule: 负责标签在对象间的转移。
- CombatProcessor: 结合数值守恒与标签钩子,计算 2D 战斗中的最终伤害。
- NumericalConservation 子系统:
- BalancingEngine: 监听对象属性变化,执行数值守恒规则。
- TimeSuperposition 子系统:
- SyncModule: 负责
TimelineObject在过去与现在时空的双向状态映射。
- SyncModule: 负责
2.4 架构说明图
为便于实现阶段统一理解,补充两张说明图:
- MVC 总体架构图:展示 Model / Controller / View 与存档、日志引导模块的交互。
- 模块关系图:展示输入、核心子系统、模型存储、存档、UI 与渲染链路之间的关系。
3. 系统开发目标
3.1 需要完成哪些代码的编写
- 2D 角色控制器: 实现基于 Velocity 的平滑移动系统。
- 标签系统基类与接口: 实现
AbstractTag及其实例化工厂类。 - TimelineObject 容器: 编写能在 Inspector 面板中配置的双向同步脚本。
- 数值守恒算法: 实现能根据守恒规则检测场景内
EntityData对象并平衡数值的引擎。 - 对话与事件系统: 编写支持 JSON 导入的剧情系统,且对话内容可根据对象当前挂载的标签发生变化。
3.2 需要完成哪些测试
3.2.1 单元测试
- 基础操作测试:测试玩家的基础操作(移动、攻击、与 NPC 交互、对话)是否能正常触发。
- 标签删除行为: 测试标签删除后,对象是否完全清除了其在
OnTagAdded中增加的所有临时属性。 - RPG 存档测试: 验证序列化系统能否正确保存
TimelineObject的双重状态及对象身上的动态标签列表。
3.2.2 真实测试
- 任务完成测试:
- 测试在场景内产生特定交互/满足特定要求后,
QuestData是否正确更新。
- 测试在场景内产生特定交互/满足特定要求后,
- 数值守恒与 NPC 交互:
- 玩家修改自己的“力量”数值(增加),根据守恒律,身边的 NPC 的“生命”数值被自动削减。测试 NPC 是否会因生命值降至阈值而触发特定的“重伤”对话。
- 标签行为测试:
- 给火把增删“火焰”标签,验证火把是否能够根据标签的增删,实现照明效果的开启和关闭。
- 给敌人赋予“易燃”标签,玩家使用带有“火焰”标签的技能攻击,验证
OnReceiveDamage钩子是否正确触发了燃烧效果,并增加了伤害。
- RPG 交互链测试:
- 玩家在“过去”给一棵树(SceneObject_Past)赋予“生长”标签,导致树变大。切换到“现在”,验证该树(SceneObject_Present)是否同步变为巨树且阻挡了 2D 路经。
3.3 需要完成哪些系统文档的编写
- API 接口文档:
- 必须包含
AbstractTag所有钩子的入参定义、TimelineObject同步事件的订阅说明、以及NumericalConservation的注册接口。
- 必须包含
- 2D 资源规范手册:
- 规定 Sprite 的像素比例 (PPU)、Tilemap 层级划分(背景、碰撞、装饰)、动画状态机命名规范。
- 策划配置手册:
- 说明如何使用 Excel/CSV 配置 NPC 初始数值、任务触发条件以及标签的数值影响因子。
- 系统架构演进图:
- 描述 MVC 三层如何通过“消息总线”或“观察者模式”处理 RPG 复杂事件(如:任务完成导致标签生成)。

浙公网安备 33010602011771号