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.
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.