Skrip Berbasis Komponen
Rancang entitas gim sebagai tabel dengan komponen perilaku dalam Lua.
Skrip Berbasis Komponen adalah pelajaran Lua Academy gratis di CoddyKit. Ini adalah pelajaran 2 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 Desain Berbasis Komponen
Alih-alih hierarki kelas yang dalam, entitas tersusun dari komponen — tabel kecil yang berfokus pada data dan perilaku tertentu. Entitas hanyalah kumpulan komponen.
Entitas sebagai Tabel
Entitas adalah tabel dengan id dan sub-tabel components. Komponen dapat ditambahkan dan dihapus saat program berjalan.
local function newEntity(id)
return {id = id, components = {}}
end
local player = newEntity(1)Menambahkan Komponen
Pasang komponen dengan menetapkan kunci bernama di dalam tabel komponen.
player.components.position = {x=0, y=0}
player.components.health = {hp=100, max=100}
player.components.sprite = {image="player.png", scale=1}Sistem Memproses Komponen
Sistem memproses semua entitas yang memiliki sekumpulan komponen yang diperlukan. Sistem melakukan iterasi pada entitas dan memperbarui data komponen.
local function moveSystem(entities, dt)
for _, e in ipairs(entities) do
local pos = e.components.position
local vel = e.components.velocity
if pos and vel then
pos.x = pos.x + vel.dx * dt
pos.y = pos.y + vel.dy * dt
end
end
endSkrip Komponen
Pasang fungsi Lua sebagai perilaku komponen — bentuk sederhana pembuatan skrip untuk setiap entitas.
player.components.ai = {
update = function(self, entity, dt)
-- move towards target
end
}Registri Komponen
Registri memetakan nama jenis komponen ke fungsi pabrik, sehingga komponen dapat dibuat berdasarkan nama (misalnya, dari berkas level).
local registry = {}
function registry.register(name, factory)
registry[name] = factory
end
function registry.create(name, ...)
return registry[name](...)
endMenghapus Komponen
Atur komponen menjadi nil untuk menghapusnya. Setelah itu, entitas akan diabaikan oleh sistem yang memerlukannya.
player.components.health = nil -- entity is "dead"Pengelola Dunia dan Entitas
Objek World menyimpan semua entitas dan sistem, melakukan iterasi pada sistem setiap tick, serta menyediakan API kueri entitas.
Mencari Entitas Berdasarkan Komponen
Sediakan fungsi kueri yang mengembalikan semua entitas yang memiliki seluruh komponen yang ditentukan.
local function query(world, ...)
local required = {...}
local result = {}
for _, e in ipairs(world.entities) do
local ok = true
for _, comp in ipairs(required) do
if not e.components[comp] then ok = false; break end
end
if ok then result[#result+1] = e end
end
return result
endPracetak
Pracetak adalah tabel templat yang berisi komponen. Buat entitas baru dari pracetak dengan menyalin templat secara mendalam.
Keunggulan dibanding Pewarisan
- Tidak ada hierarki yang dalam.
- Perilaku dapat dicampurkan saat program berjalan.
- Fitur mudah ditambahkan atau dihapus.
- Data digerakkan oleh berkas konfigurasi.
Pertanyaan tentang Desain Komponen
Dalam desain berbasis komponen, apa yang dilakukan oleh Sistem?
Ringkasan: Pembuatan Skrip Berbasis Komponen
Entitas adalah tabel komponen. Sistem memproses entitas yang memiliki komponen yang diperlukan. Arsitektur yang terpisah dan digerakkan oleh data ini lebih fleksibel daripada hierarki pewarisan yang dalam, serta bekerja secara alami di Lua.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Skrip Berbasis Komponen” gratis?
Ya — teks lengkap “Skrip Berbasis Komponen” 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 “Skrip Berbasis Komponen”?
Rancang entitas gim sebagai tabel dengan komponen perilaku dalam Lua. 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 2 dari 4.
Berapa lama pelajaran “Skrip Berbasis Komponen” 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.
Semua pelajaran dalam kursus ini
- Sistem Peristiwa dalam Lua
- Skrip Berbasis Komponen
- Perilaku Kecerdasan Buatan dengan Mesin Keadaan
- Konfigurasi Berbasis Data dan Muat Ulang Langsung