Study
LÖVE2D

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.

Editor Latihan

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.