我刚刚用Java制作了一个Pong游戏,但我对FPS的运作方式有些疑问。目前,游戏的运行速度与计算机可以处理的速度一样快,如果我在更快的计算机上运行游戏,那么游戏的加速速度将比正常速度快。我通过添加计时器来解决这个问题,以防止游戏运行得太快:
timer = new Timer(5, this);
timer.start();
但是,由于计时器的原因,无论计算机有多快,FPS都无法超过特定限制。当FPS下降而不是减慢程序时,我希望它像真正的电脑游戏一样“落后”。我该怎么做呢?我想强制游戏以一定的速度运行,因此FPS会下降,而不是程序放慢。
我的FPS计数器目前看起来像这样:
if(System.currentTimeMillis() - time >= 1000){
time = System.currentTimeMillis();
fps = newfps;
newfps = 0;
}
else{
newfps++;
}
g.setFont(new Font("Arial", Font.BOLD, 25));
g.drawString(fps + "", 5, 22);
如果我不清楚我的问题,请告诉我。
答案 0 :(得分:0)
这是一个线程问题。使用(至少)一个线程为您的游戏进行所有计算,并使用另一个线程进行渲染。这意味着渲染周期将独立于后台处理,并且不应该具有减慢它们的能力。