Нужно выяснить смысл величины delta_t.
Когда разрабатывается игра, она нацелена на такую-то частоту обновления, допустим, 100 кадров в секунду. Это значит, что если у игрока игра выдает 100 ФПС, delta_t должна быть равна единице. Если реальный показатель ФПС ниже расчетного, нужно ускорить все движения, то есть delta_t > 1. Если же игра идет слишком быстро, delta_t < 1.
Теперь можно подумать о реализации:
time = 0
; Главный цикл
While 1
ticks = Millisecs() ; текущее время
elapsed = ticks - time
time = ticks
После первого кадра значение time инициализируется текущим временем (это можно сделать и раньше, при желании). В elapsed хранится время, потраченное на обработку одного кадра (прошлого кадра).
При ФПС = 100, на обработку одного кадра уходит времени
const TARGET_FPS = 100
; 1000 миллисекунд / n кадров в секунду
period# = Float(1000) / Float(TARGET_FPS)
Мы уже знаем, что при ФПС = 100 delta_t = 1. Т.е. уже должно быть понятно, что надо что-то делить на что-то еще. Если ФПС > 100, delta_t должно быть меньше единицы. При этом на один кадр тратится времени меньше, чем при ФПС = 100. А если поделить меньшее число на большее, мы получим значение меньше единицы. Таким образом,
const TARGET_FPS = 100
; 1000 миллисекунд / n кадров в секунду
const period# = Float(1000) / Float(TARGET_FPS)
time = 0
; Главный цикл
While 1
ticks = Millisecs() ; текущее время
elapsed# = ticks - time
time = ticks
delta_t# = elapsed / period
UpdateGame(delta_t)
Render()
Wend
Если же ФПС < 100, elapsed будет больше, чем period, и delta_t соответственно примет значение больше 1.