State Management Sederhana (Game States)
Penjelasan
Game hampir selalu punya beberapa "state" berbeda — menu utama, sedang bermain, pause, game over — yang masing-masing punya logic update dan draw sendiri. Pola paling sederhana adalah variabel string atau tabel `state` yang dicek di dalam `love.update` dan `love.draw` untuk menentukan kode mana yang dijalankan. Untuk project lebih besar, pola ini sering dikembangkan menjadi tabel berisi fungsi per state (mis. `states.menu.update`, `states.main.draw`), tapi untuk game kecil, percabangan if/elseif berdasarkan variabel state sudah cukup dan mudah dipahami.
Contoh Konsep
local gameState = "menu"
function love.update(dt)
if gameState == "main" then
-- update logic permainan
elseif gameState == "gameover" then
-- update logic layar game over
end
end
function love.draw()
if gameState == "menu" then
love.graphics.print("Tekan ENTER untuk mulai", 300, 250)
elseif gameState == "main" then
love.graphics.print("Sedang bermain...", 300, 250)
elseif gameState == "gameover" then
love.graphics.print("Game Over", 300, 250)
end
end
function love.keypressed(key)
if gameState == "menu" and key == "return" then
gameState = "main"
end
end
Praktikum
Buat tiga state: "menu", "main", dan "pause". Tombol P untuk toggle pause dari state main, dan tampilkan teks berbeda di tiap state.
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Jangan biarkan logic update permainan tetap berjalan saat state "pause" — bungkus kode update dengan pengecekan state supaya game benar-benar berhenti, bukan cuma layar berubah.