2010-02-15 84 views
18

我已經爲Android編寫了一款遊戲,並且已經在Dev Phone 1上進行了測試。它的工作原理完美,速度正好。但是,我確信手機CPU正在變得更快。它們可能已經比開發手機更快了。Android遊戲循環,如何控制速度和幀速

無論設備的運行速度如何或運行速度如何,我如何確保我的遊戲以完全相同的速度運行?你知道任何技術嗎?我應該每次檢查循環頂部的某種計時器嗎?

我想我是指幀速率 - 但大多數是我的遊戲在主遊戲循環中運行的速度。

任何理論或經驗都會很棒!謝謝。

+3

只需注意一點:對於遊戲,有時候新手機會比較慢。我有一個OpenGL遊戲,我正在做G1上的60FPS,但Droid上只有30-40 FPS。 Droid上的渲染器不同,它也具有更高分辨率的屏幕,這會傷害性能。 –

回答

15

如果您針對特定的幀頻,基本思想是您應該有一個計時器或線程以期望的時間間隔執行您的遊戲的tick方法。使用定時器的實現非常簡單:只需安排定時器以定期執行即可。使用線程時,如果線程運行速度超過所需幀速率,則必須使線程在連續的滴答之間進入睡眠狀態。

但是,僅憑這一點不會導致最佳結果,因爲間隔可能會在幀之間有所變化。關於這個問題有一篇很好的文章:http://gafferongames.com/game-physics/fix-your-timestep/

此外,已經有比開發手機1更慢更快的Android手機。因此,如果您針對所有Android設備,則必須爲這兩種情況做好準備。如果你的遊戲不是那麼重的CPU,那麼你可以在所有設備上達到所需的幀率。但是,如果你不限制幀頻,那麼在更快的Android手機上你的遊戲速度會過快。

+0

謝謝你,這篇文章是一個很好的發現和一個簡單的實現,我已經建立了。 –

+0

+1謝謝@lauri鏈接你給了我很多幫助.. –

+0

你實現了「插值」部分嗎? –