Files
whale-town-front/docs/01-项目入门/项目结构说明.md
moyin 709242d223 docs:更新项目结构说明和路径配置
- 更新ProjectPaths.gd中的路径常量
- 更新项目结构说明文档
- 清理临时测试文件的uid引用

确保文档与实际项目结构保持一致
2026-01-02 21:20:31 +08:00

16 KiB
Raw Blame History

WhaleTown 项目结构说明

本文档详细说明了 WhaleTown 项目的文件结构设计,采用分层架构模式,确保团队协作高效且代码结构清晰。

🎯 设计理念

核心原则

  • 分层架构:框架层、游戏层、界面层明确分离
  • 团队协作:策划、美术、开发三类角色各司其职
  • 高度解耦:通过事件系统实现组件间通信
  • 组件复用:可复用组件统一管理
  • 标准化:统一的命名规范和目录结构

团队协作模式

  • 🎮 开发团队 - 主要工作在 _Core/scenes/UI/Utils/
  • 🎨 美术团队 - 主要工作在 assets/
  • 📋 策划团队 - 主要工作在 Config/

🏗️ 项目架构概览

WhaleTown/
├── 🔧 _Core/                   # [核心层] 功能实现与组件实现,项目最基本的底层实现
├── 🎬 scenes/                  # [场景层] 场景与视觉呈现,包含地图、人物等视觉部分
├── 🎨 assets/                  # [资源层] 静态资源存储,包括图片、音乐、视频、贴图等
├── ⚙️ Config/                  # [配置层] 配置文件管理,用于配置各类环境
├── 🧪 tests/                   # [测试层] 测试文件系统,放置所有组件的测试代码
├── 🌐 web_assets/              # [发布层] Web导出资源专门用于Web平台导出
└── 📚 docs/                    # [文档层] 项目文档

📁 详细目录结构

1. 🔧 核心层 (_Core/)

负责团队: 开发团队
职责: 功能实现与组件实现,项目最基本的底层实现

_Core/
├── managers/                   # 全局管理器
│   ├── GameManager.gd          # 游戏状态管理
│   ├── SceneManager.gd         # 场景切换管理
│   ├── NetworkManager.gd       # 网络通信管理
│   └── ResponseHandler.gd      # API响应处理
├── systems/                    # 核心系统
│   └── EventSystem.gd          # 全局事件系统
├── components/                 # 基础组件实现
│   ├── BaseCharacter.gd        # 基础角色组件
│   ├── BaseItem.gd             # 基础物品组件
│   └── BaseUI.gd               # 基础UI组件
├── utils/                      # 🔨 核心工具类
│   ├── StringUtils.gd          # 字符串处理工具
│   ├── MathUtils.gd            # 数学计算工具
│   └── PixelUtils.gd           # 像素风游戏专用工具
├── EventNames.gd               # 事件名称定义
└── ProjectPaths.gd             # 路径统一管理

特点:

  • 自动加载 (AutoLoad) 单例
  • 全局可访问的核心功能
  • 与具体游戏逻辑无关的底层实现
  • 提供基础服务和组件框架

使用示例:

# 游戏状态管理
GameManager.change_state(GameManager.GameState.IN_GAME)

# 场景切换
SceneManager.change_scene("main")

# 事件通信
EventSystem.emit_event("player_moved", {"position": Vector2(100, 200)})

2. 🎬 场景层 (scenes/)

负责团队: 开发团队
职责: 场景与视觉呈现,包含地图场景、人物场景等一系列视觉呈现的部分

scenes/
├── MainScene.tscn              # 🎯 主入口场景 - 所有图像显示的入口文件
├── MainScene.gd                # 主场景控制器脚本
├── maps/                       # 地图场景
│   ├── main_world.tscn         # 主世界地图
│   ├── dungeon_01.tscn         # 地牢场景
│   └── town_center.tscn        # 城镇中心
├── characters/                 # 人物场景
│   ├── player/                 # 玩家角色
│   │   ├── Player.tscn         # 玩家场景
│   │   └── Player.gd           # 玩家脚本
│   ├── npcs/                   # NPC角色
│   └── enemies/                # 敌人角色
├── ui/                         # UI界面场景
│   ├── menus/                  # 菜单界面
│   ├── hud/                    # 游戏HUD
│   └── dialogs/                # 对话框
├── effects/                    # 特效场景
│   ├── particles/              # 粒子效果
│   └── animations/             # 动画效果
└── prefabs/                    # 预制体组件
    ├── items/                  # 物品预制体
    └── interactive/            # 交互对象预制体

设计原则:

  • 场景内聚: 脚本紧邻场景文件存放
  • 分类明确: 按功能类型地图、人物、UI、特效分类
  • 模块化: 可复用的预制体统一管理
  • 视觉导向: 主要负责游戏的视觉呈现和UI实现

3. 🎨 资源层 (assets/)

负责团队: 美术团队
职责: 所有静态资源的存储,包括图片、音乐、视频、贴图等素材

assets/
├── sprites/                    # 精灵图片资源
│   ├── characters/             # 角色精灵玩家、NPC、敌人
│   ├── environment/            # 环境精灵(地形、建筑、装饰)
│   ├── items/                  # 物品精灵(道具、装备、收集品)
│   ├── effects/                # 特效精灵(爆炸、魔法、粒子)
│   └── ui/                     # UI精灵按钮、图标、边框
├── audio/                      # 音频资源
│   ├── music/                  # 背景音乐BGM
│   ├── sounds/                 # 音效SFX
│   └── voice/                  # 语音(对话、旁白)
├── fonts/                      # 字体文件
│   ├── pixel_fonts/            # 像素风字体
│   └── ui_fonts/               # UI专用字体
├── materials/                  # 材质资源
│   ├── pixel_materials/        # 像素风材质
│   └── shader_materials/       # 着色器材质
├── shaders/                    # 着色器文件
│   ├── pixel_shaders/          # 像素风着色器
│   └── effect_shaders/         # 特效着色器
├── ui/                         # UI专用资源
│   ├── themes/                 # UI主题
│   ├── icons/                  # 图标资源
│   └── backgrounds/            # 背景图片
└── icon/                       # 应用图标
    ├── icon.svg                # 矢量图标
    └── icon.png                # 位图图标

像素风游戏资源特点:

  • 像素完美: 所有精灵使用像素完美设置Filter: Off, Mipmaps: Off
  • 统一风格: 保持一致的像素密度和调色板
  • 分辨率标准: 建议使用16x16、32x32等标准像素尺寸
  • 动画帧: 角色动画使用精灵表Sprite Sheet组织

4. ⚙️ 配置层 (Config/)

负责团队: 策划团队
职责: 配置文件管理,主要用来配置各类环境

Config/
├── game_config.json            # 游戏主配置
├── zh_CN.json                  # 中文本地化
├── environment/                # 环境配置
│   ├── development.json        # 开发环境配置
│   ├── testing.json            # 测试环境配置
│   └── production.json         # 生产环境配置
├── gameplay/                   # 游戏玩法配置
│   ├── character_stats.json    # 角色属性配置
│   ├── item_database.json      # 物品数据库
│   └── level_config.json       # 关卡配置
└── localization/               # 本地化配置
    ├── en_US.json              # 英文本地化
    ├── zh_CN.json              # 中文本地化
    └── ja_JP.json              # 日文本地化

配置文件特点:

  • 环境分离: 开发、测试、生产环境配置分离
  • 数据驱动: 游戏数值通过配置文件控制
  • 本地化支持: 多语言文本管理
  • 热更新: 支持运行时配置更新

5. 🧪 测试层 (tests/)

负责团队: 开发团队
职责: 测试文件系统,放置所有对应组件的测试代码,方便快速进行功能性与性能测试

tests/
├── unit/                       # 单元测试
│   ├── core/                   # 核心组件测试
│   ├── characters/             # 角色组件测试
│   └── systems/                # 系统功能测试
├── integration/                # 集成测试
│   ├── scene_transitions/      # 场景切换测试
│   ├── save_load/              # 存档系统测试
│   └── network/                # 网络功能测试
├── performance/                # 性能测试
│   ├── framerate/              # 帧率测试
│   ├── memory/                 # 内存使用测试
│   └── loading_times/          # 加载时间测试
├── api/                        # API接口测试
│   ├── auth_tests.py           # 认证接口测试
│   └── game_api_tests.py       # 游戏API测试
└── ui/                         # UI功能测试
    ├── menu_tests/             # 菜单测试
    └── dialog_tests/           # 对话框测试

测试类型说明:

  • 单元测试: 测试单个组件的功能正确性
  • 集成测试: 测试组件间的交互和协作
  • 性能测试: 监控游戏性能指标,确保流畅运行
  • API测试: 验证网络接口的正确性和稳定性
  • UI测试: 测试用户界面的交互和响应

6. 🌐 Web导出层 (web_assets/)

负责团队: 自动生成
职责: Web导出资源专门用于Web平台导出的相关资源和配置文件

web_assets/
├── html/                       # HTML模板文件
│   ├── index.html              # Web版本入口页面
│   └── loading.html            # 加载页面模板
├── css/                        # 样式文件
│   ├── game.css                # 游戏样式
│   └── loading.css             # 加载样式
├── js/                         # JavaScript脚本
│   ├── game_loader.js          # 游戏加载器
│   └── utils.js                # 工具函数
├── icons/                      # Web应用图标
│   ├── favicon.ico             # 网站图标
│   └── app_icons/              # PWA应用图标
└── config/                     # Web配置文件
    ├── manifest.json           # PWA清单文件
    └── service-worker.js       # 服务工作者

Web导出特点:

  • PWA支持: 支持渐进式Web应用功能
  • 响应式设计: 适配不同屏幕尺寸
  • 加载优化: 优化资源加载和缓存策略
  • 跨平台兼容: 确保在各种浏览器中正常运行

7. 📚 文档层 (docs/)

负责团队: 全体团队
职责: 项目文档和开发指南

docs/
├── 01-项目入门/                # 新人必读文档
├── 02-开发规范/                # 编码标准文档
├── 03-技术实现/                # 开发指导文档
├── 04-高级开发/                # 进阶技巧文档
├── 05-部署运维/                # 发布部署文档
├── 06-功能模块/                # 功能文档
└── AI_docs/                    # 🤖 AI专用文档
    ├── README.md               # AI文档总览
    ├── architecture_guide.md   # 架构执行指南
    ├── coding_standards.md     # 代码风格规范
    ├── templates/              # 代码模板库
    │   ├── components.md       # 组件模板集合
    │   ├── managers.md         # 管理器模板集合
    │   └── ui_templates.md     # UI模板集合
    ├── workflows/              # 工作流程指南
    │   ├── feature_development.md # 功能开发流程
    │   ├── bug_fixing.md       # Bug修复流程
    │   └── testing_workflow.md # 测试执行流程
    └── quick_reference/        # 快速参考手册
        ├── code_snippets.md    # 常用代码片段
        ├── api_reference.md    # API快速参考
        └── troubleshooting.md  # 故障排除指南

AI_docs特点:

  • 结构化执行: 每个文档都包含可直接执行的步骤和代码模板
  • 标准化规范: 为AI编程助手提供统一的开发标准和最佳实践
  • 模板驱动: 提供完整的代码模板,确保代码一致性和质量
  • 工作流导向: 包含详细的开发工作流程提升AI协作效率
docs/
├── 01-项目入门/                # 新人必读
├── 02-开发规范/                # 编码标准
├── 03-技术实现/                # 开发指导
├── 04-高级开发/                # 进阶技巧
├── 05-部署运维/                # 发布部署
└── 06-功能模块/                # 功能文档

🤝 团队协作指南

开发团队 🎮

主要工作区域: _Core/, scenes/, tests/

日常工作流程:

  1. _Core/ 中开发核心系统、管理器、基础组件和工具类
  2. scenes/ 中创建游戏场景、角色、UI界面和特效
  3. tests/ 中编写各类测试用例确保代码质量

协作要点:

  • 遵循架构设计原则,使用事件系统进行模块通信
  • 保持代码模块化和可复用性
  • 将通用工具类放在 _Core/utils/ 中统一管理
  • 针对像素风游戏特点优化性能
  • 及时编写测试和文档

美术团队 🎨

主要工作区域: assets/

日常工作流程:

  1. 按分类整理美术资源到 assets/ 对应目录
  2. 确保像素艺术风格的一致性和像素完美
  3. 配置正确的Godot导入设置关闭过滤、禁用Mipmaps
  4. 与开发团队协作调整UI和游戏资源

像素风游戏特殊要求:

  • 严格遵循像素完美原则
  • 保持统一的像素密度和调色板
  • 使用标准像素尺寸16x16、32x32等
  • 精灵动画使用精灵表组织

策划团队 📋

主要工作区域: 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, Mipmaps: Off)
  • 保持统一的像素密度和调色板
  • 使用标准像素尺寸16x16、32x32、64x64等
  • 及时清理不使用的资源文件

代码组织规范

  • 脚本文件与场景文件放在同一目录
  • 使用事件系统实现模块间通信,避免直接引用
  • 保持单一职责原则,避免过度耦合
  • 针对像素风游戏优化性能(避免浮点数位置、使用整数坐标)
  • 及时编写注释和文档

像素风游戏特殊规范

  • 像素完美: 确保所有精灵在整数坐标上渲染
  • 统一风格: 保持一致的像素密度和艺术风格
  • 性能优化: 使用对象池管理频繁创建销毁的对象
  • 分辨率适配: 使用像素完美的缩放方式适配不同分辨率

记住:良好的项目结构是团队协作成功的基础!