跳过导航至主内容
Skip to article

研究笔记 · Research Note

游戏开发 pygame

Zhenyu He · Jobs Stroustrup 阅读约 2 分钟

游戏开发 pygame (Game Development with pygame)

熟练度

熟练

描述

pygame 框架全栈

  • pygame.sprite.Sprite 基类 + 继承树(9 种 Enemy 子类;4 种 Bar 子类)
  • pygame.sprite.Group 按类型分组管理(enemies 总集 + ord_enemies / heal_enemies / split_enemies 按敌人类型分组,支持批量碰撞检测/批量更新)
  • pygame.Surface / pygame.image.load / convert_alpha 资产加载 + 双缓冲绘制
  • pygame.mixer 音频引擎:music.load + play(-1) 循环背景乐 + mixer.Sound 触发式音效
  • pygame.font 自定义字体加载(Futura.ttc)+ 文本渲染
  • pygame.time.Clock FPS 控制(60 FPS,60 秒/局)
  • pygame.event 事件循环:KEYDOWN/KEYUP + QUIT + 多事件分支

场景与状态机管理

  • 多 mode 状态机(主菜单 / 战斗 / 故事剧情 / 暂停 / 结束 / 教程 —— 6 种场景)
  • 资产 pre-load 到 Surface 缓存,避免运行时磁盘 I/O
  • 暂停/结束 overlay + 双层菜单(pause_option / end_option 各自管理)

自定义 DSL(Domain-Specific Language)设计

  • Token stream 数据结构(双端 deque)支持 L_ prepend / R_ append 的双向构造
  • 键盘输入 → token 映射(KEYDICT 查表)
  • 实时求值(calc(x) 按 token 顺序应用到输入)
  • 符号化简规则引擎(互逆操作对自动抵消:a·sl·ed·d-·-/·*)—— 简化版计算机代数系统的 normalize
  • 表达式 pretty-print(token stream → 人类可读字符串如 sin(e(x/2))
  • 自定义异常作为游戏机制(out_of_domain 在 log(负)/arcsin(|x|>1)/1/0 时抛出,触发”函数无效”反馈)

游戏平衡性与 incentive design

  • 非线性费用函数:cost = f(linear, A, d, e, l),用指数复合 pow(2+linear, 1.5+A) 惩罚 nested 操作 —— 让”简洁表达式”成为 dominant 策略
  • 把数学严格性(exception)转化为 gameplay feedback —— 玩错的方式即学到的地方

坐标系抽象

  • 四个双向映射函数(lof / tof / xof / yof)解耦物理坐标和屏幕坐标
  • pygame.sprite.Sprite.rect.center 和自定义 (x, y) 双坐标系同步

游戏化教育设计(educational game design)

  • 11 关教程模式按数学难度递进:单 ln → 单 exp → 单 sin → 2sin → sin×2 → sin÷2 → …
  • 每关固定目标点(e.g. [(0,-4), (1,0), (3,1), (7,2)] 对应 ln),玩家要构造出经过这些点的函数——问题到答案的 inverse 练习
  • Knowledge sequencing:先单操作、再组合、最后复合,覆盖课程设计的基本原理
  • 这个能力与 profile 里讨论过的 Exam-centric AI Coaching(主动式 AI 备考教练)方向直接相关

引擎反向工程(跨项目)

  • 在 里为了写 rollout simulator,完整反向工程了陈斌教授的对战平台 kernel.py(eject 物理/absorb 多体碰撞/collision grouping)——对外部游戏引擎做白盒建模的能力

与其他 skill 的关系

  • 游戏AI与控制架构 互补:一个开发游戏本身、一个开发能玩游戏的 AI
  • 算法与数据结构 承载:pygame 实现里的 OOP 继承树、deque 式 stream、规则引擎化简都是本 skill 的载体
  • 前端与网页开发 思想共鸣:都是”交互式应用开发”(一个是 pygame Surface,另一个是 DOM);产品审美 + 工程细节的同一份偏好
  • Claude-Skill开发方法论 思想共鸣:DSL 设计(键盘 → 数学函数)与 SKILL.md + persona + examples 的”Skill 即用户自定义行为”有同构的 DSL 设计思维

在哪些经历中用到

  • — Math Kills Monsters Alpha 4.0(~1300 行 pygame + 9 敌人 + 11 关教程 + 完整 UI + 音画资产)
  • — 对战平台 kernel.py / world.py / cell.py 的引擎内部理解(白盒建模)
  • 可能的未来应用:interactive components for educational/visualization products