# 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 采样)分别生成图片,便于直观对比模型效果