Files
whale-town/.kiro/specs/godot-ai-town-game/requirements.md
2025-12-05 19:00:14 +08:00

9.9 KiB
Raw Blame History

需求文档

简介

本项目旨在使用 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

用户故事: 作为新玩家,我希望能够创建自己的角色,以便在游戏世界中与其他玩家交互。

验收标准

  1. WHEN 新玩家首次进入游戏 THEN 游戏系统 SHALL 显示角色创建界面,包含角色名称输入字段
  2. WHEN 玩家提交有效的角色名称 THEN 游戏系统 SHALL 创建新的角色实例并将其绑定到该玩家账户
  3. WHEN 玩家提交空白或仅包含空格的角色名称 THEN 游戏系统 SHALL 拒绝创建并显示错误提示信息
  4. WHEN 角色创建成功 THEN 游戏系统 SHALL 在场景中的默认位置生成该角色的可视化表示
  5. WHEN 角色创建完成 THEN 游戏系统 SHALL 为该角色分配唯一标识符并保存到服务器

需求 2

用户故事: 作为游戏玩家,我希望所有角色(包括在线和离线)能够在场景中移动,以便游戏世界更加生动和真实。

验收标准

  1. WHEN 角色被创建或加载到场景 THEN 游戏系统 SHALL 为该角色启用基础移动能力
  2. WHEN 角色执行移动操作 THEN 游戏系统 SHALL 更新角色的位置坐标并在所有客户端同步显示
  3. WHEN 角色移动到场景边界 THEN 游戏系统 SHALL 阻止角色超出场景可行走区域
  4. WHEN 角色遇到障碍物如墙壁、家具THEN 游戏系统 SHALL 阻止角色穿过障碍物
  5. WHEN 多个角色同时移动 THEN 游戏系统 SHALL 独立处理每个角色的移动逻辑并在所有客户端保持同步

需求 3

用户故事: 作为游戏玩家,我希望能够与其他角色进行对话交互,以便体验社交和交流功能。

验收标准

  1. WHEN 玩家角色接近另一个角色并触发交互 THEN 游戏系统 SHALL 显示对话界面
  2. WHEN 对话界面显示 THEN 游戏系统 SHALL 展示对方角色的文本对话内容
  3. WHEN 玩家输入对话内容并发送 THEN 游戏系统 SHALL 将消息传递给对方并在双方界面显示
  4. WHEN 对话结束 THEN 游戏系统 SHALL 关闭对话界面并恢复正常游戏状态
  5. WHEN 玩家观察其他角色之间的对话 THEN 游戏系统 SHALL 在附近角色上方显示对话气泡

需求 4

用户故事: 作为游戏玩家,我希望在 Datawhale 办公室场景中游玩,以便体验具有品牌特色的游戏环境。

验收标准

  1. WHEN 游戏启动 THEN 游戏系统 SHALL 加载 Datawhale 办公室场景作为默认场景
  2. WHEN Datawhale 办公室场景加载 THEN 游戏系统 SHALL 显示办公室基础布局元素,包括桌椅、门窗和过道
  3. WHEN 场景渲染 THEN 游戏系统 SHALL 展示 Datawhale 品牌标识,包括 logo 和组织相关标志性元素
  4. WHEN 场景渲染 THEN 游戏系统 SHALL 应用 Datawhale 品牌色彩方案到场景视觉元素中
  5. WHEN 玩家在场景中移动 THEN 游戏系统 SHALL 正确处理与办公室元素的碰撞检测

需求 5

用户故事: 作为在线玩家,我希望能够操控自己的角色在场景中移动,以便探索游戏世界和与其他角色互动。

验收标准

  1. WHEN 玩家使用键盘方向键或 WASD 键 THEN 游戏系统 SHALL 移动玩家角色到相应方向并同步到服务器
  2. WHEN 玩家在触摸设备上使用虚拟摇杆或触摸控制 THEN 游戏系统 SHALL 移动玩家角色到指定方向并同步到服务器
  3. WHEN 玩家角色移动到场景边界 THEN 游戏系统 SHALL 阻止角色超出可行走区域
  4. WHEN 玩家角色与障碍物碰撞 THEN 游戏系统 SHALL 阻止角色穿过障碍物
  5. WHEN 玩家角色移动 THEN 游戏系统 SHALL 播放相应的移动动画并在所有客户端显示

需求 6

用户故事: 作为网页用户,我希望能够在浏览器中直接运行游戏,以便无需安装额外软件即可游玩。

验收标准

  1. WHEN 用户在主流浏览器Chrome、Firefox、Safari、Edge中访问游戏网页 THEN 游戏系统 SHALL 成功加载并运行
  2. WHEN 游戏在网页中加载 THEN 游戏系统 SHALL 在 10 秒内完成初始化并显示游戏界面
  3. WHEN 游戏在不同分辨率的浏览器窗口中运行 THEN 游戏系统 SHALL 自动调整画面尺寸以适应窗口大小
  4. WHEN 用户调整浏览器窗口大小 THEN 游戏系统 SHALL 动态调整游戏画面比例保持可玩性
  5. WHEN 游戏在网页中运行 THEN 游戏系统 SHALL 保持稳定的帧率(至少 30 FPS

需求 7

用户故事: 作为项目开发者,我希望游戏架构预留手机端适配接口,以便后续能够实现跨端联动功能。

验收标准

  1. WHEN 游戏架构设计完成 THEN 游戏系统 SHALL 包含独立的输入处理模块以支持多种输入方式
  2. WHEN 游戏 UI 设计完成 THEN 游戏系统 SHALL 使用响应式布局以适应不同屏幕尺寸
  3. WHEN 游戏数据结构设计完成 THEN 游戏系统 SHALL 支持数据序列化和反序列化以便跨端数据同步
  4. WHEN 游戏网络模块设计完成 THEN 游戏系统 SHALL 预留网络通信接口以支持未来的跨端数据传输
  5. WHEN 游戏在移动设备浏览器中运行 THEN 游戏系统 SHALL 检测设备类型并应用相应的控制方案

需求 8

用户故事: 作为项目维护者,我希望项目代码结构清晰且文档完善,以便后续能够轻松扩展功能。

验收标准

  1. WHEN 项目文件组织完成 THEN 游戏系统 SHALL 按照功能模块划分目录结构场景、角色、UI、数据等
  2. WHEN 代码编写完成 THEN 游戏系统 SHALL 为关键函数和类添加注释说明其用途和参数
  3. WHEN 项目交付 THEN 游戏系统 SHALL 包含 README 文档说明项目结构、运行方法和扩展指南
  4. WHEN 新功能需要添加 THEN 游戏系统 SHALL 提供清晰的模块接口以便集成新组件
  5. WHEN 资源文件添加到项目 THEN 游戏系统 SHALL 按照资源类型(图像、音频、场景)组织文件路径

需求 9

用户故事: 作为游戏玩家,我希望我的角色和游戏进度能够被持久化保存,以便下次登录时能够继续游戏。

验收标准

  1. WHEN 玩家创建新角色 THEN 游戏系统 SHALL 将角色数据保存到服务器
  2. WHEN 玩家重新登录游戏 THEN 游戏系统 SHALL 从服务器读取并恢复该玩家的角色数据
  3. WHEN 游戏数据保存失败 THEN 游戏系统 SHALL 显示错误提示并保持当前游戏状态
  4. WHEN 玩家角色位置或状态改变 THEN 游戏系统 SHALL 定期将更新同步到服务器
  5. WHEN 游戏数据序列化 THEN 游戏系统 SHALL 使用 JSON 格式以便跨平台兼容

需求 10

用户故事: 作为游戏玩家,我希望游戏具有友好的用户界面,以便我能够轻松理解和使用各项功能。

验收标准

  1. WHEN 游戏启动 THEN 游戏系统 SHALL 显示登录界面,包含登录和创建角色选项
  2. WHEN 玩家与 UI 元素交互 THEN 游戏系统 SHALL 提供视觉反馈(如按钮高亮、点击效果)
  3. WHEN 游戏显示文本信息 THEN 游戏系统 SHALL 使用清晰可读的字体和适当的字号
  4. WHEN 游戏在移动设备上运行 THEN 游戏系统 SHALL 调整 UI 元素大小以适应触摸操作
  5. WHEN 玩家执行操作失败 THEN 游戏系统 SHALL 显示明确的错误提示信息

需求 11

用户故事: 作为游戏玩家,我希望能够看到其他在线玩家和离线角色,以便了解游戏世界中的其他参与者。

验收标准

  1. WHEN 玩家进入游戏场景 THEN 游戏系统 SHALL 显示所有当前在线玩家的角色
  2. WHEN 玩家进入游戏场景 THEN 游戏系统 SHALL 显示所有离线玩家的角色作为 NPC
  3. WHEN 其他玩家上线 THEN 游戏系统 SHALL 在场景中显示该玩家的角色并标记为在线状态
  4. WHEN 其他玩家下线 THEN 游戏系统 SHALL 将该玩家的角色转换为离线 NPC 状态
  5. WHEN 显示角色 THEN 游戏系统 SHALL 通过视觉标识区分在线玩家和离线角色

需求 12

用户故事: 作为游戏玩家,我希望能够与服务器保持连接,以便实现实时多人交互。

验收标准

  1. WHEN 玩家登录游戏 THEN 游戏系统 SHALL 建立与服务器的网络连接
  2. WHEN 网络连接建立 THEN 游戏系统 SHALL 在 5 秒内完成身份验证并加载角色数据
  3. WHEN 网络连接中断 THEN 游戏系统 SHALL 显示断线提示并尝试自动重连
  4. WHEN 玩家执行操作 THEN 游戏系统 SHALL 将操作数据发送到服务器并接收确认
  5. WHEN 服务器推送更新 THEN 游戏系统 SHALL 实时更新本地游戏状态