安卓游戏循环,如何控制速度和帧率

19

我为 Android 开发了一个游戏,在 Dev Phone 1 上进行了测试。它运行得非常完美,速度刚刚好。不过,我相信手机的 CPU 正变得越来越快。它们可能已经比开发者手机更快了。

我该如何确保我的游戏在任何设备上以相同的速度运行?有没有什么技巧?我应该每次在循环的顶部检查某种计时器吗?

我想我是在提到帧率,但主要是指我的游戏通过主游戏循环的速度。

有任何理论或经验都可以分享!谢谢。


3
需要注意的是:对于游戏而言,有时更新的手机反而会更慢。我正在开发一个OpenGL游戏,在G1上可以达到60帧每秒,但在Droid上仅能达到30-40帧每秒。这是因为Droid上的渲染器不同,并且其屏幕分辨率也更高,这对性能造成了影响。 - Lance Nanek
1个回答

15

如果你想要达到特定的帧率,基本思路是需要一个计时器或线程,在所需的时间间隔内执行你游戏的tick方法。使用计时器实现比较简单:只需要安排一个定时器在规律的时间间隔内执行即可。当使用线程时,如果运行速度快于所需的帧率,需要在连续的ticks之间将线程休眠。

然而,仅靠这样还不能获得最佳效果,因为帧之间的间隔会有一些变化。这个问题已经有一篇非常好的文章介绍了:http://gafferongames.com/game-physics/fix-your-timestep/

另外,已经有比开发手机1更慢和更快的Android手机了。因此,如果你的目标是所有Android设备,就必须为两种情况做好准备。如果你的游戏不太耗费CPU资源,可能可以在所有设备上达到所需的帧率。但是,如果不限制帧率,你的游戏在更快的Android手机上会过快。


谢谢,这篇文章是个好发现,并且对我已经构建的内容来说实现起来很容易。 - Ben Mc
你也实现了“插值”部分吗? - Ashika Umanga Umagiliya

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接