东方风格游戏模拟笔记

· 技术 · Python / Game Development / Coordinate Systems

译自英文 · 可对照原文勘误 · 查看英文原文

东方风格弹幕游戏模拟

最近在玩东方,于是用 Python 模仿做了一个类似的游戏,也加载了一些原作贴图和音乐。基础游戏并不难,真正烧脑的是设计密集又好看的弹幕,需要一层层叠加数学函数。

旧版本的坐标问题

两年前刚接触 Java 和 GUI 时,我做过一个 Java 版本。它的低速弹幕无法准确跟踪玩家。

游戏以 60 FPS 更新,显示面板和模拟逻辑又共用同一套坐标。显示位置只能是整数,因此每次移动也被限制在整像素。画面上看不出太大问题,但速度较慢时,弹幕只能沿 0°、45°、90°、135°、180° 等少数离散方向飞行。

解决方法

新的 Python 版本把模拟坐标和显示坐标分开。模拟一直使用浮点数,渲染时才把计算结果取整到像素,而且取整结果不会回写到物理计算。这样就恢复了平滑、精确的制导轨迹。