了解游戏循环

时间:2018-04-27 19:12:39

标签: java game-loop

我正在尝试使用Java创建游戏的教程,但我无法理解游戏循环。

我不明白这个delta变量的目的。

感谢任何帮助。

public void run() {
    long lastTime = System.nanoTime();
    final double amountOfTicks = 60.0;
    double ns = 1000000000 / amountOfTicks;
    double delta = 0;

    while(running) {
        long now = System.nanoTime();
        delta += (now - lastTime) /ns;
        if(delta >= 1) {
            tick();
            delta --;
        }
    }
}

2 个答案:

答案 0 :(得分:0)

  1. 了解纳秒是什么。纳秒是十亿分之一秒; 一秒= 1000000000纳秒。
  2. 10亿除以amountOfTicks给出十亿分之一秒的刻度数(即一秒钟内的刻度)。
  3. 在Java中,比较double值与整数值会产生double值。测试if (delta >= 1)检查delta是否大于一秒的滴答声。
  4. 如果没有超过一秒钟的价值,则什么也不做。
  5. 如果已经过了一秒钟的滴答声,请拨打勾选并从delta中删除一秒钟。
  6. 请注意,delta是刻度的累积。
  7. 这是繁忙循环的一个很好的例子, 这通常表示一个无能的开发者。

    代码的目的似乎是告知未来的维护开发人员,作者是一位无能的开发人员。

    修改 如上所述。 #2是每个滴答的纳秒数。

答案 1 :(得分:-1)

这似乎是一种以预定的每秒帧速率执行游戏逻辑的方式,与CPU的实际速度无关。我希望tick()函数是执行游戏循环的循环。