Domanda

Sto lavorando al mio primo gioco in assoluto :)

È un gioco basato su Android che utilizza libgdx e utilizza un esempio modificato di uno dei DeWiTTERS loop

Il loop di gioco sembra funzionare perfettamente in esecuzione sul desktop (59-60 fps), tuttavia quando corro sul mio telefono tende a stare da qualche parte intorno ai 75-90 FPS

nextGameTick dovrebbe sempre fare riferimento a 16 ms nel futuro in modo che il ciclo di gioco funzioni a 60 FPS o meno, perché non è così

Ecco la parte principale del ciclo di gioco come riferimento:

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");
È stato utile?

Soluzione

L'utilizzo di esempi di codice da HERE ha risoltoil mio problema

grazie a Mister Smith per la risposta.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top