9.9 KiB
9.9 KiB
需求文档
简介
本项目旨在使用 Godot 引擎开发一款 2D 多人在线 AI 小镇网页版游戏,核心功能是让现实用户创建自己的角色并在 Datawhale 办公室场景中与其他玩家角色实现自由交流和对话交互。当玩家在线时,角色由玩家操控;当玩家离线时,角色作为 NPC 继续存在于游戏世界中。游戏需优先支持网页端运行,并预留手机端适配接口,为后续跨端联动功能做准备。
术语表
- 游戏系统 (Game System): 指整个 Godot 游戏应用程序及其所有组件
- 角色 (Character): 游戏中的可交互实体,可以是在线玩家操控或离线 NPC 状态
- 在线角色 (Online Character): 当前由真实玩家操控的角色
- 离线角色 (Offline Character): 玩家离线时,其角色作为 NPC 继续存在于游戏世界中
- 对话系统 (Dialogue System): 处理角色之间文本对话交互的系统组件
- 场景 (Scene): 游戏中的 2D 环境,本项目首个场景为 Datawhale 办公室
- Datawhale: AI 组织名称,游戏场景的主题背景
- 网页版 (Web Version): 通过浏览器运行的游戏版本
- 跨端联动 (Cross-Platform Sync): 手机端与电脑端之间的数据互通和协同操控功能
- 移动端适配 (Mobile Adaptation): 针对手机设备的界面和操控优化
- 多人在线 (Multiplayer Online): 支持多个玩家同时在线并在共享游戏世界中交互
- 持久化世界 (Persistent World): 游戏世界状态持续存在,不因玩家离线而消失
需求
需求 1
用户故事: 作为新玩家,我希望能够创建自己的角色,以便在游戏世界中与其他玩家交互。
验收标准
- WHEN 新玩家首次进入游戏 THEN 游戏系统 SHALL 显示角色创建界面,包含角色名称输入字段
- WHEN 玩家提交有效的角色名称 THEN 游戏系统 SHALL 创建新的角色实例并将其绑定到该玩家账户
- WHEN 玩家提交空白或仅包含空格的角色名称 THEN 游戏系统 SHALL 拒绝创建并显示错误提示信息
- WHEN 角色创建成功 THEN 游戏系统 SHALL 在场景中的默认位置生成该角色的可视化表示
- WHEN 角色创建完成 THEN 游戏系统 SHALL 为该角色分配唯一标识符并保存到服务器
需求 2
用户故事: 作为游戏玩家,我希望所有角色(包括在线和离线)能够在场景中移动,以便游戏世界更加生动和真实。
验收标准
- WHEN 角色被创建或加载到场景 THEN 游戏系统 SHALL 为该角色启用基础移动能力
- WHEN 角色执行移动操作 THEN 游戏系统 SHALL 更新角色的位置坐标并在所有客户端同步显示
- WHEN 角色移动到场景边界 THEN 游戏系统 SHALL 阻止角色超出场景可行走区域
- WHEN 角色遇到障碍物(如墙壁、家具)THEN 游戏系统 SHALL 阻止角色穿过障碍物
- WHEN 多个角色同时移动 THEN 游戏系统 SHALL 独立处理每个角色的移动逻辑并在所有客户端保持同步
需求 3
用户故事: 作为游戏玩家,我希望能够与其他角色进行对话交互,以便体验社交和交流功能。
验收标准
- WHEN 玩家角色接近另一个角色并触发交互 THEN 游戏系统 SHALL 显示对话界面
- WHEN 对话界面显示 THEN 游戏系统 SHALL 展示对方角色的文本对话内容
- WHEN 玩家输入对话内容并发送 THEN 游戏系统 SHALL 将消息传递给对方并在双方界面显示
- WHEN 对话结束 THEN 游戏系统 SHALL 关闭对话界面并恢复正常游戏状态
- WHEN 玩家观察其他角色之间的对话 THEN 游戏系统 SHALL 在附近角色上方显示对话气泡
需求 4
用户故事: 作为游戏玩家,我希望在 Datawhale 办公室场景中游玩,以便体验具有品牌特色的游戏环境。
验收标准
- WHEN 游戏启动 THEN 游戏系统 SHALL 加载 Datawhale 办公室场景作为默认场景
- WHEN Datawhale 办公室场景加载 THEN 游戏系统 SHALL 显示办公室基础布局元素,包括桌椅、门窗和过道
- WHEN 场景渲染 THEN 游戏系统 SHALL 展示 Datawhale 品牌标识,包括 logo 和组织相关标志性元素
- WHEN 场景渲染 THEN 游戏系统 SHALL 应用 Datawhale 品牌色彩方案到场景视觉元素中
- WHEN 玩家在场景中移动 THEN 游戏系统 SHALL 正确处理与办公室元素的碰撞检测
需求 5
用户故事: 作为在线玩家,我希望能够操控自己的角色在场景中移动,以便探索游戏世界和与其他角色互动。
验收标准
- WHEN 玩家使用键盘方向键或 WASD 键 THEN 游戏系统 SHALL 移动玩家角色到相应方向并同步到服务器
- WHEN 玩家在触摸设备上使用虚拟摇杆或触摸控制 THEN 游戏系统 SHALL 移动玩家角色到指定方向并同步到服务器
- WHEN 玩家角色移动到场景边界 THEN 游戏系统 SHALL 阻止角色超出可行走区域
- WHEN 玩家角色与障碍物碰撞 THEN 游戏系统 SHALL 阻止角色穿过障碍物
- WHEN 玩家角色移动 THEN 游戏系统 SHALL 播放相应的移动动画并在所有客户端显示
需求 6
用户故事: 作为网页用户,我希望能够在浏览器中直接运行游戏,以便无需安装额外软件即可游玩。
验收标准
- WHEN 用户在主流浏览器(Chrome、Firefox、Safari、Edge)中访问游戏网页 THEN 游戏系统 SHALL 成功加载并运行
- WHEN 游戏在网页中加载 THEN 游戏系统 SHALL 在 10 秒内完成初始化并显示游戏界面
- WHEN 游戏在不同分辨率的浏览器窗口中运行 THEN 游戏系统 SHALL 自动调整画面尺寸以适应窗口大小
- WHEN 用户调整浏览器窗口大小 THEN 游戏系统 SHALL 动态调整游戏画面比例保持可玩性
- WHEN 游戏在网页中运行 THEN 游戏系统 SHALL 保持稳定的帧率(至少 30 FPS)
需求 7
用户故事: 作为项目开发者,我希望游戏架构预留手机端适配接口,以便后续能够实现跨端联动功能。
验收标准
- WHEN 游戏架构设计完成 THEN 游戏系统 SHALL 包含独立的输入处理模块以支持多种输入方式
- WHEN 游戏 UI 设计完成 THEN 游戏系统 SHALL 使用响应式布局以适应不同屏幕尺寸
- WHEN 游戏数据结构设计完成 THEN 游戏系统 SHALL 支持数据序列化和反序列化以便跨端数据同步
- WHEN 游戏网络模块设计完成 THEN 游戏系统 SHALL 预留网络通信接口以支持未来的跨端数据传输
- WHEN 游戏在移动设备浏览器中运行 THEN 游戏系统 SHALL 检测设备类型并应用相应的控制方案
需求 8
用户故事: 作为项目维护者,我希望项目代码结构清晰且文档完善,以便后续能够轻松扩展功能。
验收标准
- WHEN 项目文件组织完成 THEN 游戏系统 SHALL 按照功能模块划分目录结构(场景、角色、UI、数据等)
- WHEN 代码编写完成 THEN 游戏系统 SHALL 为关键函数和类添加注释说明其用途和参数
- WHEN 项目交付 THEN 游戏系统 SHALL 包含 README 文档说明项目结构、运行方法和扩展指南
- WHEN 新功能需要添加 THEN 游戏系统 SHALL 提供清晰的模块接口以便集成新组件
- WHEN 资源文件添加到项目 THEN 游戏系统 SHALL 按照资源类型(图像、音频、场景)组织文件路径
需求 9
用户故事: 作为游戏玩家,我希望我的角色和游戏进度能够被持久化保存,以便下次登录时能够继续游戏。
验收标准
- WHEN 玩家创建新角色 THEN 游戏系统 SHALL 将角色数据保存到服务器
- WHEN 玩家重新登录游戏 THEN 游戏系统 SHALL 从服务器读取并恢复该玩家的角色数据
- WHEN 游戏数据保存失败 THEN 游戏系统 SHALL 显示错误提示并保持当前游戏状态
- WHEN 玩家角色位置或状态改变 THEN 游戏系统 SHALL 定期将更新同步到服务器
- WHEN 游戏数据序列化 THEN 游戏系统 SHALL 使用 JSON 格式以便跨平台兼容
需求 10
用户故事: 作为游戏玩家,我希望游戏具有友好的用户界面,以便我能够轻松理解和使用各项功能。
验收标准
- WHEN 游戏启动 THEN 游戏系统 SHALL 显示登录界面,包含登录和创建角色选项
- WHEN 玩家与 UI 元素交互 THEN 游戏系统 SHALL 提供视觉反馈(如按钮高亮、点击效果)
- WHEN 游戏显示文本信息 THEN 游戏系统 SHALL 使用清晰可读的字体和适当的字号
- WHEN 游戏在移动设备上运行 THEN 游戏系统 SHALL 调整 UI 元素大小以适应触摸操作
- WHEN 玩家执行操作失败 THEN 游戏系统 SHALL 显示明确的错误提示信息
需求 11
用户故事: 作为游戏玩家,我希望能够看到其他在线玩家和离线角色,以便了解游戏世界中的其他参与者。
验收标准
- WHEN 玩家进入游戏场景 THEN 游戏系统 SHALL 显示所有当前在线玩家的角色
- WHEN 玩家进入游戏场景 THEN 游戏系统 SHALL 显示所有离线玩家的角色作为 NPC
- WHEN 其他玩家上线 THEN 游戏系统 SHALL 在场景中显示该玩家的角色并标记为在线状态
- WHEN 其他玩家下线 THEN 游戏系统 SHALL 将该玩家的角色转换为离线 NPC 状态
- WHEN 显示角色 THEN 游戏系统 SHALL 通过视觉标识区分在线玩家和离线角色
需求 12
用户故事: 作为游戏玩家,我希望能够与服务器保持连接,以便实现实时多人交互。
验收标准
- WHEN 玩家登录游戏 THEN 游戏系统 SHALL 建立与服务器的网络连接
- WHEN 网络连接建立 THEN 游戏系统 SHALL 在 5 秒内完成身份验证并加载角色数据
- WHEN 网络连接中断 THEN 游戏系统 SHALL 显示断线提示并尝试自动重连
- WHEN 玩家执行操作 THEN 游戏系统 SHALL 将操作数据发送到服务器并接收确认
- WHEN 服务器推送更新 THEN 游戏系统 SHALL 实时更新本地游戏状态