2

メイン ゲーム ループに基本的な updatePhysics() と onDraw() を持つ単純なゲームを Android で作成しました。最初は、一定のフレームレートを維持するために何も入れていなかったので、スリープせずに無限にループしていました。しかし、いくつかの調査を行った後、フレームレートが一貫するようにこれを調整する方がおそらく良いことがわかりました. そのため、Thread.sleep() を入れて、約 30 fps で動作するようにしました。コードは次のとおりです。

if(!h.getSurface().isValid())
    continue;
synchronized(h){
    startTime = System.currentTimeMillis();
    if(state == STATE_GAME){
        updatePhysics();
    }
    onDraw();
    endTime = System.currentTimeMillis();
    try{
    Thread.sleep(WAIT_TIME - (endTime - startTime));
    }catch(Exception e){}
}

私が見つけたのは、私のゲームが非常に途切れ途切れになったことです.30 fpsではなく、20ほどでした.ただし、そのレートを約40に上げると、30 fpsのように見えます(よりスムーズになります)。ゲームは通常 25 ~ 30 fps であるとオンラインで読んだので、40 は少し高すぎると思います。Thread.sleep() を使用する必要がありますか? また、これを fps を調整せずに実行すると、他のデバイスにどのような影響がありますか? Thread.sleep() を使用せずに Galaxy s2 でスムーズに動作し、一貫性のないフレームレートは目立ちません。しかし、私はローエンドのデバイスに関心があります。アングリーバードのようなハイエンドゲームは何をしますか? 答えてくれてありがとう、私はゲーム開発に非常に慣れていません。

4

0 に答える 0