覆盖:立项 → 设计 → 原型 → 编码 → 优化 → 打包 → 发布
每一步都给「模板 + 工具 + checklist 」直接可用


1. 立项:10 分钟商业画布

模块 填写范例(以“弹幕射击”为例)
核心玩法 上下左右 + 射击,躲避弹幕,杀 Boss
目标用户 休闲向、Steam 轻度玩家
平台 Windows + macOS
卖点 国风像素 + Bullet-Hell + 局内成长
竞品 《东方永夜抄》《Enter the Gungeon》

| 周期 | 1 人 3 个月 → MVP 1 月 → 润色 2 月 |

工具:Notion 模板「Game Canvas」→ 5 分钟生成 PDF


2. 设计:3 份文档 + 1 张表

  1. GDD(Game Design Doc)
    模板链接 含:机制、关卡曲线、数值公式
  2. 美术需求表
    类型 尺寸 帧数 命名规范
    玩家飞船 64×64 1 player_ship.png
    子弹 16×16 4 bullet_01_{n}.png
  3. 技术方案
    • 语言:Python 3.11
    • 引擎:Pygame 2.5
    • 物理:自写 AABB + 圆形碰撞
    • 存档:json + zlib
    • 加密:无(开源)
  4. 里程碑
    周次 目标 可玩性
    W1 角色移动 + 发射 可打靶
    W2 敌人 + 弹幕 可输可赢
    W3 关卡 + Boss 可通关

3. 原型:灰盒 → 可玩 → 录屏

  • Day 1 灰盒:矩形代替图片,确认手感
  • Day 3 替换占位图,调数值(FPS≈60,dt 稳定)
  • Day 5 录 30 秒 GIF,发 Twitter/群,收集反馈 → 决定是否继续

工具:

  • 录屏:ShareX(Win)/ Gifox(Mac)
  • 反馈表:Google 表单 5 个问题(难度、爽点、Bug)

4. 编码:7 步迭代(每步都可运行)

步骤 目标 关键类/文件 验收标准
0. 项目骨架 能启动黑屏 main.py settings.py 按 ESC 退出
1. 玩家实体 移动 + 边界 sprites/player.py 60 fps 不掉帧
2. 子弹系统 发射 + 回收 sprites/bullet.py 同时 200 发仍 60 fps
3. 敌人 + 弹幕 3 种弹道 sprites/enemy.py patterns/ 击杀后掉落资源
4. 关卡流程 JSON 描述刷怪 level/level_01.json 3 波 → Boss
5. UI + 菜单 开始/暂停/结束 ui/menu.py ui/hud.py 鼠标 + 键盘都能点
6. 音效 + 音乐 2 BGM + 10 SFX assets/sounds/ 可调节音量
7. 存档 + 成就 最高分、解锁 utils/save.py 异常关机不损坏

代码规范

  • 统一入口 main.py
  • 精灵全部继承 pg.sprite.Sprite
  • 资源路径用 pathlib.Path
  • 常量全大写放 settings.py
  • 提交信息:feat: 添加螺旋弹幕

5. 项目结构(最终态)

danmaku/
├─ main.py
├─ settings.py
├─ game.py            # 主状态机
├─ sprites/
│  ├─ player.py
│  ├─ enemy.py
│  ├─ bullet.py
│  └─ pickups.py
├─ patterns/          # 弹幕配方
│  ├─ spiral.py
│  └─ grid.py
├─ ui/
│  ├─ menu.py
│  └─ hud.py
├─ level/
│  └─ level_01.json
├─ utils/
│  ├─ save.py
│  └─ resource.py
├─ assets/
│  ├─ images/
│  ├─ sounds/
│  └─ fonts/
└─ build/             # 打包脚本

6. 性能 checklist(发布前)

  • convert_alpha() 全部图片
  • 子弹对象池 → 预生成 300 个,循环使用
  • 碰撞用 sprite.groupcollide + 掩码层
  • 静态背景预渲染到 Surface
  • 1280×720 下 3000 颗子弹仍 ≥ 60 fps(Profile:cProfile + snakeviz)

7. 打包与测试

Windows

python -m pip install nuitka
python -m nuitka --standalone --onefile --windows-disable-console --include-data-dir=assets=assets main.py

产出:main.exe ≈ 40 MB,可双击运行

测试矩阵

系统 分辨率 帧率 备注
Win10 1920×1080 60 全屏
Win11 1366×768 60 窗口

8. 上架 & 运营

  1. Steam
    • 付 100 USD 绿光 → 填商店页 → 上传 build
    • 成就集成:pygame 调用 steamworks.py
  2. itch.io
    • 可设置“按需付价”引流
  3. Demo 试玩
    • 前 2 关免费,存档继承到正式版
  4. 社区维护
    • 每周 devlog → GIF + 数值改动
    • Discord/TapTap 收集崩溃日志 → Sentry 自动上报

9. 发布后迭代

版本 内容 时间
1.1 新角色 + 弹幕编辑器 2 周后
1.2 无尽模式 + 全球排行榜 1 月后
1.3 联机 coop(局域网) 3 月后

10. 工具清单速查

用途 工具
画像素 Aseprite
矢量 UI Figma
音效 sfxr / Audacity
作曲 Bosca Ceoil
任务看板 Trello
版本控制 GitHub + .gitignore(含 *.exe
自动化构建 GitHub Actions(Windows + macOS 并行)

🎯 结束语
照着上面 10 步走完,你就有了一款
「能玩 → 能打包 → 能卖」的完整 Pygame 作品。
剩下的,就是第 1 行 import pygame 和第 10000 次 git push 之间的距离。
Happy Coding & Shipping!