DeltaTime
Verfasst: 28.08.2015, 16:31
Hallo,
ich arbeite gerade daran einen "Mainloop" für mein Spiel einzurichten(Java).
Dies ist mein Konzept, um die momentane Framerate zu errechnen:
Meine Denkweise:
1.nanoTime() gibt die Systemzeit in nanosekunden zurück, um diese Zeit nun in Sekunden umzurechnen, teile ich durch 10 hoch 9(1000000000).
2. [Ein Bsp:ein Frame dauert 1/60 s -> Framerate = 60 FPS = (1/(1/60)) ]
-> also allgemein : Framerate = 1/[Dauer eines Frames in Sekunden]
Nun meine Fragen:
1. Gibt mir dieses Programm(das diese Methode laufen lässt) nun wirklich in jedem Schleifendurchlauf die Framerate aus(die der vorherige Frame benötigt hätte), oder bin ich einem Denkfehler aufgelaufen?(wenn ja, welchen?)
2. Kann ich nun mit dieser "DeltaZeit" die Bewegung eines Gegners so skallieren, dass er sich bei 1000FPS genauso schnell bewegt wie bei 100 FPS? (Beispiel-Werte)
Zwar habe ich schon Beispiele gesehen, die einen komplexen Timing-Mechanismus eingebaut haben, aber ich wollte mir selber ein Prinzip herleiten.(Ich will nicht nur copy-paste benutzen :D)
ich arbeite gerade daran einen "Mainloop" für mein Spiel einzurichten(Java).
Dies ist mein Konzept, um die momentane Framerate zu errechnen:
Code: Alles auswählen
public void run() {
double delta_time = System.nanoTime();
while(run){
double now = System.nanoTime();
System.out.print("FPS:"+1/(delta_time/1000000000)+"\n");
delta_time = System.nanoTime()-now;
}
}
1.nanoTime() gibt die Systemzeit in nanosekunden zurück, um diese Zeit nun in Sekunden umzurechnen, teile ich durch 10 hoch 9(1000000000).
2. [Ein Bsp:ein Frame dauert 1/60 s -> Framerate = 60 FPS = (1/(1/60)) ]
-> also allgemein : Framerate = 1/[Dauer eines Frames in Sekunden]
Nun meine Fragen:
1. Gibt mir dieses Programm(das diese Methode laufen lässt) nun wirklich in jedem Schleifendurchlauf die Framerate aus(die der vorherige Frame benötigt hätte), oder bin ich einem Denkfehler aufgelaufen?(wenn ja, welchen?)
2. Kann ich nun mit dieser "DeltaZeit" die Bewegung eines Gegners so skallieren, dass er sich bei 1000FPS genauso schnell bewegt wie bei 100 FPS? (Beispiel-Werte)
Zwar habe ich schon Beispiele gesehen, die einen komplexen Timing-Mechanismus eingebaut haben, aber ich wollte mir selber ein Prinzip herleiten.(Ich will nicht nur copy-paste benutzen :D)