0Pricing
Lua Academy · درس

البرمجة النصية المعتمدة على المكوّنات

صمّم كيانات اللعبة بوصفها جداول تحتوي على مكوّنات سلوكية في Lua

البرمجة النصية المعتمدة على المكوّنات درس مجاني في Lua Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في 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.

الأسئلة الشائعة

هل درس «البرمجة النصية المعتمدة على المكوّنات» مجاني؟

نعم — نص درس «البرمجة النصية المعتمدة على المكوّنات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Lua Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Lua Academy 4 دروس في المجموع.

ماذا ستتعلم في «البرمجة النصية المعتمدة على المكوّنات»؟

صمّم كيانات اللعبة بوصفها جداول تحتوي على مكوّنات سلوكية في Lua تتمرن على Lua Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Lua Academy؟

لا تُشترط خبرة سابقة. Lua Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «البرمجة النصية المعتمدة على المكوّنات»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Lua Academy هذا؟

نعم. كل درس في Lua Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. أنظمة الأحداث في Lua
  2. البرمجة النصية المعتمدة على المكوّنات
  3. سلوك الذكاء الاصطناعي باستخدام آلات الحالات
  4. الإعداد المعتمد على البيانات وإعادة التحميل الفوري
← العودة إلى Lua Academy