研究笔记 · Research Note
游戏开发 pygame
游戏开发 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.ClockFPS 控制(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·s、l·e、d·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