Dein Ansatz ist schon korrekt. Du misst die Zeit zwischen zwei Frames und multiplizierst diesen Wert mit all deinen Bewegungen, also z.B.
Objekt.x := Objekt.x + 23*FrameTime;
Wenn du mehr Genauigkeit wünschst dann nimm den High Performance Counter. Pseudocode:
Delphi-Quellcode:
var
CounterAvailable: Boolean;
Frequency: Int64;
CounterAvailable := QueryPerformanceFrequency(Frequency);
// ...
QueryPerformanceCounter(Start);
// Frame
QueryPerformanceCounter(Ende);
FrameTime := (Ende - Start) / Frequency;
Damit erhälst du dann am Ende eine Frametime in Sekunden.
Diese Methode verwendet so ziemlich jedes Spiel.
karlkoch