王浩 b9182bbc2e docs:完善 CLAUDE.md 为 AI 开发规范文档
## 🎯 主要改进

### 1. 明确项目定位
- 清晰定义 "WhaleTown" 为 2D 俯视像素风 RPG
- 指定 Godot 4.2+ 引擎(禁止 3.x 语法)
- 强调分层架构:`_Core`(框架)、`Scenes`(玩法)、`UI`(界面)

### 2. 完善开发规范
-  添加 Input Map 配置(WASD、交互键、暂停键)
-  明确文件路径规则(STRICT LOWERCASE)
-  添加 EventNames.gd 示例代码
-  完善测试代码示例(GUT 框架)
-  优化代码模板(分区注释)

### 3. 强化技术约束
- 📋 严格类型系统(强制静态类型)
- 🏛 事件驱动架构(EventSystem 解耦)
- 🚫 禁止模式列表(yield、Linear Filter 等)
-  必须测试覆盖(所有 Core 管理器)

### 4. 代码模板改进
- 添加结构化注释(Exports、References、Lifecycle、Methods)
- 展示最佳实践(@onready、%UniqueName、私有方法前缀)
- 包含完整的玩家移动示例

### 5. AI 指令优化
- 直接对 AI 说话("Claude: Root folders MUST be lowercase")
- 明确的优先级(STRICT、The Law、MANDATORY)
- 提供决策指南(Area2D vs Body、Enum vs StateChart)

## 📊 文档结构
- 90 行,精炼完整
- Emoji 视觉层级(🛠 命令、📂 文件、📋 标准、🏛 架构)
- 覆盖:文件组织、编码标准、架构设计、测试要求、代码模板

##  质量提升
- 统一路径大小写(tests/ 而非 Tests/)
- 添加 EventNames.gd 完整示例
- 完善测试代码(watch_signals、assert_signal_emitted)
- 明确 Godot 版本约束(4.2+)

## 🎯 目标
为 AI 提供清晰、严格、可执行的开发规范,
确保代码质量和架构一致性。

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2025-12-31 16:32:54 +08:00
2025-12-25 23:14:29 +08:00

🐋 whaleTown

一个使用 Godot 4.5 引擎开发的现代化像素游戏项目集成了完整的用户认证系统和API接口。

🎮 项目信息

  • 引擎版本: Godot 4.5.1
  • 渲染器: Forward Plus
  • 项目类型: 2D 像素游戏
  • 架构模式: 模块化 + 事件驱动
  • 后端集成: RESTful API + 用户认证

🚀 快速开始

环境要求

运行项目

# 1. 克隆项目
git clone <repository-url>
cd whale-town

# 2. 使用Godot编辑器打开项目
# 3. 按F5运行或点击"运行"按钮

# 4. 测试API接口可选
python tests/api/simple_api_test.py

Web版本部署

# Windows用户
tools\build_web.bat      # 导出Web版本
tools\serve_web.bat      # 启动本地测试服务器

# Linux/macOS用户
./tools/build_web.sh     # 导出Web版本
./tools/serve_web.sh     # 启动本地测试服务器

详细部署指南请查看: Web部署完整指南

🏗️ 项目架构

核心设计理念

项目采用 分层架构组件化设计,遵循 Godot 最佳实践:

  • 清晰的分层 - 框架层、玩法层、界面层明确分离
  • 场景内聚 - 脚本紧邻场景文件,符合 Godot 原生开发习惯
  • 高度解耦 - 通过事件系统和管理器通信
  • 组件复用 - 可复用组件统一管理
  • 标准化 - 统一的命名规范和目录结构
  • 测试驱动 - 完整的测试体系和文档

目录结构

whaleTown/
├── _Core/                      # [框架层] 游戏的底层框架,单例,全局管理器
│   ├── managers/               # 游戏管理器
│   │   ├── GameManager.gd      # 游戏状态管理
│   │   ├── SceneManager.gd     # 场景管理
│   │   ├── NetworkManager.gd   # 网络通信
│   │   └── ResponseHandler.gd  # API响应处理
│   ├── systems/                # 核心系统
│   │   └── EventSystem.gd      # 事件系统
│   └── singletons/             # 其他单例(待扩展)
│
├── Scenes/                     # [玩法层] 具体的游戏场景、实体、地图
│   ├── Maps/                   # 地图场景
│   │   └── main_scene.tscn     # 主游戏场景
│   ├── Entities/               # 游戏实体
│   │   ├── Player/             # 玩家实体
│   │   ├── NPC/                # NPC实体
│   │   └── Interactables/      # 交互物
│   └── Components/             # 可复用组件
│
├── UI/                         # [界面层] 所有UI相关的预制体和逻辑
│   ├── HUD/                    # 抬头显示(常驻)
│   ├── Windows/                # 模态窗口
│   │   └── LoginWindow.tscn    # 登录窗口
│   ├── Dialog/                 # 对话系统
│   └── Theme/                  # 全局样式
│       ├── MainTheme.tres      # 主主题
│       └── Fonts/              # 字体文件
│
├── Assets/                     # [资源层] 美术、音频、字体
│   ├── Sprites/                # 精灵图
│   │   ├── icon/               # 图标
│   │   ├── materials/          # 材质
│   │   ├── shaders/            # 着色器
│   │   └── sprites/            # 精灵图
│   ├── Audio/                  # 音频
│   └── Fonts/                  # 字体
│
├── Config/                     # [配置层] 游戏配置文件
│   ├── game_config.json        # 游戏配置
│   └── zh_CN.json              # 中文本地化
│
├── Utils/                      # [工具层] 通用辅助脚本
│   └── StringUtils.gd          # 字符串工具
│
├── Tests/                      # [测试层] 单元测试脚本
│   ├── api/                    # API接口测试
│   ├── auth/                   # 认证UI测试
│   ├── unit/                   # 单元测试
│   ├── integration/            # 集成测试
│   └── performance/            # 性能测试
│
├── docs/                       # 项目文档
│   ├── auth/                   # 认证相关文档
│   ├── api-documentation.md    # API接口文档
│   ├── web_deployment_guide.md # Web部署完整指南
│   ├── web_deployment_changelog.md # Web部署更新日志
│   ├── project_structure.md    # 项目结构说明
│   ├── naming_convention.md    # 命名规范
│   ├── code_comment_guide.md   # 代码注释规范
│   └── git_commit_guide.md     # Git提交规范
│
├── tools/                      # 开发工具和脚本
│   ├── build_web.bat           # Windows Web导出脚本
│   ├── build_web.sh            # Linux/macOS Web导出脚本
│   ├── serve_web.bat           # Windows 本地服务器
│   └── serve_web.sh            # Linux/macOS 本地服务器
│
├── REFACTORING.md              # 项目结构重构文档
└── MIGRATION_COMPLETE.md       # 迁移完成标记

架构层次说明

1. 框架层 (_Core/)

  • 职责: 游戏的底层框架,与具体游戏逻辑无关
  • 内容: 单例管理器、核心系统
  • 特点: 自动加载,全局可访问
  • 命名: 使用下划线前缀 _Core 表示这是核心框架代码

2. 玩法层 (Scenes/)

  • 职责: 游戏世界,地图和实体
  • 内容: 游戏场景、角色、NPC、交互物
  • 特点: 场景内聚,脚本紧邻场景文件
  • 组织: 按游戏世界的实体类型分类

3. 界面层 (UI/)

  • 职责: 所有界面HUD和弹窗
  • 内容: 常驻界面、模态窗口、对话系统、主题样式
  • 特点: 独立于游戏场景便于UI开发和维护
  • 组织: 按界面类型和用途分类

4. 资源层 (Assets/)

  • 职责: 纯美术资源
  • 内容: 精灵图、音频、字体等
  • 特点: 与代码分离,便于美术组独立工作
  • 组织: 按资源类型分类

5. 配置层 (Config/)

  • 职责: 静态数据,策划可编辑
  • 内容: 游戏配置、本地化文件
  • 特点: 数据驱动,便于调整游戏参数
  • 格式: JSON 文件

6. 工具层 (Utils/)

  • 职责: 通用辅助脚本
  • 内容: 工具函数库
  • 特点: 可被任何层调用
  • 原则: 无依赖,纯函数

核心系统

项目包含以下自动加载的核心系统(位于 _Core/

  • GameManager - 全局游戏状态管理
  • SceneManager - 场景切换管理
  • EventSystem - 事件通信系统
  • NetworkManager - 网络通信管理
  • ResponseHandler - API响应处理

使用示例:

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

# 场景切换(已更新路径)
SceneManager.change_scene("main")  # → res://Scenes/Maps/main_scene.tscn

# 事件通信
EventSystem.emit_event("player_health_changed", 80)
EventSystem.connect_event("player_died", _on_player_died)

设计原则

1. 清晰的分层

  • _Core: 框架代码,与具体游戏逻辑无关
  • Scenes: 游戏世界,地图和实体
  • UI: 所有界面HUD和弹窗
  • Config: 静态数据,策划可编辑

2. 组件化设计

可复用组件放在 Scenes/Components/ 下,使用组合优于继承的设计模式:

  • InteractableArea.tscn - 让任何物体"可交互"
  • MovementSync.gd - 网络位置同步
  • NameTag3D.tscn - 头顶名字条

3. 场景内聚

  • 每个 .tscn 配套一个 .gd
  • 脚本紧邻场景文件存放
  • 符合 Godot 原生开发习惯

4. 职责单一

UI/Windows/     - 模态窗口(登录、设置、商店)
UI/HUD/         - 常驻界面(聊天框、状态栏)
UI/Dialog/      - 对话系统

团队协作

主要功能

🔐 用户认证系统

  • 用户注册 - 支持邮箱验证码验证
  • 用户登录 - 多种登录方式(用户名/邮箱/手机号)
  • 密码管理 - 密码重置和修改功能
  • GitHub OAuth - 第三方登录集成
  • 错误处理 - 完整的错误提示和频率限制
  • UI界面: UI/Windows/LoginWindow.tscn

🌐 Web版本部署

  • 自动化导出 - 一键导出Web版本
  • 本地测试服务器 - 内置HTTP服务器用于测试
  • 生产环境配置 - 完整的服务器配置指南
  • 跨平台支持 - Windows、Linux、macOS全平台支持
  • 性能优化 - 资源压缩和加载优化

🎮 游戏功能

🧪 测试体系

  • API测试 - 完整的接口测试脚本 (Tests/api/)
  • UI测试 - 认证界面的交互测试 (Tests/auth/)
  • 错误场景 - 边界条件和异常处理测试

🔧 开发规范

命名规范

  • 场景文件: snake_case_scene.tscn (如: auth_scene.tscn)
  • 脚本文件: PascalCase.gd (如: AuthScene.gd)
  • 节点名称: camelCase (如: loginButton)
  • 变量/函数: camelCase (如: playerHealth)
  • 常量: UPPER_CASE (如: MAX_HEALTH)
  • 资源文件: snake_case (如: bg_auth_scene.png)

代码注释规范

  • 文件头注释: 说明文件用途、主要功能和依赖关系
  • 函数注释: 包含参数说明、返回值和使用示例
  • 复杂逻辑: 添加行内注释解释业务逻辑和设计决策
  • 特殊标记: 使用 TODO、FIXME、NOTE 等标准标记
  • AI辅助: 支持AI补充注释提供详细的上下文信息

Git 提交规范

使用格式:<类型><描述>

常用类型:feat fix docs refactor scene asset ui test

git commit -m "feat实现用户登录功能"
git commit -m "fix修复429错误处理"
git commit -m "test添加API接口测试"
git commit -m "docs更新项目文档"

📚 项目文档

核心文档

API和测试文档

🛠️ 开发指南

添加新场景

  1. Scenes/ 对应分类下创建场景文件
  2. 脚本文件紧邻场景文件存放(场景内聚原则)
  3. _Core/managers/SceneManager.gd 中注册场景路径
  4. 使用 SceneManager.change_scene() 切换场景

示例:

# 在 SceneManager.gd 中注册
var scene_paths: Dictionary = {
    "battle": "res://Scenes/Maps/battle_scene.tscn",
    "shop": "res://UI/Windows/ShopWindow.tscn",
}

# 使用
SceneManager.change_scene("battle")

创建可复用组件

  1. Scenes/Components/ 创建组件场景
  2. 实现标准接口,保持组件独立性
  3. 通过 EventSystem 与其他模块通信
  4. 组件可以被任何场景实例化复用

添加UI界面

  1. 模态窗口 → 放入 UI/Windows/
  2. 常驻界面 → 放入 UI/HUD/
  3. 对话系统 → 放入 UI/Dialog/
  4. UI脚本紧邻场景文件保持内聚

资源管理

路径映射参考

功能类型 旧路径 新路径
核心管理器 core/managers/ _Core/managers/
游戏场景 scenes/main_scene.tscn Scenes/Maps/main_scene.tscn
登录界面 scenes/auth_scene.tscn UI/Windows/LoginWindow.tscn
配置文件 data/configs/ Config/
工具类 core/utils/ Utils/

详细的重构说明请查看:REFACTORING.md

API接口测试

项目提供了完整的Python测试脚本来验证API接口

# 快速测试API连通性
python tests/api/simple_api_test.py

# 完整的API功能测试
python tests/api/api_test.py --verbose

# 自定义服务器地址测试
python tests/api/simple_api_test.py https://your-api-server.com

测试脚本会验证:

  • 应用状态检查
  • 用户注册和登录功能
  • 邮箱验证码发送和验证
  • 错误处理和频率限制429错误
  • 管理员功能和权限控制
  • 用户状态管理
  • 安全功能测试

📖 查看 API测试文档 了解详细使用方法

认证UI测试

项目还提供了Godot内置的UI测试场景

  1. 在Godot编辑器中打开 tests/auth/auth_ui_test.tscn
  2. 运行场景进行交互式测试
  3. 测试各种错误场景和边界条件

📖 查看 认证UI测试文档 了解详细使用方法

🔧 技术栈

  • 游戏引擎: Godot 4.5.1
  • 脚本语言: GDScript
  • 架构模式: 模块化 + 事件驱动
  • 状态管理: 单例管理器模式
  • 通信机制: 全局事件系统
  • API集成: RESTful API + JSON
  • 测试框架: Python + Godot内置测试

🤝 贡献指南

  1. Fork 项目
  2. 创建功能分支 (git checkout -b feature/AmazingFeature)
  3. 遵循项目的命名规范和架构设计
  4. 添加相应的测试用例
  5. 更新相关文档
  6. 提交更改 (git commit -m 'feat添加某个功能')
  7. 推送到分支 (git push origin feature/AmazingFeature)
  8. 开启 Pull Request

贡献类型

  • 🐛 Bug修复
  • 新功能开发
  • 📚 文档改进
  • 🧪 测试用例
  • 🎨 UI/UX改进
  • 性能优化

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情


🎯 项目状态

  • 基础架构搭建完成
  • 项目结构重构完成2025-12-31
  • 用户认证系统完成
  • API接口集成完成
  • 测试体系建立完成
  • 文档体系完善
  • 🚧 游戏核心玩法开发中
  • 🚧 更多功能模块开发中

最后更新: 2025-12-31

重要更新: 项目已完成架构重构,采用新的分层结构。详见 REFACTORING.md

Description
No description provided
Readme 103 MiB
Languages
PLSQL 99.3%
GDScript 0.5%
Python 0.1%