Javaで動作するPongゲームを作成しましたが、FPSの動作についていくつか質問があります。現在のところ、ゲームはコンピュータが処理できるほど高速で実行され、高速のコンピュータでゲームを実行すると、ゲームは通常より速くスピードアップします。私はあまりにも速く実行されているからゲームを防ぐためにタイマーを追加することで、これを解決:Java - 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);
を教えてください。
「遅れている」とはどういう意味ですか?ゲームが実行されているよりも描画が遅くなるようにしたいですか? – Igor
何らかの理由でFPSが低下した場合、プログラム全体を遅くするのではなく、フレームをスキップするようにします。私は、プログラムが遅くなったり、あまりにも速く走ったりしないようにしたい。 – enheldel
FPSは、最終的にディスプレイハードウェアによって制限されることになります。ゲームでVSynchを実装して、GPUとモニタ用に最適なレートでデータをレンダリングしてください。さらに、ダブル・バッファリングを使用していることを確認してください。https://docs.oracle.com/javase/tutorial/extra/fullscreen/doublebuf.html –