0Pricing
Lua Academy · درس

سلوك الذكاء الاصطناعي باستخدام آلات الحالات

نفّذ منطق ذكاء اصطناعي للعدو قائمًا على FSM بالكامل في نصوص Lua

سلوك الذكاء الاصطناعي باستخدام آلات الحالات درس مجاني في Lua Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Lua Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Lua Academy 4 دروس في المجموع.

ما آلة الحالات المحدودة؟

تحدّد آلة الحالات المحدودة (FSM) السلوك على أنه مجموعة من الحالات مع انتقالات بينها، تُفعَّل بواسطة الشروط أو الأحداث.

بنية جدول FSM

مثّلوا FSM بجدول يحتوي على الحالة الحالية وجدول الحالات، مع دوال استدعاء اختيارية للدخول والخروج والتحديث لكل حالة.

local function newFSM(initialState)
  return {
    current = initialState,
    states  = {},
  }
end

تعريف الحالات

كل حالة جدول يحتوي على دوال اختيارية هي enter وupdate وexit.

local fsm = newFSM("idle")
fsm.states.idle = {
  enter  = function(self) print("Enter idle") end,
  update = function(self, dt)
    if self.enemy then self:transition("chase") end
  end,
  exit   = function(self) print("Exit idle") end
}

إضافة حالة المطاردة

تطارد حالة المطاردة اللاعب، وتنتقل إلى الهجوم عند الاقتراب بما يكفي.

fsm.states.chase = {
  enter = function(self) print("Chasing!") end,
  update = function(self, dt)
    if self.distToPlayer < 2 then
      self:transition("attack")
    elseif not self.enemy then
      self:transition("idle")
    end
  end
}

دالة الانتقال

يستدعي الانتقال دالة الخروج للحالة الحالية، ثم يغيّر الحالة، وبعد ذلك يستدعي دالة الدخول للحالة الجديدة.

function fsm:transition(newState)
  local cur = self.states[self.current]
  if cur and cur.exit then cur:exit() end
  self.current = newState
  local next = self.states[newState]
  if next and next.enter then next:enter() end
end

تحديث FSM

استدعوا fsm:update(dt) في كل نبضة من نبضات اللعبة لتشغيل منطق تحديث الحالة الحالية.

function fsm:update(dt)
  local state = self.states[self.current]
  if state and state.update then
    state:update(dt)
  end
end

آلات الحالات الهرمية

يمكن أن تحتوي الحالات على آلات FSM متداخلة. تتولى الحالة الأصلية السلوك العام، مثل القتال مقابل الدوريات، بينما تتولى آلات الحالات الفرعية التفاصيل داخل كل حالة أصلية.

آلات FSM القائمة على البيانات

حدّدوا انتقالات FSM في صورة جداول بيانات تُحمَّل من ملفات الإعداد. يتيح ذلك للمصممين ضبط الذكاء الاصطناعي دون تعديل الشيفرة.

local transitions = {
  idle  = {seeEnemy = "chase"},
  chase = {lostEnemy = "idle", nearEnemy = "attack"},
  attack = {enemyDead = "idle"},
}

آلات الحالات المكدّسة

تسمح مكدّسة الحالات بدفع حالات مؤقتة، مثل "stunned"، فوق الحالة الحالية، ثم استئنافها عند انتهاء الحالة المؤقتة.

عوامل الذكاء الاصطناعي المتعددة

يملك كل كيان عدو مثيل FSM خاصًا به، ولذلك يعمل الذكاء الاصطناعي لكل كيان بصورة مستقلة. وهذا سهل باستخدام جداول Lua وعمليات الإغلاق.

تصحيح أخطاء FSM

سجّلوا جميع الانتقالات أثناء التطوير. يخزّن جدول التتبّع {from, to, time} لتحليل سلوك الذكاء الاصطناعي بعد وقوع المشكلة.

سؤال حول FSM

ما الذي يفعّل انتقال الحالة في FSM؟

مراجعة: الذكاء الاصطناعي باستخدام آلات الحالات

تستخدم FSMs في Lua جدولًا من كائنات الحالات، يضم دوال الدخول والتحديث والخروج، مع دالة انتقال. وهي تفصل اهتمامات الذكاء الاصطناعي بوضوح، وتدعم التصميم القائم على البيانات، وتتوسع من عقول الأعداء البسيطة إلى أشجار السلوك الهرمية المعقدة.

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

هل درس «سلوك الذكاء الاصطناعي باستخدام آلات الحالات» مجاني؟

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

ماذا ستتعلم في «سلوك الذكاء الاصطناعي باستخدام آلات الحالات»؟

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

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

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

كم من الوقت يستغرق درس «سلوك الذكاء الاصطناعي باستخدام آلات الحالات»؟

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

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

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

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

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