Files

278 lines
9.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 操作流程
1. 游戏启动,加载主场景
2. 玩家通过键盘、鼠标或虚拟摇杆控制角色移动
3. 玩家通过鼠标点击选择角色
4. 玩家通过右键点击设置移动目标点
5. 角色自动移动到目标点
6. 角色接近物品时自动收集
7. 玩家打开背包查看和使用物品
8. NPC自动搜索和收集物品
9. 玩家使用技能与环境或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. 核心流程
```mermaid
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. 验收标准
1. **玩家控制**:玩家能够通过键盘、鼠标和虚拟摇杆控制角色移动,移动平滑自然。
2. **物品系统**:游戏世界中随机生成物品,角色能够接近并收集物品,物品正确添加到背包。
3. **NPC系统**:NPC能够自动搜索和收集物品,具有基本的AI行为,与玩家和其他NPC正确交互。
4. **游戏世界**:游戏世界包含基本的地形和物理碰撞,角色与环境能够正确交互,相机跟随和小地图正常工作。
5. **基本UI**:游戏界面显示角色状态和基本信息,菜单和背包界面正常工作,操作简单直观。
6. **多语言支持**:游戏能够切换不同语言,文本正确显示。
7. **技能系统**:角色能够使用技能,技能效果和动画正常显示。
8. **迷雾系统**:游戏世界中存在迷雾,角色探索后迷雾消除。
9. **性能**:游戏在主流设备上运行流畅,资源加载时间合理,内存占用稳定。
10. **兼容性**:游戏在主流浏览器上能够正常运行,适应不同屏幕尺寸和输入设备。
## 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/`目录,包含多语言支持文件。