Понимание общей игры Looping - PullRequest
0 голосов
/ 31 марта 2020

Я читал некоторые материалы по теме rnet, связанные с этой темой c, но я все еще ленив. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ”* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *“ “Это был первый раз, когда я прочитал, и дал мне лучшие знания о том, как структурировать общую идею, однако, с моими тестами, я не знаю, получил ли я l oop, хорошо работает для его предложения .

Пока я пытался настроить этот тест:

public static void main(String[] args) {
    double MS_PER_UPDATE = 1e3/60; //is this representing 60 FPS?
    long elapsed;
    long current;
    double lag = 0.0;
    long previous = System.currentTimeMillis();

    int frames = 0;
    long timer = System.currentTimeMillis();

    try {
        while (true){
            current = System.currentTimeMillis();
            elapsed = current - previous;
            previous = current;
            lag += elapsed;

            //performs game input update here
            Thread.sleep(2);

            while (lag >= MS_PER_UPDATE){
                //performs game update here
                Thread.sleep(10);
                lag -= MS_PER_UPDATE;
            }

            //performs render game here
            Thread.sleep(6);
            frames++;
            if (System.currentTimeMillis() - timer >= 1000){
                System.out.println(frames + " frames per second?");
                frames = 0;
                timer = System.currentTimeMillis();
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

Обратите внимание, что я сделал несколько вызовов Thread.sleep(), чтобы попытаться "смоделировать" задержку этих методов в "реальном" "контекст. Однако я получаю некоторые результаты, например, на консоли:

19 frames per second?
13 frames per second?
17 frames per second?
21 frames per second?
21 frames per second?
12 frames per second?

Моя машина действительно медленно выполняет эти операции, или метод sleep() очень неточен, или мои измерения FPS неверны? Пожалуйста, дайте мне знать, можно ли использовать приведенный выше код для простых игровых экспериментов. Заранее спасибо!

...