Study
LÖVE2D

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.

Editor Latihan

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.