253 行
8.7 KiB
Markdown
253 行
8.7 KiB
Markdown
|
|
# 规范-项目目录与编码标准
|
|||
|
|
|
|||
|
|
> **位置**: `docs/开发规范/规范-项目目录与编码标准.md`
|
|||
|
|
> **版本**: v1.0
|
|||
|
|
> **日期**: 2026-07-08
|
|||
|
|
> **关联**: AGENTS.md
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 1. 项目目录结构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
lawless/
|
|||
|
|
├── docs/ # 📁 全部文档
|
|||
|
|
│ ├── 设计文档/ (GDD) # 游戏设计文档 — 策划产出
|
|||
|
|
│ ├── 需求文档/ (PRD) # 产品需求文档 — 产品产出
|
|||
|
|
│ ├── 技术文档/ (TDD) # 技术设计文档 — 技术产出
|
|||
|
|
│ ├── 开发规范/ # 本目录
|
|||
|
|
│ ├── 美术文档/ # UI规范、原画需求、动效说明
|
|||
|
|
│ ├── 运营文档/ # 活动策划、数据分析、GM手册
|
|||
|
|
│ └── 协议文档/ # API/Protobuf/OpenAPI
|
|||
|
|
│
|
|||
|
|
├── client/ # 📁 客户端(Cocos Creator 3.8.8)
|
|||
|
|
│ ├── assets/
|
|||
|
|
│ │ ├── scripts/ # TypeScript 脚本
|
|||
|
|
│ │ │ ├── data/ # 数据模型/配置表/常量
|
|||
|
|
│ │ │ ├── systems/ # 核心系统(能量/时间/网络/战斗)
|
|||
|
|
│ │ │ ├── app/ # 应用状态/业务逻辑
|
|||
|
|
│ │ │ ├── ui/ # UI 组件
|
|||
|
|
│ │ │ │ ├── scenes/ # 场景控制器(登录/选角/主界面)
|
|||
|
|
│ │ │ │ ├── screens/ # 功能界面(战斗/背包/设置)
|
|||
|
|
│ │ │ │ ├── components/ # 可复用 UI 组件
|
|||
|
|
│ │ │ │ └── common/ # UI 工具类(SceneUI 等)
|
|||
|
|
│ │ │ └── GameManager.ts # 游戏主管理器
|
|||
|
|
│ │ ├── scenes/ # Cocos 场景文件(.scene)
|
|||
|
|
│ │ ├── resources/ # 静态资源
|
|||
|
|
│ │ │ ├── prefabs/ # 预制体
|
|||
|
|
│ │ │ ├── textures/ # 纹理/精灵
|
|||
|
|
│ │ │ ├── animations/ # 动画/Spine
|
|||
|
|
│ │ │ └── fonts/ # 字体
|
|||
|
|
│ │ └── bundles/ # Asset Bundle(热更)
|
|||
|
|
│ ├── build/ # 构建输出
|
|||
|
|
│ └── project.json
|
|||
|
|
│
|
|||
|
|
├── server/ # 📁 服务端(Go + Nakama)
|
|||
|
|
│ ├── src/
|
|||
|
|
│ │ ├── main.go # 入口
|
|||
|
|
│ │ ├── handlers/ # HTTP/gRPC 处理器
|
|||
|
|
│ │ ├── services/ # 业务服务层
|
|||
|
|
│ │ ├── models/ # 数据模型
|
|||
|
|
│ │ ├── repositories/ # 数据访问层(DAO)
|
|||
|
|
│ │ ├── match/ # Realtime Match 逻辑(AOI/位置同步)
|
|||
|
|
│ │ ├── rpc/ # Nakama RPC 实现
|
|||
|
|
│ │ └── middleware/ # 中间件(认证/限流/日志/异常恢复)
|
|||
|
|
│ ├── configs/ # 服务端配置模板
|
|||
|
|
│ ├── migrations/ # 数据库迁移脚本
|
|||
|
|
│ └── Makefile
|
|||
|
|
│
|
|||
|
|
├── api/ # 📁 协议定义
|
|||
|
|
│ ├── proto/
|
|||
|
|
│ │ └── honghuang.proto # Protobuf 定义
|
|||
|
|
│ └── openapi.yaml # OpenAPI 3.0 规范
|
|||
|
|
│
|
|||
|
|
├── database/ # 📁 数据库
|
|||
|
|
│ ├── migrations/ # 迁移脚本(up/down)
|
|||
|
|
│ ├── seeds/ # 种子数据
|
|||
|
|
│ └── schemas/ # 表结构文档
|
|||
|
|
│
|
|||
|
|
├── configs/ # 📁 配置中心模板(Nacos)
|
|||
|
|
│ └── nacos/
|
|||
|
|
│ ├── global.yaml
|
|||
|
|
│ ├── combat.yaml
|
|||
|
|
│ ├── economy.yaml
|
|||
|
|
│ ├── map.yaml
|
|||
|
|
│ ├── event.yaml
|
|||
|
|
│ └── cultivation.yaml
|
|||
|
|
│
|
|||
|
|
├── tools/ # 📁 工具脚本
|
|||
|
|
│ └── scripts/
|
|||
|
|
│ ├── generate_proto.sh # 生成协议代码
|
|||
|
|
│ ├── build_client.sh # 客户端构建
|
|||
|
|
│ └── build_server.sh # 服务端构建
|
|||
|
|
│
|
|||
|
|
├── tests/ # 📁 测试
|
|||
|
|
│ ├── unit/ # 单元测试
|
|||
|
|
│ ├── integration/ # 集成测试
|
|||
|
|
│ └── e2e/ # 端到端测试
|
|||
|
|
│
|
|||
|
|
├── docker/ # 📁 Docker 配置
|
|||
|
|
│ ├── Dockerfile.client
|
|||
|
|
│ ├── Dockerfile.server
|
|||
|
|
│ └── docker-compose.yml
|
|||
|
|
│
|
|||
|
|
├── AGENTS.md # 项目强约束
|
|||
|
|
├── README.md # 项目说明
|
|||
|
|
└── CHANGELOG.md # 版本变更日志
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 1.1 目录禁止行为
|
|||
|
|
|
|||
|
|
- ❌ 在根目录堆放零散文件(必须放入对应子目录)
|
|||
|
|
- ❌ 把服务端代码放在 `client/` 下,反之亦然
|
|||
|
|
- ❌ 用中文或特殊字符命名代码文件/目录(仅限文档可用中文名)
|
|||
|
|
- ❌ 删除或重命名已有标准目录
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 2. 文档编写标准
|
|||
|
|
|
|||
|
|
### 2.1 元信息头部(必须)
|
|||
|
|
|
|||
|
|
```markdown
|
|||
|
|
# 标题
|
|||
|
|
|
|||
|
|
> **文档类型**: 游戏设计文档(GDD) / 产品需求文档(PRD) / 技术设计文档(TDD)
|
|||
|
|
> **版本**: vX.Y
|
|||
|
|
> **日期**: YYYY-MM-DD
|
|||
|
|
> **关联文档**: [列出相关的 GDD/PRD/TDD 编号]
|
|||
|
|
> **作者**: [agent 标识]
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 已确认决策记录
|
|||
|
|
| # | 决策 | 来源 |
|
|||
|
|
|---|------|------|
|
|||
|
|
|
|||
|
|
## 待确认事项
|
|||
|
|
| # | 问题 | 状态 |
|
|||
|
|
|---|------|------|
|
|||
|
|
|
|||
|
|
## 正文...
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 版本记录
|
|||
|
|
- **vX.Y**(YYYY-MM-DD): [变更摘要]
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2.2 内容规范
|
|||
|
|
|
|||
|
|
- Markdown 格式,UTF-8 编码
|
|||
|
|
- 一级标题 = 文档标题;二级 = 章节;三级 = 小节
|
|||
|
|
- 表格用于枚举、对照、参数表
|
|||
|
|
- 决策用 `✅N`,待确认用 `❓N`
|
|||
|
|
- 所有数值必须标注来源(如"来源: GDD-21 §3.1")
|
|||
|
|
- 禁止 TODO/FIXME 残留(要么解决,要么列入待确认表)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 3. 代码编写标准
|
|||
|
|
|
|||
|
|
### 3.1 文件头注释(必须)
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
/**
|
|||
|
|
* @file GameManager.ts
|
|||
|
|
* @brief 游戏主管理器 — 管理游戏状态、界面切换、数据流
|
|||
|
|
* @author [agent标识]
|
|||
|
|
* @date 2026-07-08
|
|||
|
|
* @sync GDD-02 ✅158, GDD-23 ✅159
|
|||
|
|
* @version 2.0
|
|||
|
|
*/
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3.2 TypeScript 规范
|
|||
|
|
|
|||
|
|
```typescript
|
|||
|
|
// ✅ 正确:显式类型 + 常量提取 + 注释来源
|
|||
|
|
const ENERGY_REGEN_SECLUSION_COEFFICIENT = 2.25; // GDD-23 ✅159 四档恢复: 闭关
|
|||
|
|
|
|||
|
|
interface CharacterData {
|
|||
|
|
energyCurrent: number; // 主动资源 (✅158)
|
|||
|
|
energyCap: number; // 成长进度 (✅158)
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// ❌ 错误:魔法数字 + 无类型 + 无注释
|
|||
|
|
const x = 2.25;
|
|||
|
|
let y: any;
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
| 规则 | 说明 |
|
|||
|
|
|------|------|
|
|||
|
|
| `"strict": true` | 严格模式,禁止隐式 any |
|
|||
|
|
| 显式返回类型 | 函数必须声明返回类型 |
|
|||
|
|
| 禁止 `any` | 除非 interfacing with JS 库 |
|
|||
|
|
| PascalCase 类名 | `class EnergySystem` |
|
|||
|
|
| camelCase 函数/变量 | `calculateRegenCoefficient` |
|
|||
|
|
| UPPER_SNAKE_CASE 常量 | `MAX_INVENTORY_SLOTS` |
|
|||
|
|
|
|||
|
|
### 3.3 Go 规范
|
|||
|
|
|
|||
|
|
- 遵循 `gofmt` 格式
|
|||
|
|
- 导出函数必须注释(`// CalculateDamage ...`)
|
|||
|
|
- 错误处理:显式检查 `if err != nil`,禁止忽略错误
|
|||
|
|
- 数据库查询使用参数化查询(防 SQL 注入)
|
|||
|
|
|
|||
|
|
### 3.4 禁止行为
|
|||
|
|
|
|||
|
|
- ❌ 魔法数字(无来源注释的裸数字)
|
|||
|
|
- ❌ 硬编码配置(所有可调参数走 Nacos/配置文件)
|
|||
|
|
- ❌ 硬编码用户可见文本(走 i18n 本地化表)
|
|||
|
|
- ❌ `console.log` 残留(用分级日志:debug/info/warn/error)
|
|||
|
|
- ❌ 注释掉的代码块(要么删除,要么说明原因)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 4. 美术/UI 标准
|
|||
|
|
|
|||
|
|
### 4.1 资源命名
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
[类型]_[功能]_[状态]_[尺寸].[ext]
|
|||
|
|
|
|||
|
|
btn_login_normal_120x60.png
|
|||
|
|
icon_energy_fill_32x32.png
|
|||
|
|
bg_main_title_1920x1080.jpg
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4.2 UI 设计文档必须包含
|
|||
|
|
|
|||
|
|
- 界面层级结构图(树状)
|
|||
|
|
- 各元素尺寸、位置、颜色、字体
|
|||
|
|
- 交互流程图(点击后的状态变化)
|
|||
|
|
- 与代码的对接说明(节点命名、事件绑定)
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 5. 依赖管理
|
|||
|
|
|
|||
|
|
| 规则 | 说明 |
|
|||
|
|
|------|------|
|
|||
|
|
| 锁定版本 | `package-lock.json` / `go.mod` + `go.sum` |
|
|||
|
|
| 安全审查 | 新增依赖查 CVE 漏洞库 |
|
|||
|
|
| 禁止废弃依赖 | last update > 2 年 的不引入 |
|
|||
|
|
| 定期扫描 | 每月运行 `npm audit` / `govulncheck` |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 6. 测试标准
|
|||
|
|
|
|||
|
|
| 测试类型 | 覆盖要求 | 文件位置 |
|
|||
|
|
|----------|----------|----------|
|
|||
|
|
| 单元测试 | 核心业务逻辑(能量/战斗/经济) | `tests/unit/` 或 `server/src/xxx_test.go` |
|
|||
|
|
| 集成测试 | 系统间交互(登录→战斗→结算) | `tests/integration/` |
|
|||
|
|
| 端到端测试 | 完整用户流程 | `tests/e2e/` |
|
|||
|
|
| 性能测试 | 战斗并发/API 压测 | `tests/perf/` |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 7. 版本记录
|
|||
|
|
|
|||
|
|
- **v1.0**(2026-07-08): 初始版本,覆盖目录结构、文档标准、代码规范、美术标准、依赖管理、测试标准
|