ما هذا
CastlevaniaBot هو البرنامج المساعد
لمحاكي NES Nintaco الذي يلعب في Castlevania. إذا قمت بتشغيله على شاشة البداية ، فسوف يمر البرنامج المساعد باللعبة بأكملها من البداية إلى النهاية. أو يمكنك تشغيله في أي مكان في اللعبة بحيث يمر جزء منه.
في هذه المقالة ، سأخبرك عن كيفية إنشاء روبوت قادر على اجتياز Castlevania ، وكيف يمكنك إنشاء شيء مشابه لأي لعبة على NES.
هيكل قائم على المعرفة
هذا المشروع لم يستخدم التعلم الآلي. بدلا من ذلك ، يمكن أن يسمى التنمية "التعلم الآلي". أنا أعرف كيفية اجتياز Castlevania. كانت الصعوبة في كتابة معرفتي في برنامج الكمبيوتر. كانت النتيجة نظامًا يحاكي نفس عملية صنع القرار التي أجريها مع وحدة التحكم في يدي. لإنشائها ، كان من الضروري أن توضح بوضوح التفاصيل التفصيلية للفيزياء التي تتحكم في عالم بت سيمون بلمونت ، وجميع التكتيكات اللازمة لصياد مصاص دماء من ذوي الخبرة.
لدى CastlevaniaBot الوصول إلى مجموعة من الاستراتيجيات للتعامل مع مجموعة واسعة من الحالات. تم تصميم معظمها للعمل مع نوع معين من كائنات اللعبة. على سبيل المثال ، هناك إستراتيجية للتحكم في الهيكل العظمي ، وإستراتيجية أخرى لأشخاص الأسماك ، وكسر الشموع ، وجمع القلوب ، وما إلى ذلك.
تقوم CastlevaniaBot بمراقبة حالة اللعبة باستمرار ، وإذا لزم الأمر ، تقوم بالتبديل بين الاستراتيجيات المختلفة. في عملية صنع القرار ، يتم استخدام وظيفة اللياقة البدنية ، لتصنيف جميع كائنات اللعبة على الشاشة. في أعلى القائمة ، الهدف الرئيسي ، وعندما يتغير ، يغير الروبوت استراتيجيته. على سبيل المثال ، قد يستعد CastlevaniaBot لضرب الشموع عندما يطير الخفافيش في الإطار. اعتمادًا على المسافة إلى الخفافيش ، قد يتفاعل CastlevaniaBot من خلال التحول من استراتيجية الشموع إلى استراتيجية الخفافيش. تدمير الخفافيش ، وقال انه سوف يستمر في العمل مع الشموع.
قبل أن تقرر التبديل ، تراجع CastlevaniaBot هدفها واستراتيجيتها الحالية. إذا لم ينجح ، فقد يكون عالقًا في دورة لا نهاية لها ، حيث ينتقل جيئة وذهابا بين هدفين لهما أولوية متساوية أو شبه متساوية. لتجنب ذلك ، عندما يظهر هدف رئيسي جديد ، وهو أعلى قليلاً في أولوية الهدف الحالي ، قد يقرر CastlevaniaBot مواصلة الإستراتيجية الحالية.
يتم إطلاق بعض الاستراتيجيات تلقائيًا عند وقوعها في منطقة معينة. عادة ما تكون مخصصة للمعالجة المتزامنة للعديد من كائنات اللعبة. على سبيل المثال ، في أحد الممرات مع مجموعة من رؤوس قنديل البحر المتطايرة ، من الأفضل المضي قدمًا وليس توجيه كل رأس على حدة.
قد تختلف بعض الاستراتيجيات اعتمادًا على السلاح الثانوي الحالي وعدد القلوب التي يتم جمعها ، لا سيما في معارك الرؤساء. تحاول CastlevaniaBot اتخاذ أفضل قرار بناءً على الأدوات التي لديها والوضع الحالي.
التخطيط لعالم 8 بت
عند العمل في مثل هذه المشروعات ، أسعى في المقام الأول إلى تبسيط المهمة. تخيلت كيف سيبدو Castlevania إذا لم يكن هناك أعداء أو شموع أو أشياء لجمعها على المستويات. كل ما نحتاجه في هذه الحالة هو ببساطة الانتقال من البداية إلى نهاية المستوى. تساءلت - إذا كان بإمكاني تعليم الروبوت كيفية القيام بذلك ، فما مدى صعوبة تدمير العديد من الأعداء على طول الطريق؟
لتعليم الروبوت كيفية التحرك ، كنت بحاجة إلى خرائط خلفية متجانسة وفهمًا لكيفية تنظيم المستويات. تتكون اللعبة من ستة مستويات ، ينتهي كل منها برئيس.
ينقسم كل مستوى إلى 3 أو 4 مراحل. عادة ما يتم فصل المراحل عن طريق أبواب خشبية تفتح مع صرير وانتقد وراء ظهر اللاعب.
الأبواب هي نقاط التحكم (نقاط التفتيش). إذا قُتل لاعب ، فسيعود إلى بداية المرحلة ، لكن فقط إذا لم ينه حياته. إذا تابعت اللعبة بعد Game Over ، فسيتم إرسال اللاعب إلى بداية المستوى.
يشير رقم المرحلة إلى إجمالي عدد نقاط التفتيش المكتملة منذ بداية اللعبة. المرحلة الأخيرة هي الرقم 18. ولكن إذا قتلت Dracula ، تبدأ اللعبة من البداية في Difficult Mode ، وتستمر أعداد المراحل في الزيادة إلى 19 وما بعدها. إذا مررت بـ Difficult Mode ، فلن تصبح الدورة الثالثة للعبة أكثر صعوبة ، لكن أعداد المراحل مازالت مستمرة في الزيادة.
تتكون كل مرحلة من واحد أو أكثر من أشرطة التمرير الأفقية في الخلفية ، والتي أسميها "خطوات فرعية". إذا خرجت من الشاشة على طول الدرج المؤدي لأعلى أو لأسفل ، تنتقل اللعبة من مرحلة فرعية إلى أخرى ، ولا تنتقل عموديًا.
تستخدم اللعبة 3 بايت لتتبع رقم دورة اللعبة ورقم المرحلة ورقم المرحلة الفرعية. دورة اللعبة في الوضع العادي (الوضع العادي) لها قيمة 0 ؛ تشير قيم 1 وما فوق إلى الوضع الصعب. بغض النظر عن دورة اللعبة ، يكون للخطوات دائمًا ترقيم من 0 إلى 18. وتكون للخطوات الفرعية دائمًا قيمة 0 أو 1 ، لأن الخطوات لا تحتوي أبدًا على أكثر من خطين أفقيين. CastlevaniaBot المسارات هذه البايتات لمعرفة أين هو.
لراحتك ، قمت بتسجيل شريط الخلفية لكل مرحلة فرعية في ملف رسومي منفصل. إذا كنت بحاجة إلى معرفة الإحداثيات الدقيقة لكائن ما ، فيمكنني تحديد ذلك بسرعة باستخدام محرر رسومي. لقد سجلت الملفات باستخدام أداة مصمم الخرائط المدمجة في Nintaco. قمت بتشغيله ثم مررت باللعبة بأكملها. تحتوي بعض الصور الناتجة على عدة خطوات فرعية متصلة ببعضها البعض ، والتي كان من السهل فصلها.
بعد فحص صور الخلفية ، أدركت أن البلاط المهم الوحيد هو المنصات والسلالم. كل شيء آخر يمكن اعتبار مساحة فارغة. السلالم من نوعين: البادئة للأمام أو للخلف (يمكن تمثيلهما كحافتي اليسار واليمين لمثلث متساوي الساقين). في بعض الأحيان ينتهي الدرج بمنصة يمكن للاعب المشي عليها.
لا يوجد سوى 5 أنواع مهمة من البلاط ، وفي كل مستوى لها مظهر مختلف. قمت بنسخها ولصقها في ملفات صور 16 × 16 منفصلة. بعد ذلك كتبت برنامجًا يقارن كل بلاطة في كل خطوة فرعية بمجموعة الصور المقابلة. لذلك حصلت على أنواع المصفوفة من البلاط لجميع الخطوات الفرعية.
يمكن استخراج المصفوفات مباشرةً من ROM ، لكن لم أتمكن من العثور على الوثائق المتعلقة بكيفية ومكان تخزين البيانات. نظرًا لأن مساحة ROM محدودة ، عادةً ما يتم تقديم بيانات المستوى في نموذج مضغوط يشبه تنسيق رسومات المتجهات. تستخدم كل لعبة نسقها الخاص ، لذلك لم أعتبر أنه من الضروري إجراء البحوث ، لأنني خضعت لـ "مصمم خرائط". بالإضافة إلى ذلك ، ما زلت بحاجة إلى صور بيانية للخطوات الفرعية. إذا لم أكن قد التقطت خطوط الخلفيات ، فسيتعين علي كتابة برنامج يولد صورًا من المصفوفات.
العثور على المسار
بعد أن قمت بإنشاء المصفوفات ، أردت تطبيق خوارزمية البحث عن المسار ، وهي خوارزمية
Floyd-Warshall ، والتي تعطي جدول الإخراج الذي يحتوي على أقصر المسارات بين كل زوج من أزواج رؤوس الرسم البياني الموجه بحواف مرجحة. كانت الفكرة هي حساب الجداول مسبقًا وكتابتها على الملفات ، ثم تحميلها أثناء اللعبة. بوجود جداول في الذاكرة ، يستطيع الروبوت البحث عن المسار الأقصر بين بلاطات النظام الأساسي ومعالجتهما على الفور.
يتكون الرسم البياني من الحواف والقمم. إذا كانت بلاطات النظام الأساسي عبارة عن رؤوس ، فإن الحواف هي فقط تلك العمليات التي يمكن لـ Simon تنفيذها من أجل الانتقال من منصة إلى أخرى. العمليات التي تتم داخل بلاطة واحدة فقط محظورة. على سبيل المثال ، على متن طائرة من البلاط ، سيمون يمكن فقط نقل البلاط واحد إلى اليسار أو واحد البلاط إلى اليمين.
وبالمثل ، إذا كان سيمون على الدرج ، فيمكنه تحريك بلاطة واحدة في اتجاهين ممكنين.
هذه هي عمليات صالحة. لكن الإجراءات مثل الانتقال من منتصف التجانب إلى حافة التجانب تكون كسرية للغاية ، لأنها لا تتوافق مع الانتقال من رأس الرسم البياني إلى آخر.
بالإضافة إلى المشي يسارًا ويمينًا ، نزولًا وتسلق السلالم ، يمكن لسيمون القفز إلى بلاط آخر. ويمكنه القفز إلى اليسار أو اليمين ، بدءًا من أي من 16 بكسل لسطح البلاط. لتقليل عدد الحواف في الرسم البياني (وحجم جدول البحث) ، نظرت فقط في خمس نقاط طاردة ممكنة:
مضيفا العملية "لا تفعل شيئا" ، حصلت على 15 عملية. جميعها بسيطة بما يكفي بحيث يتمكن الروبوت من تحديد تسلسل مكابس الأزرار اللازمة لتنفيذها بسهولة أثناء تنفيذ اللعبة.
لبناء رسم بياني كامل ، قمت بإنشاء محاكاة بسيطة للغاية لفيزياء عالم سيمون. في هذه المحاكاة ، يتم تنفيذ جميع العمليات الـ 15 بدءًا من كل بلاطة منصة. تم بناء الرسم البياني ببساطة عن طريق ملاحظة أين سيمون. بشكل أكثر تحديدًا ، عند تحديد الإحداثيات الأولية والتشغيل ، فإن المحاكاة تعطي الإحداثيات النهائية في المخرجات. إذا لم يكن هناك إحداثيات نهائية ، على سبيل المثال ، عندما يحاول سيمون الدخول إلى الحائط أو في حفرة ، فإن البرنامج يُرجع أن العملية غير صالحة وأن هذه الحافة ليست جزءًا من الرسم البياني.
لإنشاء هذه المحاكاة ، كانت هناك حاجة لدراسة شاملة لسيمون بلمونت. على عكس المنصات الكلاسيكية الأخرى ، حيث يمكن للاعب التسارع من المشي إلى الجري ، فإن Simon ، عندما يتحرك أفقيًا ، يتحرك دائمًا بدقة 1 بكسل لكل إطار. هذا صحيح بالنسبة للمشي ، والقفز ، وتسلق السلالم ، وحتى عند الرمي عند مهاجمة الأعداء.
الحد من السرعة الأفقية يبسط إلى حد كبير الاعتراف بالحواجز. تقوم اللعبة بالتحقق مما إذا كان هناك جدار في بكسل واحد أمام الشخصية ، وإذا لزم الأمر توقف الحركة. يتم إجراء الاختبار أسفل مستوى الرأس ، والذي يسمح للرئيس بالمرور تحت سقوف منخفضة دون التدخل في الحركة الأفقية.
الحركة العمودية هي أكثر تعقيدًا بقليل. إذا خرج Simon عن حافة المنصة ، فبدلاً من التسارع التدريجي ، يسقط فورًا بسرعة 8 بكسل لكل إطار. نظرًا لأن كل مربع يبلغ ارتفاعه 16 بكسل (وهو مضاعف 8) ، يتم تبسيط التعرف على الأرض. في الوقت نفسه ، يحافظ اللاعب على سرعة أفقية قدرها 1 بكسل لكل إطار في الاتجاه الذي تم الحصول عليه قبل السقوط مباشرةً.
يبلغ عرض Sprite لـ Simon 16 بكسل ، ومع ذلك يمكنه التحويم فوق الكتلة بحد أقصى ± 4 بكسل من منتصفه. إذا تحركت أكثر من ذلك بقليل ، فسوف ينخفض.
ومن المثير للاهتمام أنه إذا غادر المنصة وسقط بلاطة واحدة بالضبط بسرعة 1 أفقيًا و 8 بكسل رأسي لكل إطار ، فلن يقف على الكتلة عند الهبوط. ستبقى إحدى ساقيه داخل الجدار على عمق 2 بكسل.
بعد ذلك ، سوف يكون قادرًا على الخروج من الجدار ، لكن لا يمكنه الدخول فيه.
سيمون لا يمكن تغيير الاتجاه أثناء القفز. بعد الضغط على الزر "أ" ، يصنع مسارًا ثابتًا على طول المكافئ.
في الجزء العلوي ، يرتفع Simon بمقدار 36 بكسل ، مما يسمح له بالقفز على منصات 2 مرتفعة. وأعلى "المكافئ" مسطح بشكل مدهش. يبدو أنه يتجمد في الفضاء لمدة 9 إطارات كاملة ، ربما من أجل تبسيط ضربات السوط في الهواء. إذا لم يكن لسيمون أي شيء يهبط عليه ، فإن حركة القطع المكافئة تستمر حتى يعود إلى ارتفاعه الأصلي. بعد ذلك ، يبدأ السقوط بسرعة 8 بكسل لكل إطار ، أي بنفس السرعة الثابتة للسقوط من المنصة.
عندما يكون هناك منصة أعلى رأس الشخصية مباشرةً ، لا يُسمح بالقفز.
خلاف ذلك ، وقال انه "يقفز" جزئيا في البلاط منصة.
كما ذُكر سابقًا ، إذا لمس سيمون أكثر من أعلى رأسه ، فإنه يتوقف عن الحركة أفقًا. هذا أمر مزعج للغاية في نهاية المرحلة الأولى من المستوى 4 ، عندما يحاول اللاعب الخروج من الكهف.
تتيح لك السلالم التنقل بحرية رأسياً بين المنصات.
في إحدى الحالات ، صعد سيمون على الدرج ، مروراً ببلاط المنصة. كونه على الدرج ، يمكن أن يمر بحرية من خلال الجدار.
في المنصات المحمولة من المستوى 4 ، يجلس اللاعب عادة أسفل الصواعد المنخفضة. ومع ذلك ، يمكنك الارتفاع والراحة ضدهم. في مثل هذه الحالة ، تقيد اللعبة الحركة الأفقية ، فتسحب سيمون بسرعة إلى فخ الماء.
يعتبر محاكي الفيزياء الذي يولد الرسوم البيانية الموجهة سيمون مستطيلًا. تقتصر حركة هذا المستطيل على قواعد الحركة الموضحة أعلاه. بحيث لا يقفز الروبوت من مكان إلى آخر مثل الأرانب ، تم تعيين حواف القفزات العد بتكلفة أعلى من حواف المشي والتحرك على الدرج.
يحتوي الجدول الذي تم إنشاؤه بواسطة خوارزمية البحث عن المسار على أقصر مسافة لكل بلاطة بداية ونهاية (التكلفة الإجمالية للمسار) ووصف للخطوة الأولى من المسار. يتضمن هذا الوصف العملية الأولى التي يجب إجراؤها على هذا المسار ، والبلاط الذي سيكون عليه الحرف بعد اكتماله. يمكن إعادة إنشاء المسار بالكامل من خلال البحث المتكرر في الجدول ، ويعطي كل منها الخطوة التالية في اتجاه التجانب النهائي.
في بعض الخطوات الفرعية ، الأعمدة غير متصلة بالكامل. على سبيل المثال ، في المستوى 4 ، تعتبر المنصات هي الطريقة الوحيدة لعبور الهاوية. في مثل هذه الخطوات الفرعية ، يحتوي الجدول على طرق للتنقل في كل جزيرة ، ولكن ليس بينها.
تحتوي بعض الكتل القابلة للتدمير على كائنات مخفية. وتدمير كتل يغير هذا الرسم البياني. للتغلب على هذه المشكلة ، تم تطبيق خوارزمية للعثور على المسارات مع وبدون كتل الانقسام على الخطوات الفرعية. في وقت التشغيل ، تراقب CastlevaniaBot حالات الكتل المراد تقسيمها وتستخدم جدول البحث المناسب.
حالة اللعبة
يدمج CastlevaniaBot في Nintaco من خلال
API الخاص به . يسجل تطبيق
FrameListener
لتلقي العودة في كل إطار. نظرًا لأن المحاكي يعمل عند حوالي 60 إطارًا في الثانية ، يجب إعادة هذا المستمع في الوقت المحدد ؛ ستؤدي العمليات الحسابية المطولة أو فترة التوقف إلى إبطاء المحاكي أو حظره. في فترة زمنية قصيرة ، يقرأ CastlevaniaBot حالة اللعبة ، ويحدد هدفها الرئيسي ، وتبديل الاستراتيجيات إذا كان الهدف قد تغير وتفي الاستراتيجية الحالية.
يقرأ CastlevaniaBot حالة Simon Belmont الحالية مباشرةً من ذاكرة الوصول العشوائي للمعالج. لكن لا يمكنني تحديد كيفية تمثيل كائنات اللعبة الأخرى في الذاكرة. لذلك ، يقرأ CastlevaniaBot مباشرة من ذاكرة سمات الكائنات (Object Attribute Memory ، OAM) - وهي المنطقة التي تخزن قائمة من العفاريت المعروضة.
تعمل هذه التقنية وهي قابلة للتطبيق بشكل عام على الألعاب الأخرى ، ولكن بها العديد من العيوب. ترتيب العفاريت في OAM يتغير باستمرار. إذا كانت هناك عدة حالات من نفس النوع من العدو على الشاشة في نفس الوقت ، فإن الطريقة الوحيدة لتعقبها هي تحديد قربها ، لمقارنة آخر إحداثيات العفريت مع الإحداثيات من الإطار السابق.
تتكون بعض كائنات اللعبة من تكرار العفاريت ، مثل أبراج العظام.
تتكون المنصات المتحركة من تكرار واحد للعفريت 4 مرات.
يتطلب تصنيف كلتا هاتين الحالتين منطقًا إضافيًا سهل التنفيذ. ترقيات الأسلحة الثانوية وبعض أنواع الأسلحة الثانوية نفسها تستخدم نفس العفاريت. الأسوأ من ذلك ، في المستوى 5 ، يستعجل الفرسان العفاريت من أسلحة سيمون الثانوية.
لحسن الحظ ، باستثناء المياه المقدسة ، يستخدم CastlevaniaBot الأسلحة الثانوية فقط حيث عادةً ما تكون الترقيات غير متوفرة ، كما في معارك الرؤساء. و sprite ترقية الماء المقدس يختلف عن العفريت المستخدمة عند صبها.
تومض بعض كائنات اللعبة أثناء الإنشاء ، على سبيل المثال ، الكرات الكريستالية في نهاية معارك الرؤساء ، وضفائر الموت ، وجسم دراكولا. تظهر العفاريت الوامضة وتختفي من OAM ، لذلك هناك حاجة إلى منطق إضافي لتتبع هذه الكائنات.
تجدر الإشارة أيضًا إلى أنه نظرًا لقيود الأجهزة ، لا يمكن لـ NES عرض سوى 8 sprites لكل خط نقطي. نظرًا لأن أولوية العفاريت تعتمد جزئيًا على مؤشراتها في OAM ، يتم خلط الترتيب في كل إطار بشكل عشوائي لتجنب حدوث تحول يجعل العفاريت غير مرئية باستمرار. العديد من العفاريت وميض بدوره ، وتغيير تدريجيا أولوياتهم. هذا الوميض لا يؤثر على قراءة العفاريت من OAM. لا تزال البيانات موجودة ، لكن الأجهزة التي تمت مضاهاتها لا تعرضها. هذا يختلف عن الموقف الموضح أعلاه مع وميض عند إنشاء العفاريت. بالإضافة إلى ذلك ، لدى Nintaco خيار يقلل بشكل كبير من وميض الأجهزة.
وأخيرًا ، تتم قراءة جزء صغير من حالة اللعبة من جداول أسماء PPU - وهي منطقة ذاكرة تحتوي على جميع بيانات الخلفية. يتضمن ذلك فحص الكتل القابلة للتدمير وتتبع مواقع "السحق" في المستوى 2.
أجهزة الكشف عن مجريات الأمور
الاستراتيجيات هي آلات الدولة. تُعرّف CastlevaniaBot هذه الفئة كخلفية تجريدية باستخدام طرق
init
step
يتم استدعاء طريقة
init
عندما تتحول CastlevaniaBot إلى الإستراتيجية المناسبة ، مما يسمح بإعادة ضبط جهاز الحالة. وطريقة
step
تنفذ الإستراتيجية. على سبيل المثال ، تتحقق طريقة
step
الخاصة بإحدى الاستراتيجيات الخاصة بمصايد الأسماك لمعرفة ما إذا كانت السمكة تقع في نطاق السوط ، وإذا كان الأمر كذلك ، فإن الروبوت يسقط بالسوط. خلاف ذلك ، فإنه يتحقق ما إذا كان من الممكن الوصول إلى مسافة الإضراب بواسطة قفزة ، وإذا كان الأمر كذلك ، فإن الروبوت ينتقل. وأخيراً ، إذا كان الروبوت قريبًا جدًا من العدو ، فإنه يتحرك بعيدًا عنه. مع هذه القواعد البسيطة ، تهزم CastlevaniaBot الأسماك البشرية.
لتبسيط استراتيجيات الكتابة قدر الإمكان ، قمت بإنشاء مكتبة بالإجراءات الممكنة التي يتعين القيام بها. على سبيل المثال ، بدلاً من الضغط على الزر A والإفراج عنه A للقفز ، يقوم الروبوت ببساطة باستدعاء طريقة الانتقال من المكتبة. وقبل ذلك ، يسأل المكتبة إذا كان سيمون على المنصة ويستطيع القفز.
الاقتراب والابتعاد عن الهدف هي إجراءات قياسية يتم تنفيذها باستخدام عمليات من الجدول تم إنشاؤها بواسطة خوارزمية البحث عن المسار. على سبيل المثال ، تستخدم إستراتيجية الشمعة
routeAndFace
لأسلوب المكتبة ، والذي لا يوجه Simon فقط إلى أي إحداثيات محددة ، ولكن أيضًا يدورها يسارًا أو يمينًا بعد ضربها. بالإضافة إلى ذلك ، وفقًا لارتفاع الشموع ، تقوم الإستراتيجية بالقفز أو القرفصاء قبل ضرب السوط. سيتم إنشاء كائن سقط من الشموع في الهواء وسيسقط أو يسقط ببطء على الأرض. توجه استراتيجية الالتقاط سايمون إلى أقرب بلاطة مباشرة قبل أن يلمس العنصر الأرض.
للابتعاد عن الأعداء ، تحتاج المكتبة إلى معرفة كيفية التحرك إلى اليسار أو اليمين دون الوقوع في الحفر. بشكل عام ، يتم تحقيق ذلك من خلال البحث عن مسارات إلى الحواف اليسرى أو اليمنى من المرحلة الفرعية. لكن في بعض المناطق ، يتطلب أقصر طريق إلى الحافة اليسرى في البداية الانتقال إلى اليمين ، والعكس صحيح. عندما ظهرت مثل هذه المشكلات ، أضفت منطقًا على وجه التحديد للمراحل الفرعية ، فأوجه سايمون إلى الحواف اليمنى واليسرى للمنصة الحالية.
تجول
في هذا القسم ، سوف أصف بالتفصيل الاستراتيجيات المستخدمة من قِبل CastlevaniaBot ، مع التعليق على الإرشادات الكاملة.
تبدأ اللعبة في الفناء أمام القلعة. يتم ترتيب الكائنات في الإطار لتحديد الهدف الرئيسي ، وهو في هذه الحالة عمود ذو لهب. تُخبر إستراتيجية العمود الروبوت بأن يقترب من العمود ويستخدم السوط عندما يكون في متناول اليد.
بعد ضرب السوط وتدمير العمود ، يتم إنشاء عنصر. أولوية كل العناصر أعلى من أعمدة اللهب. وبالتالي ، يتفاعل CastlevaniaBot مع هذا باستخدام إستراتيجية لجمع العنصر الذي يظهر قبل الانتقال إلى الأعمدة التالية.
عند ترتيب الكائنات ، يأخذ CastlevaniaBot دائمًا هدفًا طويل الأجل - لإكمال المستوى قبل نفاد الوقت. عند إنشاء قائمة بالأهداف المحتملة ، يضاف دائمًا الباب إلى المستوى التالي. يتم إعطاء أولوية منخفضة للباب ، لكن بعد تدمير جميع الأعمدة وجمع كل الكائنات ، تصبح الأولوية. مع استثناء واحد فقط: يعرف CastlevaniaBot كيفية الكشف عن جميع الكنوز المخفية ، ويقفز فوق مدخل القلعة لإنشاء كيس من المال الخفيف.
بعد دخول القلعة CastlevaniaBot يرى الأشباح والشموع. الشموع والعناصر الحرفية لها الأسبقية حتى تقترب الأشباح.
غالبًا ما يبدو أن السوط يدمر الأعداء دون لمسهم. لقد وجدت جدول مستطيل للتصادم في ROM الخاص باللعبة ، لذلك يعرف CastlevaniaBot بالضبط عندما يكون هناك شيء ما ضمن نطاق السوط. ولأن مستطيلات التصادم غالباً ما تبرز قليلاً خارج حدود العفاريت ، يمكن للسوط أن يضرب "الجزء غير المرئي".
في معظم الحالات ، عند تدمير الشموع ، يقفز CastlevaniaBot عموديًا ، بدلاً من الأمام. هذا هو تكتيك تجنب المخاطر. نظرًا لوجودك في الهواء ، من المستحيل تغيير اتجاه الحركة ، يمكن لحشد من الأعداء المقربين أن يعقد عملية الهبوط الآمن أو يجعلها مستحيلة. بالإضافة إلى ذلك ، مع قفزة عمودية ، يبقى CastlevaniaBot على نفس الكتلة. لا يحتاج إلى التحقق مما إذا كانت القفزة ستؤدي إلى انخفاض في المنصة السفلية أو أسفل الحفرة.
عندما لا توجد شموع يتم تدميرها أو تجميع أشياء ، تبدأ CastlevaniaBot في مطاردة الأشباح. لكن "إستراتيجية النمر" تأمره بالوقوف صامداً ، بانتظار سقوط العدو في حدود ضربة سوطية.
بالإضافة إلى حقيقة أن الشموع تعمل كمصادر للقلوب وغيرها من الأشياء ، فإنها توجه اللاعب طوال الطريق. على سبيل المثال ، في الصورة أدناه ، "الشموع" في الزاوية اليمنى العليا "دعوة" اللاعب لتسلق الدرج. ومع ذلك ، لتسلق الدرج ، يحتاج اللاعب في البداية إلى اليسار ، ولهذا السبب تختفي الشموع من الشاشة. نظرًا لأن حلول CastlevaniaBot تستند إلى تحديد الأولويات للعناصر المرئية على الشاشة ، فقد يؤدي هذا الموقف إلى دورة لا نهاية لها حيث يختار الروبوت بالتناوب أقصر مسار للشموع (إلى اليسار) أو أقصر مسار إلى باب الخروج (إلى اليمين).
يمكن حل مشاكل مماثلة بعدة طرق. على سبيل المثال ، يمكن تجهيز CastlevaniaBot بتخزين الكائنات ، مع العلم أن الكائنات لا تزال موجودة ، حتى لو لم تكن مرئية. ولكن من أجل هذا ، كل نفس ، من البداية يجب أن نراهم. إذا كانت الشموع أكثر إلى اليمين ، وبعد الكشف عنها ، سيكون من الضروري العودة إلى أبعد من ذلك.
مع وضع ذلك في الاعتبار ، أضفت الحوافز التي تدفع CastlevaniaBot لاستكشاف مجالات المرحلة التي كان يتجاهلها عادة. تعمل هذه الحوافز بشكل مشابه على الخروج من الأبواب ، مع رسم CastlevaniaBot حيث يجب أن تذهب. بالإضافة إلى ذلك ، أضفت القواعد التي تجعله يتجاهل الشموع والأشياء البعيدة جدًا (من حيث المسافة المقطوعة وليس في خط مستقيم).
بعد تسلق السلالم وتدمير الشموع ، يتم إنشاء الماء المقدس - وهو أثمن الأسلحة الثانوية. CastlevaniaBot يختارها عن طريق تبادل خنجر لذلك.
كما هو الحال مع حقيبة النقود في بداية اللعبة ، تعرف CastlevaniaBot على جميع الكتل القابلة للتدمير مع الأشياء الخفية ، ولتدمير الكتل بالسوط ، تستخدم استراتيجية مشابهة لاستراتيجية الشموع.
مع مزيد من حركة CastlevaniaBot ، ستلاحظ أنها تبدأ في استخدام المياه المقدسة لتدمير الأشباح والشموع. قد يبدو هذا ضروريًا ، لكنه يخدم غرضًا مهمًا. يكافئ Castlevania اللاعبين لاستخدام الأسلحة الثانوية مع التعرض المزدوج والثلاثي. بمعنى آخر ، تقوم CastlevaniaBot
بتطوير ترقيات الأسلحة الثانوية.
بعد الضغط على الزر B هناك تأخير لمدة 16 لقطة قبل ضرب السوط. لا يزال السوط طويلًا لمدة 10 إطارات إضافية ، ولكنه صالح فقط في أول هذه الإطارات العشرة. يستخدم CastlevaniaBot هذه الحقيقة لتحسين التصويب. على وجه الخصوص ، يتعقب سرعة جميع الكائنات في الإطار ، على افتراض أن الهدف الرئيسي سيستمر في التحرك على طول مسار خطي. ثم يضغط على الزر B 16 لقطة قبل أن يلتقي الهدف بالسوط. يمكن للعدو دائمًا تغيير الاتجاه خلال هذه الإطارات الستة عشر ، ولكن عادةً ما يكون هذا العمل التجريبي البسيط.
ومع ذلك ، بعد المرور عبر الباب ، واجه CastlevaniaBot الخفافيش الحمراء. مثل رؤوس قنديل البحر ، تطير الخفافيش الحمراء عبر الشاشة ، وتطير عبر الجيب الجيوي عبر المنصات والسلالم. للتنبؤ بمكان وجود الخفافيش الحمراء بعد 16 إطارًا ، سجلت حركة أحدها في جدول. أثناء تنفيذ اللعبة ، تتعقب CastlevaniaBot الخفافيش وتنتظر قمم أو قيعان المسار حيث تغير السرعة الرأسية أثرها. ثم يمكنه مقارنة الإحداثيات بالقيم الموجودة في جدول تم إنشاؤه مسبقًا. يتيح ذلك الإستراتيجية المناسبة لضرب الخفافيش الحمراء بالسوط أو الانحناء أو الارتداد فوقه.
أثناء مرور (speedrana) في Castlevania ، يقوم اللاعبون بمناورات تجعل اللعبة حتمية قدر الإمكان. على سبيل المثال ، اكتشفوا أنه في نهاية المستوى 1 لتدمير كتلة والتقاط ترقية سلاح في تسلسل زمني معين ، سوف يتصرف رئيسه وفقًا للنمط المرغوب ، مما يسمح له بالهزيمة بسرعة.
بغض النظر عن مدى خبرة الأشخاص ، لا يمكنهم ترويض مولد الأرقام العشوائية تمامًا. ومع ذلك ، نظرًا لأن CastlevaniaBot يمكنها التحكم في ضغطات الأزرار بدقة كل إطار على حدة ، فإنه يمكن أن يرفع مفهوم مرور السرعة إلى الحد الأقصى ، في كل مرة يمر فيها اللعبة بطريقة متطابقة تمامًا. إذا فعل ذلك ، فلن يكون أفضل من اجتياز
TAS . لذلك ، يضيف CastlevaniaBot بشكل تعسفي الأخطاء والتأخير في تصرفاته باستخدام مولد الأرقام العشوائية الخارجية لتجنب اللعب القطعي. على سبيل المثال ، عندما يضرب بسوط شمعة مرتفعة ، يضيف عمداً تأخير لعدد عشوائي من الإطارات للقفز والإضراب. هذه التغييرات الصغيرة تؤثر بشكل كبير على تقدم اللعبة.
على الرغم من أن CastlevaniaBot يسعى إلى تجنب الحتمية ، إلا أنه استعار مفهومًا واحدًا من السرعة الزائدة:
زيادة الضرر . في 50٪ من الحالات ، يتجنب CastlevaniaBot تمامًا مرور زنزانة الأسماك البشرية من خلال القفز مرة أخرى إلى الخفافيش الحمراء ، التي تلقيها على منصة يتعذر الوصول إليها.
في النصف الآخر من الحالات ، يختار CastlevaniaBot القتال مع الأسماك البشرية. الكرات النارية لها أولوية عالية و CastlevaniaBot يضربهم بالسوط ، المراوغات أو الارتداد تبعا للحالة.
نظرًا لعدم القدرة على التنبؤ بإنشاء الأعداء وكراتهم النارية ، فغالبًا ما يدير معظم اللاعبين جزءًا من الأسماك البشرية. لكن CastlevaniaBot يقضي بعض الوقت عليها ، ويجمع كل القلوب وحتى الكنز الخفي في الحافة اليمنى للغاية. يعرف الروبوت بالضبط العناصر الموجودة في كل شمعة ، وبما أنه يفضل استخدام الماء المقدس ، فإنه يتخطى الشموع التي تكون فيها الكرونومتر مخفية. ومع ذلك ، إذا بقيت في هذا الجزء وتقاتلت مع أسماك ، في بعض الأحيان يمكنك حتماً التقاط الكرونومتر.
غالبًا ما تنتهي المراحل بصلبان تدمر كل الأعداء على الشاشة. في حال كنت فضوليًا ، أقول إن الصلبان لا يمكنها قتل الرؤساء في نهاية المستوى. في الواقع ، يتم إنشاء الصلبان في بعض الأحيان حتى خلال معارك رئيسه. على سبيل المثال ، في المعركة مع Medusa ، تظهر الصلبان أحيانًا عند قتل الثعابين. لكن هذه الصلبان يمكنها فقط قتل الثعابين الأخرى.
بعد المرور عبر الباب ، واجه CastlevaniaBot الأشباح مرة أخرى. في لقطة الشاشة أدناه ، يريد الانتقال إلى المنصة السفلية ، لكن الأشباح تمنعه من الحركة. عندما يخبر جدول تم إنشاؤه بواسطة خوارزمية البحث عن المسار CastlevaniaBot بالقفز ، فإنه يفحص المساحة حول النظام الأساسي الهدف. إذا اتضح أنه هبط على الأعداء ، فلا يتم تنفيذ القفزة. في هذه الحالة ، تجعل هذه الآلية CastlevaniaBot تنتظر الأشباح لتحرير مكانها.
توضح قاعدة "التحقق من الأعداء قبل القفز" أحد مبادئ بنية CastlevaniaBot: يجب أن تحكمها قواعد بسيطة ، قدر الإمكان. في بعض أجزاء اللعبة ، من الضروري استخدام استراتيجيات لمرة واحدة تعمل على حل مشكلات محددة للغاية. ولكن في معظم اللعبة ، تكون عمليات الروبوت مدفوعة بالاستدلال القابل لإعادة الاستخدام. أنا لم أكتب فريقًا جعله يتوقف عند هذه النقطة المحددة وانتظر الأشباح للخروج من طريقهم. نشأ هذا السلوك نتيجة الاستدلال.
CastlevaniaBot يكمل المستوى عن طريق قتل بات فانتوم بالماء المقدس الثلاثي. لكن إستراتيجيته الهجومية تحددها سلاحه الثانوي. في الواقع ، إذا لم يكن لديه سلاح ثانوي ، فهو مستعد لقتل رئيسه بسوط واحد. حالة مثيرة للاهتمام بشكل خاص هي قتل فانتوم بات بفأس. على غرار حالة الخفافيش الحمراء ، سجلت في الجدول حركة الفأس على طول القطع المكافئ. أثناء تنفيذ اللعبة ، ينفذ CastlevaniaBot طاولة إزاحة عن طريق مطابقتها مع كل من بلاط الأرضيات. هذا يتيح لك حساب النقطة المثلى لقتل رئيسه بفأس.
قبل التقاط الكرة البلورية مباشرة ، يلقي CastlevaniaBot السلاح الثانوي في اتجاهات مختلفة ، مع العلم أنه سوف يتجمد في الهواء بعد أن يمس الكرة. ثم يقفز بشكل عشوائي بشكل متكرر ويضرب بسوط ، على أمل التجميد في وضعية غريبة.
في بداية المستوى 2 ، تتجنب CastlevaniaBot الشموع الأولى التي يتم فيها إخفاء ذراع الرافعة. إن إستراتيجية العمل مع فارس رمح هي حملة ضد إستراتيجيات الأشباح أو الأشخاص الذين يصطادون الأسماك ، لكن هذا هو أول عدو يقتل يحتاج إلى إصابتين. يختفي الخفافيش السوداء حتى تقترب منها ، وبعدها تقلع وتتحرك خطيًا بما يكفي للقتل بالسوط باستخدام الاستدلال البسيط المذكور أعلاه.
بعد تدمير الطوب من الجدار ، في 50٪ من الحالات ، يبدو أن CastlevaniaBot يترك الغرفة دون رفع التاج. لكن هل هذا صحيح؟ في الواقع ، في مثل هذه الحالات ، يلتقط التاج ، وذلك باستخدام علة اللعبة. نظرًا لأن نهاية السلم العلوي تتزامن أفقًا مع موقع التاج ، فإن اللاعب ، عندما يمر وخلف الشاشة ، يتراجع لحظات. إذا استمعت إلى الصوت أو نظرت إلى النظارات ، يمكنك أن ترى أن الروبوت يأخذ بالفعل التاج.
في المستوى 2 ، لا يهاجم الأعداء اللاعب عندما يكون على منصة متحركة. يجب على CastlevaniaBot أن تنتظر حتى تقترب المنصة ، وأن تدخل المنصة ، وانتظر حتى تصل إلى الجانب الآخر ، ثم تنزل منه. هناك اختلاف طفيف للمنصات التي لا تلمس البلاط من ناحية أخرى. في مثل هذه الحالات ، لا ينزل CastlevaniaBot ، ولكنه يقفز من المنصة.
يؤدي الباب إلى ممر مليء برؤوس الطيران ، ويتفاعل CastlevaniaBot مع هذا من خلال المضي قدمًا. كما هو الحال مع المنصات المحمولة ، تدرك CastlevaniaBot أن هذه الاستراتيجية تحتاج إلى تطبيقها استنادًا إلى موقعها ، بدلاً من تحديد أولويات كائنات الألعاب على الشاشة. ومع ذلك ، حالما تطير جميع رؤوس قنديل البحر ، يعود إلى هذه التقنية لاختيار الاستراتيجية التي سيتم استخدامها أكثر.
يتم تشغيل استراتيجية أخرى ، اعتمادًا على الموقف ، بعد تسلق السلم التالي المؤدي إلى المنطقة المليئة برؤوس قنديل البحر. في 50 ٪ من الحالات ، يقفز CastlevaniaBot عمدا على رأس قنديل البحر للحصول على زيادة الضرر ، ودفعها إلى المنصة العليا بجانب الباب المؤدي إلى المرحلة التالية. هذه هي الأضرار الوحيدة التي يعززها CastlevaniaBot. بخلاف المتسابقين في السرعة ، فهو لا ينفذ لتوفير الوقت ، فهذه مجرد مساهمة أخرى في عدم حتمية المرور.
«» — , . CastlevaniaBot , «» , . , , , «». , .
«» . , . , . , -.
2 , CastlevaniaBot . .
3 . CastlevaniaBot , , . , CastlevaniaBot , .
. . , . 3 CastlevaniaBot . , , . CastlevaniaBot — .
CastlevaniaBot , . , .
CastlevaniaBot , , , . . , .
CastlevaniaBot , . , .
CastlevaniaBot , . , , .
, .
CastlevaniaBot . , , - , . , - .
4 . , . , , . , CastlevaniaBot , . -, , . CastlevaniaBot .
. , .
, 64 . , , ROM , . - , . . .
, - . , , . . 50%, . .
CastlevaniaBot , . , , .
CastlevaniaBot القادم يلتقي حفنة من لاعبا. في هذه المنطقة ، بعد قتل لاعبا ، تظهر الفؤوس غالبًا. CastlevaniaBot يتجنبها ، لأن الماء المقدس مفيد بشكل خاص عند قتال رئيسه.عند الانتقال إلى المرحلة الأخيرة من المستوى ، يتجاهل CastlevaniaBot تنين العظام تمامًا.لكنه يتخلص من الاثنين المقبلين بضربات سريعة للسوط.يتم تدمير الوحش فرانكشتاين وإيغور بواسطة دفق مستمر من الضربات مع سوط والمياه المقدسة. كما هو الحال مع الرؤساء الآخرين ، يمكن لـ CastlevaniaBot التعامل مع الأسلحة الثانوية الأخرى أيضًا ، أو بدونها على الإطلاق. ومع ذلك ، فإن فرص البقاء على قيد الحياة دون الماء المقدس تتضاءل.5 CastlevaniaBot . , 3. , , CastlevaniaBot , , . , , .
5 . CastlevaniaBot , , .
14 . CastlevaniaBot . , , . , . , , . , . , CastlevaniaBot . , . CastlevaniaBot , , . الصيحة!
, CastlevaniaBot . , , . , , , .
5, CastlevaniaBot , , . . , , CastlevaniaBot , .
, . CastlevaniaBot , , , , . , CastlevaniaBot , . , . .
, , , . , , .
, CastlevaniaBot . , .
CastlevaniaBot , , . , .
CastlevaniaBot 6 — . , , , . , , .
. , .
CastlevaniaBot , . .
CastlevaniaBot , , , 20 .
, .
16 . CastlevaniaBot , , , .
, Cookie Monster, . Cookie Monster , CastlevaniaBot . Cookie Monster , . . Cookie Monster , .
CastlevaniaBot Difficult Mode, . , Normal Mode. CastlevaniaBot .
CastlevaniaBot_2018-12-09.zip.zip
:
src
— .CastlevaniaBot.jar
— .lgpl-2.1.txt
— .
إطلاق
- Nintaco — NES.
Castlevania (U) (PRG1) [!].nes
— ROM .
- Nintaco
Castlevania (U) (PRG1) [!].nes
. CastlevaniaBot.jar
.zip
.- Run Program, Tools | Run Program...
- JAR , Find JAR....
- Load JAR, .
- Run.
Copyright © 2018 meatfighter.com
. / LGPLv2.1. |