私はJavaでボンバーマンのゲームを作っていますが、ゲームはプロセッサとCPUのオーバーロードにPCが遅くなっているようです。私は別のゲームでこのループを使用しましたが、パフォーマンス上の問題を引き起こすことなく正常に動作しました。しかし、私は単純にgameloopをコメントアウトすることにより、()私が使用している主要なパフォーマンスの問題ゲームのループパフォーマンスの問題
ゲームループの原因となることがわかりました:問題を引き起こしている可能性があり、このループに問題がある
public void start() {
window.setVisible(true);
running = true;
int fps = 60;
double timePerTick = 1e9/fps;
double delta = 0;
long now;
long lastTime = System.nanoTime();
while (running) {
now = System.nanoTime();
delta += (now - lastTime)/timePerTick;
lastTime = now;
if (delta >= 1) {
gameLoop(); /* commenting this out will cause major performance
* problem to the PC */
delta--;
}
}
}
@Override
public void gameLoop() {
if(!gameover){
run();
gui.repaint();
}
}
、またはパフォーマンスの問題を軽減するより良い方法があります
[編集] 私はタイマーと同様のタスクを行うためにループを変更しました、それは正常に動作し、何かこの問題ではまだ間違っている長期的な問題)??あなたは、あなたのニーズに応じてお使いの場合には、お使いのCPUの100%を消費し任意の一時停止せずに無限ループを作っている
public void start(int fps){
window.setVisible(true);
running = true;
gameTimer.scheduleAtFixedRate(new GameTimer(), 0, 1000/fps);
}
private class GameTimer extends TimerTask{
@Override
public void run(){
gameLoop();
}
}
私はこの記事を読むでしょう。 http://www.java-gaming.org/index.php?topic=24220.0 – Orin
もっと効率的なものを書くためにゲームループについてもっと読むことをお勧めします。 – eldo