mirror of
http://junepve.top:3000/chicrobot/CINC.git
synced 2026-10-29 20:41:29 +08:00
9.6 KiB
9.6 KiB
CINC游戏项目产品需求文档
1. 产品概述
CINC是一款基于Phaser.js引擎开发的2D顶视角游戏,旨在提供简单而有趣的游戏体验,同时构建一个可扩展的游戏框架。
- 核心目标:创建一个轻量级、易扩展的游戏框架,支持基本的玩家控制、物品收集、NPC交互和游戏世界构建。
- 目标用户:休闲游戏玩家,尤其是喜欢2D顶视角游戏的用户,以及游戏开发者(作为学习和扩展的基础框架)。
- 产品价值:提供一个可定制的游戏框架,便于后续功能扩展和内容丰富,同时展示2D游戏开发的最佳实践。
2. 核心功能
2.1 玩家控制
功能描述:允许玩家通过键盘、鼠标和虚拟摇杆控制游戏角色。
具体需求:
- 支持键盘方向键或WASD键控制角色移动
- 支持鼠标点击选择角色
- 支持右键点击设置移动目标点
- 支持移动设备上的虚拟摇杆控制
- 角色移动平滑,有适当的动画效果
2.2 物品系统
功能描述:游戏世界中存在可收集的物品,玩家可以收集和使用这些物品。
具体需求:
- 随机生成物品(如小草、资源等)
- 角色可以接近并收集物品
- 物品收集后从游戏世界中移除并添加到背包
- 物品具有基本属性(名称、类型、描述等)
- 背包系统管理收集的物品
2.3 NPC系统
功能描述:游戏世界中存在非玩家角色(NPC),具有基本的AI行为。
具体需求:
- 随机生成NPC
- NPC具有不同的状态(待机、搜索、采集、受控)
- NPC能够自动搜索和收集物品
- NPC之间存在碰撞检测
- NPC与玩家之间的交互
2.4 游戏世界
功能描述:创建一个基本的游戏世界,包含地形、物理碰撞和环境交互。
具体需求:
- 基本的游戏地图和地形
- 物理碰撞检测(角色与角色、角色与环境)
- 游戏世界边界设置
- 相机跟随和小地图显示
- 响应式设计,适应不同屏幕尺寸
2.5 基本UI
功能描述:提供基本的游戏界面,显示游戏状态和信息。
具体需求:
- 角色状态指示器
- 简单的游戏菜单
- 基本的游戏信息显示
- 背包界面
- 物品列表菜单
2.6 多语言支持
功能描述:游戏支持多种语言,提供本地化界面。
具体需求:
- 语言切换功能
- 多语言文本支持
- 语言文件管理
2.7 技能系统
功能描述:角色可以使用各种技能,增强游戏玩法。
具体需求:
- 基本攻击技能
- 技能冷却和消耗
- 技能效果和动画
2.8 迷雾系统
功能描述:游戏世界中存在迷雾,增加探索元素。
具体需求:
- 迷雾覆盖未探索区域
- 角色探索后迷雾消除
- 迷雾效果和动画
3. 用户角色
| 角色 | 权限 | 职责 |
|---|---|---|
| 玩家 | 控制角色、收集物品、使用技能、与环境交互 | 体验游戏核心玩法 |
| NPC | 自动搜索、收集物品、与其他NPC交互、与玩家交互 | 丰富游戏世界,提供动态元素 |
4. 界面设计
4.1 游戏主界面
布局:
- 游戏画布:占据整个屏幕
- 角色指示器:显示角色状态和控制状态
- 小地图:显示游戏世界缩略图,位于屏幕右上角
- 虚拟摇杆:在移动设备上显示,位于屏幕左下角
- 菜单按钮:位于屏幕左上角,提供场景切换功能
风格:
- 像素艺术风格
- 简洁明了的界面元素
- 与游戏主题一致的色彩方案
- 响应式设计,适应不同屏幕尺寸
4.2 操作流程
- 游戏启动,加载主场景
- 玩家通过键盘、鼠标或虚拟摇杆控制角色移动
- 玩家通过鼠标点击选择角色
- 玩家通过右键点击设置移动目标点
- 角色自动移动到目标点
- 角色接近物品时自动收集
- 玩家打开背包查看和使用物品
- NPC自动搜索和收集物品
- 玩家使用技能与环境或NPC交互
5. 技术需求
5.1 技术栈
- 游戏引擎:Phaser.js (v3+)
- 开发语言:JavaScript (ES6+)
- 模块系统:ES6 Modules
- 物理引擎:Phaser内置Arcade物理引擎
- 渲染技术:WebGL/Canvas (自动选择)
5.2 性能要求
- 游戏在主流设备上运行流畅(60fps)
- 资源加载时间控制在3秒以内
- 内存占用合理,避免内存泄漏
- 支持至少50个单位同时在场景中活动
5.3 兼容性
- 支持主流浏览器(Chrome、Firefox、Safari、Edge)
- 响应式设计,适应不同屏幕尺寸
- 支持键盘、鼠标和触摸输入
- 支持桌面和移动设备
6. 核心流程
graph TD
A[游戏启动] --> B[加载配置和资源]
B --> C[初始化游戏场景]
C --> D[生成游戏世界]
D --> E[生成玩家角色]
D --> F[生成NPC]
D --> G[生成物品]
E --> H[玩家控制角色]
H --> I[移动角色]
H --> J[选择角色]
J --> K[设置移动目标]
K --> I
I --> L[收集物品]
L --> M[管理背包]
F --> N[NPC自动行为]
N --> O[搜索物品]
O --> P[移动到物品]
P --> Q[收集物品]
Q --> O
H --> R[使用技能]
R --> S[技能效果]
H --> T[打开菜单]
T --> U[切换场景]
7. 功能优先级
| 功能 | 优先级 | 描述 |
|---|---|---|
| 玩家移动控制 | P0 | 核心功能,必须实现 |
| 物品系统 | P1 | 基本的物品收集和背包功能 |
| NPC系统 | P1 | 基本的NPC行为和交互 |
| 游戏世界 | P1 | 基本的游戏地图和碰撞检测 |
| 基本UI | P2 | 简单的游戏界面和菜单 |
| 多语言支持 | P2 | 国际化支持 |
| 技能系统 | P3 | 增强游戏玩法 |
| 迷雾系统 | P3 | 增加探索元素 |
8. 验收标准
- 玩家控制:玩家能够通过键盘、鼠标和虚拟摇杆控制角色移动,移动平滑自然。
- 物品系统:游戏世界中随机生成物品,角色能够接近并收集物品,物品正确添加到背包。
- NPC系统:NPC能够自动搜索和收集物品,具有基本的AI行为,与玩家和其他NPC正确交互。
- 游戏世界:游戏世界包含基本的地形和物理碰撞,角色与环境能够正确交互,相机跟随和小地图正常工作。
- 基本UI:游戏界面显示角色状态和基本信息,菜单和背包界面正常工作,操作简单直观。
- 多语言支持:游戏能够切换不同语言,文本正确显示。
- 技能系统:角色能够使用技能,技能效果和动画正常显示。
- 迷雾系统:游戏世界中存在迷雾,角色探索后迷雾消除。
- 性能:游戏在主流设备上运行流畅,资源加载时间合理,内存占用稳定。
- 兼容性:游戏在主流浏览器上能够正常运行,适应不同屏幕尺寸和输入设备。
9. 风险与依赖
9.1 风险
- 技术风险:Phaser.js版本更新可能带来兼容性问题。
- 性能风险:在低配置设备上可能运行不流畅,特别是当场景中单位数量较多时。
- 扩展性风险:代码架构需要支持后续功能扩展,避免技术债务。
- 跨设备风险:不同设备和浏览器的兼容性问题。
9.2 依赖
- Phaser.js:游戏引擎核心依赖,版本3+。
- 浏览器:需要支持ES6+和WebGL/Canvas。
- 硬件:需要足够的CPU和GPU性能以支持游戏运行。
10. 版本规划
V1.0(MVP)
- 实现核心玩家控制功能(键盘、鼠标、虚拟摇杆)
- 实现基本的物品收集系统和背包管理
- 实现简单的NPC行为(搜索、收集)
- 搭建基本的游戏世界(地图、碰撞)
- 提供简单的游戏界面和菜单
V1.1
- 扩展物品系统,增加更多物品类型和属性
- 增强NPC行为,添加更多状态和交互
- 实现多语言支持
- 优化游戏性能和用户体验
V1.2
- 添加技能系统,实现基本攻击和特殊技能
- 实现迷雾系统,增加探索元素
- 添加更多游戏场景和关卡
- 增强UI和视觉效果
V1.3
- 实现更复杂的游戏机制(如合成、建造)
- 添加更多角色类型和职业
- 实现游戏存档和加载功能
- 优化多人游戏支持
11. 附录
11.1 名词定义
- Phaser.js:一款流行的HTML5游戏框架,用于创建2D游戏。
- Arcade物理引擎:Phaser内置的轻量级物理引擎,用于处理游戏中的碰撞和物理效果。
- NPC:非玩家角色,由游戏AI控制的角色。
- MVP:最小可行产品,包含核心功能的初始版本。
- ES6+:ECMAScript 6及以上版本的JavaScript标准。
- WebGL:一种基于OpenGL ES的Web图形API,用于在浏览器中渲染3D图形。
11.2 参考资料
- Phaser.js官方文档:https://phaser.io/docs
- JavaScript ES6+语法参考:https://developer.mozilla.org/en-US/docs/Web/JavaScript
- HTML5 Canvas API:https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API
- WebGL API:https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API
11.3 资源说明
- 图像资源:位于
assets/目录,包含角色、物品、UI等图像。 - 音频资源:位于
assets/Sounds/目录,包含游戏音效。 - 配置文件:位于
config/目录,包含游戏配置。 - 场景文件:位于
scenes/目录,包含游戏场景和测试场景。 - 系统文件:位于
systems/目录,包含输入、选择、命令等系统。 - UI文件:位于
ui/目录,包含虚拟摇杆、小地图等UI组件。 - 对象文件:位于
objects/目录,包含单位、物品等游戏对象。 - 语言文件:位于
lang/目录,包含多语言支持文件。