检查这个游戏循环

时间:2014-12-08 10:26:45

标签: java

下面是我在互联网上找到的游戏循环。它可以工作,但它给CPU带来了巨大的负担(60%到70%),游戏也有点迟钝!我所做的所有调整都是在特定的电脑上工作,但是当我试用不同的电脑时,它的表现完全不同。在这台电脑上我得到了60甚至150fps。

public void run() {
        init();
        long lastTime = System.nanoTime();
        final double amountOfTicks = 60.0;
        double ns = 1000000000 / amountOfTicks;
        double delta = 0;
        int updates = 0;
        int frames = 0;
        long timer = System.currentTimeMillis();

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

            render();
            frames++;

            if(System.currentTimeMillis() - timer > 1000){
                timer += 1000;
                System.out.println(updates + " Ticks, Fps " + frames);
                updates = 0;
                frames = 0;
            }

        }
        stop();
    }

1 个答案:

答案 0 :(得分:2)

在你的while循环中添加Thread.sleep

try {
Thread.sleep(50);
} catch(Exception e){
}

添加这个,你减慢了fps。你不应该使用max fps。对于大多数游戏来说,24 fps就足够了。