# Pixel Game Server 一个基于 NestJS 的 2D 像素风游戏后端服务 ## 技术栈 - **NestJS** `^10.0.0` - 渐进式 Node.js 框架 - **TypeScript** `^5.3.0` - 类型安全 - **Socket.IO** - WebSocket 实时通信支持 - **RxJS** `^7.8.1` - 响应式编程库 ### 核心依赖 **生产环境:** - `@nestjs/common` `^10.0.0` - NestJS 核心功能 - `@nestjs/core` `^10.0.0` - NestJS 核心模块 - `@nestjs/platform-express` `^10.0.0` - Express 平台适配器 - `@nestjs/websockets` `^10.0.0` - WebSocket 支持 - `@nestjs/platform-socket.io` `^10.0.0` - Socket.IO 适配器 - `reflect-metadata` `^0.1.13` - 装饰器元数据支持 - `rxjs` `^7.8.1` - 响应式编程 **开发环境:** - `@nestjs/cli` `^10.0.0` - NestJS 命令行工具 - `@nestjs/schematics` `^10.0.0` - NestJS 代码生成器 - `@types/node` `^20.0.0` - Node.js 类型定义 - `ts-node` `^10.9.0` - TypeScript 运行时 - `typescript` `^5.3.0` - TypeScript 编译器 ## 开发规范 ### 命名规范 项目采用统一的命名规范,确保代码风格一致: - **文件/文件夹**:下划线分隔(如 `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) ## 文档 - [NestJS 使用指南](./docs/nestjs_guide.md) - 详细的 NestJS 开发指南,包含实战案例 - [命名规范](./docs/naming_convention.md) - 项目命名规范和最佳实践 - [Git 提交规范](./docs/git_commit_guide.md) - Git 提交信息格式和最佳实践 ## 前置要求 - **Node.js** >= 18.0.0 - **Yarn** >= 1.22.0(推荐)或 npm >= 9.0.0 如果还没有安装 Yarn,请先安装: ```bash npm install -g yarn ``` 检查版本: ```bash node --version yarn --version ``` ## 安装依赖 ```bash yarn install ``` ## 开发 启动开发服务器(支持热重载): ```bash yarn dev ``` 服务器将运行在 `http://localhost:3000` ## 构建 ```bash yarn build ``` ## 生产环境运行 ```bash yarn start:prod ``` ## 项目结构 ``` src/ ├── api/ # API 接口层(控制器、网关) ├── config/ # 配置文件 ├── data/ # 数据访问层(数据库、缓存) ├── model/ # 数据模型、实体、DTO ├── service/ # 业务逻辑层 ├── utils/ # 工具函数 ├── main.ts # 应用入口 ├── app.module.ts # 根模块 ├── app.controller.ts # 根控制器 └── app.service.ts # 根服务 test/ ├── api/ # API 测试 └── service/ # 服务测试 ``` ## 下一步 - 在 `src/api/` 目录下创建游戏相关的控制器和网关 - 在 `src/model/` 目录下定义游戏数据模型 - 在 `src/service/` 目录下实现游戏业务逻辑 - 使用 NestJS CLI 快速生成模块:`nest g module game` - 添加 WebSocket 网关实现实时游戏逻辑