Lua Academy · पाठ

कंपोनेंट-आधारित स्क्रिप्टिंग

Lua में गेम एंटिटी को व्यवहार वाले कंपोनेंट की टेबल के रूप में डिज़ाइन करें।

पाठ 2, कुल 4 में से13 चरण

कंपोनेंट-आधारित स्क्रिप्टिंग, CoddyKit पर Lua Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह Lua Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Lua Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

घटक-आधारित डिज़ाइन क्या है

गहरी क्लास पदानुक्रमों के बजाय, एंटिटी को घटकों से संयोजित किया जाता है — ये डेटा और व्यवहार वाली छोटी, केंद्रित तालिकाएँ होती हैं। एंटिटी बस घटकों का एक संग्रह है।

तालिका के रूप में एंटिटी

एंटिटी एक तालिका होती है, जिसमें id और components नामक उप-तालिका होती है। घटक रनटाइम पर जोड़े और हटाए जा सकते हैं।

local function newEntity(id)
  return {id = id, components = {}}
end
local player = newEntity(1)

घटक जोड़ना

घटक तालिका में नामित कुंजी सेट करके कोई घटक संलग्न करें।

player.components.position = {x=0, y=0}
player.components.health   = {hp=100, max=100}
player.components.sprite   = {image="player.png", scale=1}

प्रणालियाँ घटकों का प्रसंस्करण करती हैं

प्रणाली उन सभी एंटिटी का प्रसंस्करण करती है जिनमें आवश्यक घटकों का सेट मौजूद हो। प्रणालियाँ एंटिटी पर चलकर घटक डेटा को अद्यतन करती हैं।

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
end

घटक स्क्रिप्ट

Lua फ़ंक्शन को घटक के व्यवहार के रूप में संलग्न करें — यह हर एंटिटी के लिए स्क्रिप्टिंग का एक सरल रूप है।

player.components.ai = {
  update = function(self, entity, dt)
    -- move towards target
  end
}

घटक रजिस्ट्री

रजिस्ट्री घटक प्रकार के नामों को फ़ैक्टरी फ़ंक्शन से जोड़ती है, जिससे नाम के आधार पर घटक बनाए जा सकते हैं, जैसे किसी स्तर की फ़ाइल से।

local registry = {}
function registry.register(name, factory)
  registry[name] = factory
end
function registry.create(name, ...)
  return registry[name](...)
end

घटक हटाना

घटक को हटाने के लिए उसे nil पर सेट करें। इसके बाद जिन प्रणालियों को वह घटक आवश्यक है, वे उस एंटिटी को अनदेखा कर देंगी।

player.components.health = nil  -- entity is "dead"

विश्व और एंटिटी प्रबंधक

World ऑब्जेक्ट सभी एंटिटी और प्रणालियों को संग्रहीत करता है, हर टिक पर प्रणालियों पर चलता है और एंटिटी की खोज के लिए एपीआई उपलब्ध कराता है।

घटक के आधार पर एंटिटी खोजना

ऐसा क्वेरी फ़ंक्शन उपलब्ध कराएँ जो निर्दिष्ट सभी घटकों वाली एंटिटी लौटाए।

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

पूर्वनिर्मित रूप

पूर्वनिर्मित रूप घटकों की एक टेम्पलेट तालिका होती है। टेम्पलेट की गहरी प्रतिलिपि बनाकर उससे नई एंटिटी बनाएँ।

विरासत पर लाभ

  • गहरी पदानुक्रम नहीं होतीं।
  • व्यवहार रनटाइम पर मिलाया जा सकता है।
  • सुविधाएँ जोड़ना या हटाना आसान होता है।
  • कॉन्फ़िगरेशन फ़ाइलों से डेटा-आधारित संरचना मिलती है।

घटक डिज़ाइन का प्रश्न

घटक-आधारित डिज़ाइन में प्रणाली क्या करती है?

पुनरावलोकन: घटक-आधारित स्क्रिप्टिंग

एंटिटी घटकों की तालिकाएँ होती हैं। प्रणालियाँ आवश्यक घटकों वाली एंटिटी का प्रसंस्करण करती हैं। यह स्वतंत्र और डेटा-आधारित संरचना गहरी विरासत पदानुक्रमों से अधिक लचीली है और Lua में स्वाभाविक रूप से काम करती है।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Lua सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
40
पाठ
159

अक्सर पूछे जाने वाले प्रश्न

क्या “कंपोनेंट-आधारित स्क्रिप्टिंग” पाठ निःशुल्क है?

हाँ — Lua Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “कंपोनेंट-आधारित स्क्रिप्टिंग” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। Lua Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“कंपोनेंट-आधारित स्क्रिप्टिंग” में मैं क्या सीखूँगा?

Lua में गेम एंटिटी को व्यवहार वाले कंपोनेंट की टेबल के रूप में डिज़ाइन करें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Lua Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Lua Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Lua Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।

“कंपोनेंट-आधारित स्क्रिप्टिंग” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Lua Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Lua Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. Lua में इवेंट सिस्टम
  2. कंपोनेंट-आधारित स्क्रिप्टिंग
  3. स्टेट मशीनों के साथ कृत्रिम बुद्धिमत्ता का व्यवहार
  4. डेटा-आधारित कॉन्फ़िगरेशन और हॉट-रीलोड
← Lua Academy पर वापस जाएँ