我为 Android 开发了一个游戏,在 Dev Phone 1 上进行了测试。它运行得非常完美,速度刚刚好。不过,我相信手机的 CPU 正变得越来越快。它们可能已经比开发者手机更快了。
我该如何确保我的游戏在任何设备上以相同的速度运行?有没有什么技巧?我应该每次在循环的顶部检查某种计时器吗?
我想我是在提到帧率,但主要是指我的游戏通过主游戏循环的速度。
有任何理论或经验都可以分享!谢谢。
我为 Android 开发了一个游戏,在 Dev Phone 1 上进行了测试。它运行得非常完美,速度刚刚好。不过,我相信手机的 CPU 正变得越来越快。它们可能已经比开发者手机更快了。
我该如何确保我的游戏在任何设备上以相同的速度运行?有没有什么技巧?我应该每次在循环的顶部检查某种计时器吗?
我想我是在提到帧率,但主要是指我的游戏通过主游戏循环的速度。
有任何理论或经验都可以分享!谢谢。
如果你想要达到特定的帧率,基本思路是需要一个计时器或线程,在所需的时间间隔内执行你游戏的tick方法。使用计时器实现比较简单:只需要安排一个定时器在规律的时间间隔内执行即可。当使用线程时,如果运行速度快于所需的帧率,需要在连续的ticks之间将线程休眠。
然而,仅靠这样还不能获得最佳效果,因为帧之间的间隔会有一些变化。这个问题已经有一篇非常好的文章介绍了:http://gafferongames.com/game-physics/fix-your-timestep/。
另外,已经有比开发手机1更慢和更快的Android手机了。因此,如果你的目标是所有Android设备,就必须为两种情况做好准备。如果你的游戏不太耗费CPU资源,可能可以在所有设备上达到所需的帧率。但是,如果不限制帧率,你的游戏在更快的Android手机上会过快。