تصور کنید در برابر غولی ایستادهاید که هر حرکتش دقیقاً طبق یک برنامهٔ مهندسیشده است، اما شما را متقاعد میکند که با یک موجود متفکر میجنگید. راز این تجربه، نه در شبکههای عصبی پیچیده، بلکه در یک ساختار کلاسیک علوم کامپیوتر نهفته است.
طبق گزارش منتشر شده در ۲۳ ژوئن ۲۰۲۶ توسط nega.tv، هوش مصنوعی بازی Elden Ring بر پایه سیستمی از «اهداف» (Goals) اجرا شده است که با استفاده از Havok Script (یک پیادهسازی از زبان Lua برای بازیها) مدیریت میشود. این تحلیل بر اساس مهندسی معکوس و دکامپایل کدهای بازی توسط پژوهشگران مستقل صورت گرفته است.
برای گیمرها و توسعهدهندگان، شهرت سری Soulsborne معمولاً یادآور هوش مصنوعی پیشرفته است. اما در واقعیت، این بازی از پشتهای از وضعیتها استفاده میکند که شبیه به اتوماتون با پشته (Pushdown Automata یا PDA) — مثل یک دسته بشقاب که فقط بشقاب رویی فعال است و بقیه منتظر میمانند — عمل میکند. این انتخاب اجازه میدهد طراحان برخوردهای پیشبینیپذیر اما متنوعی را خلق کنند که برای بازیکن ارگانیک به نظر برسد، بدون اینکه با نوسانات و خطاهای برنامهریزهای سطح بالای هوش مصنوعی مواجه شوند. این رویکرد دقیقاً نقطه مقابل مدلهای احتمالی مدرن است که در تحلیل ما درباره ناپایداری در عاملهای هوش مصنوعی و اثر نمونهبرداری توکنها بررسی شد، جایی که عدم قطعیت میتواند منجر به رفتارهای غیرمنتظره شود.
همانطور که در تحلیلهای پیشین ما دربارهی معماری موتورهای بازیسازی اشاره کردیم، تعادل بین کنترل طراح و آزادی عمل مدل، کلید تجربه کاربری است. در Elden Ring، وقتی یک باس تصمیم به حمله میگیرد، یک «هدف» جدید را روی پشته میاندازد. به محض پایان یا شکست آن حمله، آن لایه حذف شده و باس به وضعیت قبلی خود باز میگردد. این سلسلهمراتب تضمین میکند که هوش مصنوعی همیشه دقیقاً میداند در کجای توالی combat قرار دارد.
مکانیسمهای پشته اهداف
قلب این سیستم، «هدف» است؛ جدولی از توابع تغییرناپذیر که وضعیت خاصی را نمایش میدهد. برخلاف ماشینهای وضعیت متناهی (FSM) استاندارد، پشته اهداف اجازه میدهد زیر-اهداف (Sub-goals) بهصورت تو در تو قرار بگیرند و سیستم را به یک PDA واقعی تبدیل کنند. هر هدف در هر فریم بهروزرسانی میشود و یکی از سه مقدار زیر را برمیگرداند:
- ادامه (Continue): پشته بدون تغییر باقی میماند.
- موفقیت (Success): هدف فعلی حذف (pop) شده و سیستم به هدف والد باز میگردد.
- شکست (Failure): هدف فعلی و تمام زیر-اهداف اجرا نشده حذف میشوند تا سیستم به هدف والد برسد.
برای مثال، هدف «CoolBossBattle» ممکن است مجموعهای از زیر-اهداف حمله را فعال کند. اگر اولین حمله با موفقیت بخورد، حذف شده و هدف بعدی اجرا میشود. اما اگر حملهای شکست بخورد، پشته تا والد باز میگردد و باس اقدام جدیدی — مثلاً دو حمله سریع با L1 — را جایگزین میکند.
تصادفیسازی وزندار و فعالسازها
بیشتر منطق هوش مصنوعی در بازگشتی (callback) «activate» قرار دارد. این تابع تعیین میکند که حرکت بعدی بر اساس بستر جهان، دادههای Actor و اعداد تصادفی چه باشد. FromSoftware از یک فرآیند انتخاب تصادفی وزندار استفاده میکند. به نقل از مستندات تحلیل شده، وزنها بر اساس فاصله بازیکن تغییر میکنند:
- فاصله بیشتر از ۶.۰ واحد: احتمال اجرای ضربات دوربرد بالا میرود.
- فاصله بین ۱.۵ تا ۶.۰ واحد: تمرکز روی کمبوهای سبک (Light-attack combo) میشود.
- فاصله کمتر از ۱.۵ واحد: احتمال اجرای ضربه زمینی (Ground slam) به ۴۰٪ میرسد.
همچنین سیستم «زمان بازیابی» (Cooldown) را چک میکند؛ اگر انیمیشن خاصی (مثلاً R2 با ۱۰ ثانیه کولداون) بهتازگی اجرا شده باشد، وزن آن به ۰ میرسد تا باس مدام یک حرکت را تکرار نکند.
مدیریت وقفهها و محرکها
برای اینکه NPCها واکنشگرا به نظر برسند، سیستم از «وقفهها» (Interrupts) استفاده میکند. وقفهها بهصورت زنجیرهای به سمت بالا حرکت میکنند تا زمانی که یکی از اهداف، رویداد را مصرف کند و مقدار «true» برگرداند. این مکانیسم رفتارهای «شرورانه» را ایجاد میکند:
- فعالسازی اثر ویژه: اگر باس آتش بگیرد، تمام زیر-اهداف پاک شده و توالی سریع حملات R1 و R2 جایگزین میشود.
- استفاده از آیتم: اگر بازیکن آیتمی مصرف کند، باس ۵۰٪ احتمال دارد حمله فعلی را متوقف کرده و یک کمبو سریع بزند.
- دریافت آسیب: در فاصله کمتر از ۱ واحد، احتمال ۸۰ درصدی وجود دارد که باس بلافاخه ضربه زمینی بزند.
یکی از بدنامترین نمونهها، Bell Bearing Hunter است که با احتمال ۸۵٪، به محض تشخیص cast کردن جادو یا استفاده از آیتم توسط بازیکن، حرکت فعلی خود را قطع کرده و حمله میکند.
مناطق دید و محدودیت زمانی
بهجز وقفهها، هوش مصنوعی از «مناطق دید» (Watch Regions) استفاده میکند. اینها نواحی خاصی (مثل پشت یا زیر باس) هستند که به محض ورود بازیکن، وقفهای را فعال میکنند تا بازیکن نتواند با ایستادن در نقاط کور، باس را دور بزند.
برای جلوگیری از گیر کردن هوش مصنوعی در یک وضعیت، هر هدف یک مقدار «عمر» (Lifetime) به ثانیه دارد. اگر وضعیتی بیش از حد طول بکشد، عمر آن تمام شده و حلقه شکسته میشود تا بازی دچار باگ نشود.
خط لوله انیمیشن و ذخیرهسازی
در حالی که هوش مصنوعی مدرن از Blackboard برای ذخیره دادهها استفاده میکند، Elden Ring صرفاً از یک آرایه از اعداد اعشاری (floats) روی هر Actor استفاده میکند. اجرای نهایی کاملاً انیمیشن-محور است؛ یعنی هوش مصنوعی مستقیماً شخصیت را حرکت نمیدهد، بلکه دستور «این انیمیشن را پخش کن» صادر میکند. این انیمیشنها حاوی اطلاعات Hitbox، زمانبندی و نقاط اتصال کمبوها هستند.
از نظر معماری، سیستم به دو بخش تقسیم شده است:
- اسکریپتهای منطق: کدهای عمومی و مشترک برای اکثر NPCها.
- اسکریپتهای نبرد: کدهای اختصاصی برای هر باس.
برای حفظ عملکرد، اهداف سنگین مثل «حمله» و «حرکت» در ++C پیاده شدهاند، در حالی که ارکستراسیون سطح بالا در Lua باقی مانده است. کل این مجموعه بر پایه میانافزار Havok (برای انیمیشن، فیزیک و مسیریابی) بنا شده است.
تحلیل: پیروزی کنترل طراح بر خودمختاری
این معماری حقیقتی بنیادین درباره طراحی بازی را فاش میکند: «درک هوشمندی» برای بازیکن بسیار مهمتر از «خودمختاری واقعی» مدل است. با استفاده از PDA بهجای سیستمهای برنامهریزی هدفمحور (GOAP)، FromSoftware از الگوریتمهای جستوجوی گرانقیمت اجتناب کرده است.
در حالی که درختهای رفتار (Behavior Trees) نیاز به ارزیابی مجدد کل درخت در هر فریم دارند، یک PDA فقط هدف روی پشته را اجرا میکند. این موضوع باعث میشود نرخ فریم بازی حتی با حضور چندین NPC پیچیده، بالا بماند.
در نهایت، این رویکرد قدرت را در دست طراحان مبارزه و انیماتورها نگه میدارد. دشواری بازی از یادگیری الگوها میآید، نه جنگیدن با یک جعبه سیاه غیرقابلپیشبینی. این تبدیل مبارزات را به یک پازل تبدیل میکند که راه حل آن زمانبندی و جایگذاری درست است.
گام بعدی شما
- اگر توسعهدهنده بازی هستید، ساختار PDA را برای مدیریت وضعیتهای تو در تو امتحان کنید تا از پیچیدگی FSMهای بزرگ摆 خلاص شوید.
- در تحلیلهای بعدی، اثر جایگزینی این سیستمها با مدلهای استدلالی کوچک را در بازیهای نسل نهم بررسی خواهیم کرد.
اما داستان سختافزاری این تحول حتی شگفتانگیزتر است — به تحلیل ما دربارهی تراشههای Blackwell مراجعه کنید.




گفتگو