forked from datawhale/whale-town-end
163 lines
4.1 KiB
Markdown
163 lines
4.1 KiB
Markdown
# 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 网关实现实时游戏逻辑
|