Files
whale-town-end/README.md

180 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
- **pnpm** >= 8.0.0(推荐)
如果还没有安装 pnpm请先安装
```bash
npm install -g pnpm
```
检查版本:
```bash
node --version
pnpm --version
```
## 安装依赖
```bash
pnpm install
```
**注意**首次安装时pnpm 可能会提示需要批准构建脚本。这是 pnpm 的安全特性,用于防止恶意脚本执行。
如果看到以下警告:
```
Warning: Ignored build scripts: @nestjs/core.
Run "pnpm approve-builds" to pick which dependencies should be allowed to run scripts.
```
请运行以下命令批准 NestJS 的构建脚本:
```bash
pnpm approve-builds
```
然后选择批准 `@nestjs/core` 和其他 NestJS 相关包的构建脚本。
## 开发
启动开发服务器(支持热重载):
```bash
pnpm dev
```
服务器将运行在 `http://localhost:3000`
## 构建
```bash
pnpm build
```
## 生产环境运行
```bash
pnpm 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 网关实现实时游戏逻辑