Study
LÖVE2D

Save/Load Data dengan love.filesystem

Penjelasan

LÖVE2D membatasi akses file lewat modul `love.filesystem` demi keamanan — game hanya bisa menulis ke folder save data khusus milik OS (bukan sembarang lokasi disk), diakses dengan `love.filesystem.write()` dan `love.filesystem.read()`. Ini berbeda dari file asset yang read-only di folder project. Untuk data terstruktur seperti save game (skor, level, inventory), pola umum adalah mengonversi tabel Lua ke string (misalnya format sederhana atau JSON via library tambahan) sebelum ditulis, lalu mem-parsing kembali string tersebut jadi tabel saat load.

Contoh Konsep

local function simpanGame(data)
    local isi = "skor=" .. data.skor .. "\nlevel=" .. data.level
    love.filesystem.write("save.txt", isi)
end

local function muatGame()
    if love.filesystem.getInfo("save.txt") then
        local isi = love.filesystem.read("save.txt")
        local skor = tonumber(isi:match("skor=(%d+)"))
        local level = tonumber(isi:match("level=(%d+)"))
        return { skor = skor, level = level }
    end
    return nil
end

function love.keypressed(key)
    if key == "s" then
        simpanGame({ skor = 500, level = 3 })
    end
end

Praktikum

Buat fungsi simpanNamaPemain(nama) yang menulis nama ke file "profil.txt", dan fungsi muatNamaPemain() yang membaca kembali nama tersebut kalau file ada.

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Selalu cek keberadaan file dengan `love.filesystem.getInfo(namafile)` sebelum membacanya, supaya game tidak error saat dijalankan pertama kali dan belum ada save file.