# Pixel Game Server 一个基于 NestJS 的 2D 像素风游戏后端服务 --- ## 🚨 开发者必读警告 **⚠️ 在开始任何开发工作之前,请务必阅读:[AI 辅助开发规范指南](./docs/AI辅助开发规范指南.md)** **📢 重要提醒:** - 🚫 **未阅读 AI 辅助指南的代码将无法通过审查** - 🤖 **学会使用 AI 助手可以让你的开发效率提升 300%** - 📝 **AI 可以帮你自动生成符合规范的代码和注释** - 🔍 **AI 可以实时检查你的代码质量** **👉 [立即阅读 AI 辅助开发指南](./docs/AI辅助开发规范指南.md)** --- ## 技术栈 - **NestJS** `^10.4.20` - 渐进式 Node.js 框架 - **TypeScript** `^5.9.3` - 类型安全 - **Socket.IO** - WebSocket 实时通信支持 - **RxJS** `^7.8.2` - 响应式编程库 - **Pino** `^10.1.0` - 高性能日志库 - **Jest** `^29.7.0` - 测试框架 ### 核心依赖 **生产环境:** - `@nestjs/common` `^10.4.20` - NestJS 核心功能 - `@nestjs/core` `^10.4.20` - NestJS 核心模块 - `@nestjs/config` `^4.0.2` - 配置管理 - `@nestjs/platform-express` `^10.4.20` - Express 平台适配器 - `@nestjs/websockets` `^10.4.20` - WebSocket 支持 - `@nestjs/platform-socket.io` `^10.4.20` - Socket.IO 适配器 - `nestjs-pino` `^4.5.0` - Pino 日志集成 - `pino` `^10.1.0` - 高性能日志库 - `reflect-metadata` `^0.1.14` - 装饰器元数据支持 - `rxjs` `^7.8.2` - 响应式编程 **开发环境:** - `@nestjs/cli` `^10.4.9` - NestJS 命令行工具 - `@nestjs/schematics` `^10.2.3` - NestJS 代码生成器 - `@nestjs/testing` `^10.4.20` - 测试工具 - `@types/jest` `^29.5.14` - Jest 类型定义 - `@types/node` `^20.19.26` - Node.js 类型定义 - `jest` `^29.7.0` - 测试框架 - `ts-jest` `^29.2.5` - TypeScript Jest 支持 - `ts-node` `^10.9.2` - TypeScript 运行时 - `typescript` `^5.9.3` - TypeScript 编译器 - `pino-pretty` `^13.1.3` - Pino 美化输出 ## 🚨 重要:开发前必读 ### ⚠️ 所有开发者必须先阅读 AI 辅助开发指南 **在开始任何开发工作之前,请务必阅读:[AI 辅助开发规范指南](./docs/AI辅助开发规范指南.md)** 这个指南将教你如何: - 🤖 使用 AI 助手遵循项目规范 - 📝 自动生成规范的代码和注释 - 🔍 实时检查代码质量 - 🚀 显著提高开发效率和代码质量 **不阅读此指南直接开发,代码审查将无法通过!** --- ## 开发规范 ### 命名规范 项目采用统一的命名规范,确保代码风格一致: - **文件/文件夹**:下划线分隔(如 `order_controller.ts`) - **变量/函数**:小驼峰命名(如 `userName`、`async queryUserInfo()`) - **类/构造函数**:大驼峰命名(如 `UserModel`、`OrderService`) - **常量**:全大写 + 下划线(如 `PORT`、`DB_HOST`) - **接口路由**:全小写 + 短横线(如 `/user/get-info`、`/order/create-order`) 详细规范请查看:[命名规范文档](./docs/naming_convention.md) ### Git 提交规范 项目采用约定式提交规范,提交信息格式:`<类型>:<简短描述>` **常用提交类型:** - `feat` - 新增功能 - `fix` - 修复 Bug - `docs` - 文档更新 - `style` - 代码格式调整 - `refactor` - 代码重构 - `perf` - 性能优化 - `test` - 测试相关 - `chore` - 构建/工具变动 **后端特定类型:** - `api` - API 接口 - `db` - 数据库 - `websocket` - WebSocket - `auth` - 认证授权 - `dto` - 数据传输对象 - `service` - 服务层 **核心原则:** - ⭐ 一次提交只做一件事 - 使用中文冒号 `:` - 简短明确(不超过 50 字符) - 能拆分就拆分,保持提交历史清晰 **示例:** ```bash git commit -m "feat:实现玩家注册和登录功能" git commit -m "fix:修复房间加入时的并发问题" git commit -m "api:添加玩家信息查询接口" ``` 详细规范请查看:[Git 提交规范文档](./docs/git_commit_guide.md) ### 后端开发规范 项目要求严格的代码质量和可维护性标准: **核心要求:** - **完整注释**:每个模块、类、方法都必须有详细注释 - **全面业务逻辑**:考虑所有可能情况,包括异常和边界条件 - **关键日志记录**:重要操作必须记录日志,便于问题排查 - **防御性编程**:对所有输入进行验证,实现健壮的错误处理 **注释要求:** ```typescript /** * 玩家服务类 * * 职责:处理玩家相关的业务逻辑 * 主要方法:createPlayer(), updatePlayerInfo(), getPlayerById() * 使用场景:玩家注册登录流程、个人陈列室数据管理 */ @Injectable() export class PlayerService { /** * 创建新玩家 * @param email 玩家邮箱地址 * @param nickname 玩家昵称 * @returns Promise 创建成功的玩家对象 * @throws BadRequestException 当邮箱格式错误时 */ async createPlayer(email: string, nickname: string): Promise { // 详细的业务逻辑实现... } } ``` 详细规范请查看:[后端开发规范指南](./docs/backend_development_guide.md) ## 📚 开发文档 ### 🔥 必读文档 - **[AI 辅助开发规范指南](./docs/AI辅助开发规范指南.md)** - 🚨 **所有开发者必读!** 教你如何使用 AI 遵循项目规范 ### 📋 规范文档 - [后端开发规范](./docs/backend_development_guide.md) - 注释标准、业务逻辑设计和日志记录要求 - [Git 提交规范](./docs/git_commit_guide.md) - Git 提交信息格式和最佳实践 - [命名规范](./docs/naming_convention.md) - 项目命名规范和最佳实践 - [NestJS 使用指南](./docs/nestjs_guide.md) - 详细的 NestJS 开发指南,包含实战案例 ### 💡 使用建议 1. **开发前**:先读 AI 辅助指南,了解如何用 AI 帮助遵循规范 2. **开发中**:参考具体规范文档,使用 AI 实时检查代码质量 3. **提交前**:用 AI 检查代码和提交信息是否符合规范 ## 前置要求 - **Node.js** >= 18.0.0 默认:24.7.0 - **pnpm** >= 8.0.0(推荐)默认:10.25.0 如果还没有安装 pnpm,请先安装: ```bash npm install -g pnpm ``` 检查版本: ```bash node --version pnpm --version ``` ## 安装依赖 ```bash pnpm install ``` ## 开发 启动开发服务器(支持热重载): ```bash pnpm dev ``` 服务器将运行在 `http://localhost:3000` ## 测试 运行测试: ```bash pnpm test ``` 运行测试并监听文件变化: ```bash pnpm test:watch ``` 运行测试并生成覆盖率报告: ```bash pnpm test:cov ``` ## 构建 ```bash pnpm build ``` ## 生产环境运行 ```bash pnpm start:prod ``` ## 项目结构 ``` src/ ├── api/ # API 接口层(控制器、网关) ├── business/ # 业务逻辑层 ├── core/ # 核心功能模块 │ ├── db/ # 数据库相关 │ └── utils/ # 工具函数 │ └── logger/ # 日志系统 ├── main.ts # 应用入口 ├── app.module.ts # 根模块 ├── app.controller.ts # 根控制器 └── app.service.ts # 根服务 test/ ├── api/ # API 测试 └── service/ # 服务测试 docs/ # 项目文档 ├── backend_development_guide.md # 后端开发规范 ├── git_commit_guide.md # Git 提交规范 ├── naming_convention.md # 命名规范 └── nestjs_guide.md # NestJS 使用指南 ``` ## 核心功能 ### 🔐 用户认证系统 完整的用户认证解决方案,支持多种登录方式和安全特性: - 用户名/邮箱/手机号登录 - GitHub OAuth 第三方登录 - 密码重置和修改功能 - bcrypt 密码加密 - 基于角色的权限控制 **详细文档**: [用户认证系统文档](./docs/systems/user-auth/README.md) ### 📊 日志系统 基于 Pino 的高性能日志系统,提供结构化日志记录: - 高性能日志记录 - 自动敏感信息过滤 - 多级别日志控制 - 请求上下文绑定 **详细文档**: [日志系统文档](./docs/systems/logger/README.md) **💡 提示:使用 [AI 辅助开发指南](./docs/AI辅助开发规范指南.md) 可以让 AI 帮你自动生成符合规范的代码!** ## 下一步 - 在 `src/api/` 目录下创建游戏相关的控制器和网关 - 在 `src/model/` 目录下定义游戏数据模型 - 在 `src/service/` 目录下实现游戏业务逻辑 - 使用 NestJS CLI 快速生成模块:`nest g module game` - 添加 WebSocket 网关实现实时游戏逻辑