سلوك الذكاء الاصطناعي باستخدام آلات الحالات
نفّذ منطق ذكاء اصطناعي للعدو قائمًا على 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 يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- أنظمة الأحداث في Lua
- البرمجة النصية المعتمدة على المكوّنات
- سلوك الذكاء الاصطناعي باستخدام آلات الحالات
- الإعداد المعتمد على البيانات وإعادة التحميل الفوري