Bileşen Tabanlı Betikleme
Oyun varlıklarını Lua'da davranış bileşenleri içeren tablolar olarak tasarlayın.
Bileşen Tabanlı Betikleme, CoddyKit'te ücretsiz bir Lua Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Lua Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Lua Academy kursu toplamda 4 dersten oluşur.
Bileşen Tabanlı Tasarım Nedir?
Derin sınıf hiyerarşileri yerine varlıklar, küçük ve belirli amaçlara odaklanan veri ve davranış tabloları olan bileşenlerden oluşturulur. Bir varlık yalnızca bileşenler koleksiyonudur.
Tablo Olarak Varlık
Bir varlık, id ve components alt tablosu bulunan bir tablodur. Bileşenler çalışma zamanında eklenip kaldırılır.
local function newEntity(id)
return {id = id, components = {}}
end
local player = newEntity(1)Bileşen Ekleme
Bileşenler tablosunda adlandırılmış bir anahtar ayarlayarak bileşen ekleyin.
player.components.position = {x=0, y=0}
player.components.health = {hp=100, max=100}
player.components.sprite = {image="player.png", scale=1}Sistemler Bileşenleri İşler
Bir sistem, gerekli bileşenlerden oluşan kümenin tamamına sahip tüm varlıkları işler. Sistemler varlıklar üzerinde yineleme yapar ve bileşen verilerini günceller.
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
endBileşen Betikleri
Lua işlevlerini bileşen davranışı olarak ekleyin; bu, varlık başına basit bir betik oluşturma biçimidir.
player.components.ai = {
update = function(self, entity, dt)
-- move towards target
end
}Bileşen Kayıt Defteri
Bir kayıt defteri, bileşen türü adlarını üretici işlevlere eşler ve bileşenlerin adlarına göre oluşturulmasını sağlar (örneğin bir bölüm dosyasından).
local registry = {}
function registry.register(name, factory)
registry[name] = factory
end
function registry.create(name, ...)
return registry[name](...)
endBileşenleri Kaldırma
Bileşeni kaldırmak için değerini nil olarak ayarlayın. Varlık bundan sonra, bu bileşeni gerektiren sistemler tarafından yok sayılır.
player.components.health = nil -- entity is "dead"Dünya ve Varlık Yöneticisi
Bir World nesnesi tüm varlıkları ve sistemleri depolar, her işlem adımında sistemler üzerinde yineleme yapar ve varlık sorgulama arayüzleri sunar.
Varlıkları Bileşene Göre Sorgulama
Belirtilen bileşenlerin tümüne sahip varlıkları döndüren bir sorgu işlevi sağlayın.
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
endÖn Tanımlar
Ön tanım, bileşenlerden oluşan bir şablon tablosudur. Şablonu derin kopyalayarak ön tanımlardan yeni varlıklar oluşturun.
Kalıtıma Göre Avantajları
- Derin hiyerarşiler yoktur.
- Davranış çalışma zamanında birleştirilir.
- Özellik eklemek ve kaldırmak kolaydır.
- Yapılandırma dosyalarındaki veriler temel alınır.
Bileşen Tasarımı Sorusu
Bileşen tabanlı tasarımda bir Sistem ne yapar?
Özet: Bileşen Tabanlı Betik Oluşturma
Varlıklar bileşen tablolarıdır. Sistemler, gerekli bileşenlere sahip varlıkları işler. Bu gevşek bağlı, veri odaklı mimari derin kalıtım hiyerarşilerinden daha esnektir ve Lua ile doğal biçimde çalışır.
Sıkça Sorulan Sorular
“Bileşen Tabanlı Betikleme” dersi ücretsiz mi?
Evet — “Bileşen Tabanlı Betikleme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Lua Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Lua Academy kursu toplamda 4 dersten oluşur.
“Bileşen Tabanlı Betikleme” dersinde ne öğreneceğim?
Oyun varlıklarını Lua'da davranış bileşenleri içeren tablolar olarak tasarlayın. Lua Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Lua Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Lua Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Bileşen Tabanlı Betikleme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Lua Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Lua Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Lua'da Olay Sistemleri
- Bileşen Tabanlı Betikleme
- Durum Makineleriyle Yapay Zeka Davranışı
- Veri Odaklı Yapılandırma ve Sıcak Yeniden Yükleme