私はゲーム ループを書いています。以下の例のコードを見つけました。この記事など、ゲームループを実行する他の方法も調べました。しかし、それらのどれも機能させることができませんでした。そのため、最初のリンクのものをそのまま使用しました。
私が知りたいこと:
- 私がゲームループを書いた方法はこれを行うのに良い方法ですか?
- 助言がありますか?
Thread.sleep();
ゲームループで使用する必要がありますか?
これが私の現在のコードです:
public void run(){
long lastLoopTime = System.nanoTime();
final int TARGET_FPS = 60;
final long OPTIMAL_TIME = 1000000000 / TARGET_FPS;
long lastFpsTime = 0;
while(true){
long now = System.nanoTime();
long updateLength = now - lastLoopTime;
lastLoopTime = now;
double delta = updateLength / ((double)OPTIMAL_TIME);
lastFpsTime += updateLength;
if(lastFpsTime >= 1000000000){
lastFpsTime = 0;
}
this.updateGame(delta);
this.repaint();
try{
Room.gameTime = (lastLoopTime - System.nanoTime() + OPTIMAL_TIME) / 1000000;
System.out.println(Room.gameTime);
Thread.sleep(Room.gameTime);
}catch(Exception e){
}
}