Я пишу цикл игры, я нашел код в приведенном ниже примере здесь. Я также рассмотрел другие способы создания игрового цикла, например, из этой статьи. Я не мог заставить кого-нибудь из них работать. Таким образом, я сохранил это с первой ссылкой.
Что я хотел бы знать:
- Является ли способ, которым я написал свой игровой цикл, хороший способ сделать это?
- Какие-либо предложения?
- Должен ли я использовать
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){
}
}