Расхождение во времени цикла игры для Android - PullRequest
1 голос
/ 20 октября 2011

Я работаю над своей первой игрой:)

Это игра на базе Android, использующая libgdx и использующая модифицированный пример одного цикла DeWiTTERS

Кажется, что игровой цикл отлично работает на настольном компьютере (59 - 60 кадров в секунду), однако, когда я бегу по телефону, он обычно находится где-то в районе 75 - 90 кадров в секунду

nextGameTick всегда должен ссылаться на 16 мс вбудущее, так что игровой цикл работает на скорости 60 FPS или меньше, почему это не так

Вот основная часть игрового цикла для справки:

public void render() {
    nextGameTick = System.nanoTime() + skipTicks;
    loopTimeFull = System.nanoTime();

    Application app = Gdx.app;

    screen.update(app); // Update the screen
    screen.render(app); // Render the screen

    // when the screen is done we change to the
    // next screen
    if (screen.isDone()) {
        // dispose the current screen
        screen.dispose();
        <snip>
        // Removed unneded part of code for this example
        </snip>
        }
    }

    // Make the thread sleep
    General.renderTime = System.nanoTime() - loopTimeFull;
    while (System.nanoTime() <= nextGameTick - General.renderTime) {
        try {
            Thread.sleep(1);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    General.loopTime = System.nanoTime() - loopTimeFull;
    if (General.loopTime > 0)
        General.curFps = 1000000000 / General.loopTime;
    else
        Gdx.app.log("Air Offense", "General.loopTime == 0");

1 Ответ

1 голос
/ 20 октября 2011

Использование примеров кода из ЗДЕСЬ решило мою проблему

спасибо Мистеру Смиту за ответ.

...