ginka-generator/prompt.md

2.7 KiB
Raw Blame History

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 # 注释内容

  • 不出现连续空行(即空行仅允许连续出现一行)不出现连续空格,例如下面的例子就不允许出现:

    a =      func1()
    abcdef = func2()
    

    应改为:

    a = func1()
    abcdef = func2()
    
  • 遵循类似 Prettier 的风格,不出现尾逗号。

  • 不进行无意义的对齐,例如函数参数定义应该遵循这种风格,到达 80 字符左右换行:

    def func(
        param1: type, param2: type, param3: type,
        param4: type, param5: type
    )
    

    而不是:

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