Loop Gim LOVE
load, update, dan draw.
Loop Gim LOVE adalah pelajaran Lua Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Lua Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Lua Academy mencakup 4 pelajaran total.
Apa Itu LÖVE
LÖVE (juga ditulis love2d) adalah kerangka kerja gratis yang memungkinkan Anda membuat permainan 2D hanya dengan Lua murni. Anda menulis fungsi panggil balik, lalu mesin memanggilnya untuk Anda.
Permainan LÖVE berada dalam sebuah folder yang berisi berkas main.lua. Jalankan permainan dengan love . dari folder tersebut, lalu mesin akan membuka jendela dan memulai perulangan.
Tiga Fungsi Panggil Balik Inti
LÖVE menjalankan permainan Anda melalui tiga fungsi panggil balik yang Anda definisikan dalam main.lua: love.load, love.update, dan love.draw.
Anda tidak memanggilnya sendiri. Mesin memanggil love.load sekali, lalu mengulangi love.update dan love.draw pada setiap bingkai selama permainan berjalan.
function love.load() end
function love.update(dt) end
function love.draw() endlove.load: Penyiapan Sekali Saja
love.load berjalan tepat satu kali ketika permainan dimulai. Gunakan fungsi ini untuk menyiapkan status: memuat gambar dan font, membuat tabel, serta menginisialisasi variabel sebelum perulangan dimulai.
Operasi yang membutuhkan banyak sumber daya sebaiknya dilakukan di sini, bukan di dalam love.update atau love.draw, agar tidak diulangi pada setiap bingkai.
function love.load()
player = { x = 100, y = 100, speed = 200 }
score = 0
endlove.update: Logika Permainan
love.update(dt) berjalan sekali pada setiap bingkai dan berisi logika permainan Anda: memindahkan objek, memeriksa tabrakan, memperbarui pengatur waktu, serta membaca status masukan.
Argumen dt adalah waktu delta, yaitu jumlah detik yang berlalu sejak bingkai sebelumnya. Anda tidak boleh menggambar di dalam update; lakukan semua penggambaran di love.draw.
function love.update(dt)
player.x = player.x + player.speed * dt
endMengapa dt Penting
Laju bingkai berbeda-beda di setiap mesin. Jika Anda memindahkan objek dengan jumlah tetap pada setiap bingkai, komputer yang cepat akan menggerakkan objek lebih cepat daripada komputer yang lambat.
Mengalikan dengan dt membuat gerakan tidak bergantung pada laju bingkai. speed * dt berarti "satuan kecepatan per detik", sehingga objek menempuh jarak yang sama terlepas dari jumlah bingkai yang dirender.
-- 200 pixels per second, on any machine
player.x = player.x + 200 * dtlove.draw: Penggambaran
love.draw berjalan sekali pada setiap bingkai setelah love.update. Semua yang Anda lihat di layar digambar di sini menggunakan modul love.graphics.
Layar dikosongkan secara otomatis sebelum setiap pemanggilan draw, jadi Anda menggambar ulang seluruh adegan pada setiap bingkai berdasarkan status permainan saat ini.
function love.draw()
love.graphics.rectangle('fill', player.x, player.y, 32, 32)
endPerulangan Lengkap secara Bersama
Gabungkan fungsi-fungsi panggil balik tersebut dan Anda memiliki permainan lengkap: load menyiapkan pemain, update memindahkannya menggunakan dt, dan draw menggambarkannya.
Siklus load-update-draw ini adalah denyut nadi setiap permainan LÖVE, seberapa pun kompleks permainan tersebut nantinya.
function love.load() x = 0 end
function love.update(dt) x = x + 100 * dt end
function love.draw()
love.graphics.circle('fill', x, 150, 20)
endMembaca Jam
Akumulasikan dt untuk membuat pengatur waktu. Pola yang umum adalah menjumlahkan waktu yang berlalu dan melakukan tindakan ketika jumlahnya melewati ambang, lalu mengurangkan kembali nilai ambang tersebut.
Cara ini lebih andal daripada menghitung bingkai, karena jumlah bingkai bergantung pada perangkat keras, sedangkan dt melacak detik yang sebenarnya.
timer = 0
function love.update(dt)
timer = timer + dt
if timer >= 1 then
score = score + 1
timer = timer - 1
end
endlove.run dan Mekanisme Internal Perulangan
Di balik layar, love.run adalah perulangan utama yang sebenarnya. Fungsi ini memanggil love.load sekali, lalu berulang tanpa batas: memproses peristiwa, menghitung dt, memanggil update dan draw Anda, kemudian menampilkan bingkai.
Anda hampir tidak pernah mengganti love.run, tetapi mengetahui keberadaannya membantu menjelaskan asal dt dan fungsi-fungsi panggil balik tersebut.
-- simplified idea of love.run
-- love.load()
-- while true do
-- dt = timer.step()
-- love.update(dt)
-- love.draw()
-- endlove.quit dan Siklus Hidup
LÖVE juga menyediakan fungsi panggil balik siklus hidup selain tiga fungsi inti. love.quit dijalankan ketika pemain menutup jendela, sehingga Anda dapat menyimpan kemajuan.
Mengembalikan true dari love.quit membatalkan penutupan. Fungsi panggil balik lain seperti love.focus dan love.resize merespons peristiwa jendela.
function love.quit()
print('Saving before exit...')
return false -- false lets the game close
endMenjeda Permainan
Karena love.update menggerakkan seluruh logika, menjeda permainan menjadi mudah: lindungi logika Anda dengan sebuah penanda dan lewati logika tersebut ketika permainan dijeda.
Penggambaran tetap berjalan, sehingga Anda dapat menampilkan lapisan jeda. Pemisahan update dari draw inilah yang membuat desain perulangan sangat fleksibel.
paused = false
function love.update(dt)
if paused then return end
player.x = player.x + player.speed * dt
endPemeriksaan Singkat
Uji pemahaman Anda tentang perulangan permainan LÖVE.
Ringkasan
LÖVE menjalankan permainan Anda melalui fungsi panggil balik: love.load melakukan penyiapan sekali, love.update(dt) menangani logika pada setiap bingkai, dan love.draw menggambar pada setiap bingkai.
Nilai dt membuat gerakan tidak bergantung pada laju bingkai, sedangkan fungsi panggil balik siklus hidup seperti love.quit melengkapi perulangan. Siklus ini menggerakkan setiap permainan love2d.
Belajar Lua dengan tutor AI — gratis
Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.
- Kursus
- 40
- Pelajaran
- 159
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Loop Gim LOVE” gratis?
Ya — teks lengkap “Loop Gim LOVE” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Lua Academy, upgrade ke CoddyKit PRO. Kursus Lua Academy mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Loop Gim LOVE”?
load, update, dan draw. Kamu berlatih Lua Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Lua Academy?
Tidak diperlukan pengalaman sebelumnya. Lua Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 4.
Berapa lama pelajaran “Loop Gim LOVE” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Lua Academy ini?
Ya. Setiap pelajaran Lua Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.