[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 的关联镜像规则。
  • 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 在过去与现在时空的双向状态映射。

2.4 架构说明图

为便于实现阶段统一理解,补充两张说明图:

  1. MVC 总体架构图:展示 Model / Controller / View 与存档、日志引导模块的交互。

t6_overall_architecture

  1. 模块关系图:展示输入、核心子系统、模型存储、存档、UI 与渲染链路之间的关系。

t6_module_relations

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 复杂事件(如:任务完成导致标签生成)。
posted @ 2026-04-21 15:54  DoneInFlash  阅读(13)  评论(0)    收藏  举报