mirror of
https://github.com/unanmed/ginka-generator.git
synced 2026-05-14 04:41:12 +08:00
77 lines
2.7 KiB
Markdown
77 lines
2.7 KiB
Markdown
# Ginka 地图生成器 - Copilot 指引
|
||
|
||
## 项目概述
|
||
|
||
本项目是一个基于深度学习的二维网格状地图生成模型,用于生成魔塔(Magic Tower)类网页游戏地图。
|
||
|
||
- **模型结构**:VQ-VAE 风格编码器 + MaskGIT 解码器
|
||
- VQ-VAE 编码器将完整地图压缩为离散隐变量 z(从 codebook 查得)
|
||
- MaskGIT 以 z 为条件,通过迭代掩码预测生成地图
|
||
- 推理时直接随机采样 z,无需用户输入
|
||
- **地图规格**:13×13 格子,7 类图块
|
||
- **目录结构**
|
||
- `ginka/` — 模型定义与训练脚本(Python)
|
||
- `data/` — 数据预处理(TypeScript,因游戏是网页游戏)
|
||
- `docs/` — 设计文档
|
||
- `shared/` — 可视化等共享工具
|
||
|
||
## 重要约束
|
||
|
||
### 训练
|
||
|
||
- **不要在当前设备上运行训练**,训练在其他设备上进行
|
||
- 可以运行小规模验证、推理或单步测试,但不要触发完整训练流程
|
||
|
||
### 代码风格
|
||
|
||
#### Python
|
||
|
||
- 不使用三引号注释(`"""..."""`),一律改用 `#` 注释。对于行后的注释,注释的 # 应该在语句后面空一格的地方开始,不要多空,也不要少空,例如 `a = b # 注释内容`。
|
||
- 不出现连续空行(即空行仅允许连续出现一行)不出现连续空格,例如下面的例子就不允许出现:
|
||
|
||
```python
|
||
a = func1()
|
||
abcdef = func2()
|
||
```
|
||
|
||
应改为:
|
||
|
||
```python
|
||
a = func1()
|
||
abcdef = func2()
|
||
```
|
||
|
||
- 遵循类似 Prettier 的风格,不出现尾逗号。
|
||
- 不进行无意义的对齐,例如函数参数定义应该遵循这种风格,到达 80 字符左右换行:
|
||
|
||
```python
|
||
def func(
|
||
param1: type, param2: type, param3: type,
|
||
param4: type, param5: type
|
||
)
|
||
```
|
||
|
||
而不是:
|
||
|
||
```python
|
||
def func(param1: type, param2: type, param3: type,
|
||
param4: type, param5: type)
|
||
```
|
||
|
||
- 不使用下划线开头命名任何内容,包括私有方法。
|
||
- 不写静态方法。
|
||
- 仅允许在文件开头引入内容,不允许其他地方出现任何 `import`。
|
||
- 文件尾添加空行。
|
||
- 不允许出现连等。
|
||
- 不允许使用元组语法同时给多个量分别赋值,比如 `a, b, c = d, e, f` 不允许出现,仅允许 `a, b, c = func()` 这种一赋多的场景。
|
||
- 不要在文件开头添加注释,开头第一句应该是 `import`。文件注释应该在 `import` 之后写。
|
||
|
||
#### TypeScript
|
||
|
||
遵循 Prettier 风格。
|
||
|
||
### 验证与可视化
|
||
|
||
- 编写验证代码时,优先输出可视化结果(图片文件),使用 `shared/image.py` 中的工具
|
||
- 验证阶段应对不同条件(不同 z 采样)分别生成图片,便于直观对比模型效果
|