Files
whale-town-front/docs/01-项目入门/项目结构说明.md
moyin 6f545b04e9 docs: 更新项目结构说明,匹配实际项目结构
主要更新:
- 根据实际项目目录结构重写文档
- 明确三类团队协作模式:开发、美术、策划
- 详细说明每个目录的职责和使用方式
- 添加团队协作指南和工作流程
- 提供实际的代码示例和配置示例

 新增内容:
- 团队协作模式说明 (开发/美术/策划)
- 详细的目录结构和文件说明
- 开发工作流和版本发布流程
- 最佳实践和规范要求

 确保准确性:
- 所有目录结构都基于实际项目检查
- 文件路径和命名完全匹配当前状态
- 团队职责划分清晰明确
2025-12-31 18:08:31 +08:00

334 lines
10 KiB
Markdown

# WhaleTown 项目结构说明
本文档详细说明了 WhaleTown 项目的文件结构设计,采用分层架构模式,确保团队协作高效且代码结构清晰。
## 🎯 设计理念
### 核心原则
- **分层架构**:框架层、游戏层、界面层明确分离
- **团队协作**:策划、美术、开发三类角色各司其职
- **高度解耦**:通过事件系统实现组件间通信
- **组件复用**:可复用组件统一管理
- **标准化**:统一的命名规范和目录结构
### 团队协作模式
- **🎮 开发团队** - 主要工作在 `_Core/``scenes/``UI/``Utils/`
- **🎨 美术团队** - 主要工作在 `assets/`
- **📋 策划团队** - 主要工作在 `Config/`
## 🏗️ 项目架构概览
```
WhaleTown/
├── 🔧 _Core/ # [框架层] 核心系统和管理器
├── 🎬 scenes/ # [游戏层] 游戏场景和组件
├── 🎨 UI/ # [界面层] 用户界面
├── 🖼️ assets/ # [资源层] 美术资源
├── ⚙️ Config/ # [配置层] 游戏配置和数据
├── 🛠️ Utils/ # [工具层] 通用工具脚本
├── 🧪 tests/ # [测试层] 测试文件
├── 🚀 tools/ # [构建层] 构建和部署工具
├── 🌐 web_assets/ # [发布层] Web版本资源
└── 📚 docs/ # [文档层] 项目文档
```
---
## 📁 详细目录结构
### 1. 🔧 框架层 (_Core/)
> **负责团队**: 开发团队
> **职责**: 游戏底层框架,全局管理器和核心系统
```
_Core/
├── managers/ # 全局管理器
│ ├── GameManager.gd # 游戏状态管理
│ ├── SceneManager.gd # 场景切换管理
│ ├── NetworkManager.gd # 网络通信管理
│ └── ResponseHandler.gd # API响应处理
└── systems/ # 核心系统
└── EventSystem.gd # 全局事件系统
```
**特点**:
- 自动加载 (AutoLoad) 单例
- 全局可访问
- 与具体游戏逻辑无关
- 提供基础服务
**使用示例**:
```gdscript
# 游戏状态管理
GameManager.change_state(GameManager.GameState.IN_GAME)
# 场景切换
SceneManager.change_scene("main")
# 事件通信
EventSystem.emit_event("player_moved", {"position": Vector2(100, 200)})
```
### 2. 🎬 游戏层 (scenes/)
> **负责团队**: 开发团队
> **职责**: 游戏场景、实体和可复用组件
```
scenes/
├── Maps/ # 游戏地图场景
│ ├── main_scene.tscn # 主游戏场景
│ └── MainScene.gd # 主场景脚本
└── Components/ # 可复用组件
├── characters/ # 角色组件
├── effects/ # 特效组件
├── items/ # 物品组件
└── ui/ # UI组件
```
**设计原则**:
- **场景内聚**: 脚本紧邻场景文件存放
- **组件化**: 可复用组件统一管理
- **模块化**: 按功能类型分类组织
### 3. 🎨 界面层 (UI/)
> **负责团队**: 开发团队 + 美术团队协作
> **职责**: 用户界面和主题管理
```
UI/
├── Windows/ # 模态窗口
│ ├── LoginWindow.tscn # 登录窗口
│ └── AuthScene.gd # 认证场景脚本
└── Theme/ # 全局主题
├── MainTheme.tres # 主题资源
└── Fonts/ # 字体文件
└── msyh.ttc # 微软雅黑字体
```
**组织方式**:
- **Windows/**: 模态窗口和对话框
- **Theme/**: 统一的UI主题和样式
- **Fonts/**: 字体资源管理
### 4. 🖼️ 资源层 (assets/)
> **负责团队**: 美术团队
> **职责**: 所有美术资源和素材
```
assets/
├── sprites/ # 精灵图资源
│ ├── characters/ # 角色精灵
│ ├── effects/ # 特效精灵
│ ├── environment/ # 环境精灵
│ └── icon/ # 图标资源
├── audio/ # 音频资源
│ ├── music/ # 背景音乐
│ ├── sounds/ # 音效
│ └── voice/ # 语音
├── ui/ # UI专用资源
│ ├── auth/ # 认证界面资源
│ │ ├── bg_auth_scene.png # 认证背景
│ │ └── login_frame_smart_transparent.png
│ ├── chinese_theme.tres # 中文主题
│ └── datawhale_logo.png # 项目Logo
├── fonts/ # 字体文件
├── materials/ # 材质资源
└── shaders/ # 着色器
```
**美术团队工作流程**:
1. 按分类将资源放入对应目录
2. 遵循命名规范 (snake_case)
3. 确保资源格式符合Godot要求
4. 配置正确的导入设置 (像素艺术使用最近邻过滤)
### 5. ⚙️ 配置层 (Config/)
> **负责团队**: 策划团队
> **职责**: 游戏配置、数据和本地化
```
Config/
├── game_config.json # 游戏主配置
└── zh_CN.json # 中文本地化
```
**策划团队工作内容**:
- **游戏数值配置**: 角色属性、物品数据、关卡参数
- **本地化文本**: 多语言文本翻译和管理
- **游戏平衡**: 数值平衡和游戏性调整
**配置文件示例**:
```json
// game_config.json
{
"player": {
"move_speed": 200.0,
"max_health": 100,
"jump_height": 400.0
},
"game": {
"target_fps": 60,
"auto_save_interval": 300
}
}
```
### 6. 🛠️ 工具层 (Utils/)
> **负责团队**: 开发团队
> **职责**: 通用工具和辅助脚本
```
Utils/
└── StringUtils.gd # 字符串处理工具
```
**特点**:
- 纯函数,无依赖
- 可被任何层调用
- 提供通用功能
### 7. 🧪 测试层 (tests/)
> **负责团队**: 开发团队
> **职责**: 质量保证和自动化测试
```
tests/
├── api/ # API接口测试
├── auth/ # 认证功能测试
├── unit/ # 单元测试
├── integration/ # 集成测试
└── performance/ # 性能测试
```
### 8. 🚀 构建层 (tools/)
> **负责团队**: 开发团队/DevOps
> **职责**: 构建脚本和部署工具
```
tools/
├── build_web.bat # Windows Web构建脚本
├── build_web.sh # Linux/macOS Web构建脚本
├── serve_web.bat # Windows 本地服务器
├── serve_web.sh # Linux/macOS 本地服务器
└── README.md # 工具使用说明
```
### 9. 🌐 发布层 (web_assets/)
> **负责团队**: 自动生成
> **职责**: Web版本发布资源
```
web_assets/
├── index.html # Web版本入口
├── index.js # Godot Web导出JS
├── index.wasm # WebAssembly文件
├── index.pck # 游戏资源包
└── [其他Web资源] # 图标、配置等
```
### 10. 📚 文档层 (docs/)
> **负责团队**: 全体团队
> **职责**: 项目文档和开发指南
```
docs/
├── 01-项目入门/ # 新人必读
├── 02-开发规范/ # 编码标准
├── 03-技术实现/ # 开发指导
├── 04-高级开发/ # 进阶技巧
├── 05-部署运维/ # 发布部署
└── 06-功能模块/ # 功能文档
```
---
## 🤝 团队协作指南
### 开发团队 🎮
**主要工作区域**: `_Core/`, `scenes/`, `UI/`, `Utils/`, `tests/`
**日常工作流程**:
1.`_Core/` 中开发核心系统和管理器
2.`scenes/` 中创建游戏场景和组件
3.`UI/` 中实现用户界面
4.`Utils/` 中编写通用工具
5.`tests/` 中编写测试用例
**协作要点**:
- 遵循架构设计原则,使用事件系统通信
- 保持代码模块化和可复用性
- 及时编写测试和文档
### 美术团队 🎨
**主要工作区域**: `assets/`
**日常工作流程**:
1. 按分类整理美术资源到 `assets/` 对应目录
2. 遵循命名规范,使用 snake_case 命名
3. 配置正确的Godot导入设置
4. 与开发团队协作调整UI资源
**协作要点**:
- 严格按照目录结构组织资源
- 确保资源格式和质量符合要求
- 及时与开发团队沟通资源需求
### 策划团队 📋
**主要工作区域**: `Config/`
**日常工作流程**:
1.`Config/` 中维护游戏配置文件
2. 管理游戏数值和平衡性调整
3. 负责本地化文本的翻译和维护
4. 与开发团队协作实现游戏功能
**协作要点**:
- 使用JSON格式编写配置文件
- 保持配置文件的结构清晰
- 及时更新本地化文本
---
## 🔄 开发工作流
### 新功能开发流程
1. **需求分析** - 明确功能需求和设计方案
2. **架构设计** - 确定涉及的模块和接口
3. **资源准备** - 美术团队准备相关资源
4. **配置设置** - 策划团队配置相关数据
5. **代码实现** - 开发团队实现功能逻辑
6. **测试验证** - 编写测试用例验证功能
7. **文档更新** - 更新相关文档说明
### 版本发布流程
1. **功能完成** - 所有计划功能开发完成
2. **测试通过** - 所有测试用例通过
3. **资源整理** - 美术资源整理完成
4. **配置确认** - 策划配置确认无误
5. **构建发布** - 使用 `tools/` 中的脚本构建
6. **部署上线** - 部署到目标环境
---
## 📋 最佳实践
### 目录命名规范
- **文件夹**: 使用 PascalCase (如: `Config/`, `Utils/`)
- **文件**: 使用 snake_case (如: `main_scene.tscn`, `game_config.json`)
- **脚本类**: 使用 PascalCase (如: `GameManager.gd`)
### 资源管理规范
- 所有资源必须放在 `assets/` 对应分类目录下
- 使用描述性的文件名,避免使用数字编号
- 像素艺术资源必须关闭过滤 (Filter: Off)
- 及时清理不使用的资源文件
### 代码组织规范
- 脚本文件与场景文件放在同一目录
- 使用事件系统实现模块间通信
- 保持单一职责原则,避免过度耦合
- 及时编写注释和文档
---
**记住:良好的项目结构是团队协作成功的基础!**