东方风格游戏模拟笔记
· 技术 · Python / Game Development / Coordinate Systems
最近在玩东方,于是用 Python 模仿做了一个类似的游戏,也加载了一些原作贴图和音乐。基础游戏并不难,真正烧脑的是设计密集又好看的弹幕,需要一层层叠加数学函数。
旧版本的坐标问题
两年前刚接触 Java 和 GUI 时,我做过一个 Java 版本。它的低速弹幕无法准确跟踪玩家。
游戏以 60 FPS 更新,显示面板和模拟逻辑又共用同一套坐标。显示位置只能是整数,因此每次移动也被限制在整像素。画面上看不出太大问题,但速度较慢时,弹幕只能沿 0°、45°、90°、135°、180° 等少数离散方向飞行。
解决方法
新的 Python 版本把模拟坐标和显示坐标分开。模拟一直使用浮点数,渲染时才把计算结果取整到像素,而且取整结果不会回写到物理计算。这样就恢复了平滑、精确的制导轨迹。