Delta Time & Animasi Frame-Independent
Penjelasan
Parameter `dt` pada `love.update(dt)` adalah jumlah detik yang berlalu sejak frame sebelumnya. Mengalikan kecepatan dengan `dt` membuat gerakan frame-independent — objek bergerak dengan kecepatan yang sama secara real-time, baik game berjalan di 30 FPS maupun 144 FPS, karena jarak per frame otomatis menyesuaikan. Tanpa `dt` (misalnya menambah posisi dengan angka tetap tiap frame), game akan terasa lebih cepat di komputer dengan frame rate tinggi dan lebih lambat di komputer lemah — masalah klasik yang dihindari dengan pola delta time ini.
Contoh Konsep
local kecepatan = 150 -- pixel per detik
local x = 0
function love.update(dt)
x = x + kecepatan * dt
if x > 800 then
x = 0
end
end
-- Animasi sprite sederhana dengan timer berbasis dt
local waktuAnimasi = 0
local frameSaatIni = 1
function love.update(dt)
waktuAnimasi = waktuAnimasi + dt
if waktuAnimasi >= 0.2 then
waktuAnimasi = 0
frameSaatIni = frameSaatIni % 4 + 1
end
end
Praktikum
Buat kotak yang berputar warna (bergonta-ganti antara merah dan biru) setiap 0.5 detik menggunakan akumulasi dt, bukan love.timer.sleep.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Jangan pernah pakai `love.timer.sleep` di dalam game loop untuk mengatur timing animasi — itu akan membekukan seluruh game, gunakan akumulasi `dt` seperti pada contoh.