في الآونة الأخيرة ، لعبت الكثير في
لعبة The Gungeon . هذه لعبة جحيم رصاصة رائعة ومليئة بالتحديات تذكرني بالكثير من لعبة
Binding of Isaac . لكن كلما لعبت عليه أكثر ، أدركت العبقرية الدقيقة لتصميم الأبراج المحصنة.
هناك العديد من المولدات الإجرائية التي تنشئ مخططات المستوى المنطقي التي تضمن السرعة الصحيحة للعبة ومكافأة اللاعبين ، وهناك مولدات أخرى تنشئ مستويات مع الحلقات والمخططات المدمجة. لكن من النادر أن تجد كلا النوعين في لعبة واحدة. اللعبة الوحيدة التي أعرفها والتي كانت هناك محاولة لتنفيذ مثل هذا الشيء غير
مستكشفة .
لذلك أطلقت بشكل طبيعي برنامج فك
الشفرة حتى يكشف
Gungeon عن كل أسراره. في هذه المقالة سوف أشاطركم ما تمكنت من العثور عليه.
للوهلة الأولى ، تبدو مستويات
Gungeon بسيطة للغاية. هنا مثال لخريطة نموذجية.
المستوى 1 بطاقة نموذجيةيبدأ اللاعب عند المدخل.

يمر عبر الصناديق


و صاحب متجر

لجمع الغنائم ثم الهزائم أخيرًا

. إذا تعثرت في طريق مسدود طويل ، يمكنك استخدام النقل عن بُعد للعودة إلى الغرف بسرعة. من الواضح ، تم إنشاء غرف منفصلة باليد ، ويسكنها أعداء مختلفون يجب إطلاق النار عليهم. عند التقدم إلى المستويات التالية من اللعبة ، يرى اللاعب نفس النمط مرارًا وتكرارًا ، فقط تصبح المراحل أكبر.
حتى الآن ، يبدو أن هذا شيء مثير للاهتمام. على الإنترنت ، يمكنك العثور على العديد من المولدات التي تربط الممرات بغرف عشوائية.
تصبح ميزة المولد ملحوظة عند بدء اللعب. يبدو أن المستويات ... مخططة قليلاً أكثر مما هو متوقع من الصدفة. غرفة رئيسه هي دائما مسافة معقولة من البداية. تتخلل الغرف مع الأعداء دائمًا غرف هادئة ومقاعد وتقاطعات. والأهم من ذلك - توجد العديد من الصناديق خلف المفصلات مع تقاطع باتجاه واحد.
الخط الأحمر هو ممر ذو اتجاه واحد. إذا كنت تريد الدخول إلى غرفة بها صندوق ، فأنت بحاجة إلى قطع شوط طويل. تقع الغالبية العظمى من الصناديق إما في نهاية حلقة أحادية الجانب ، أو عميقة بما يكفي داخل المستوى ، مما يجبر اللاعب على القتال من خلال العديد من الغرف ، ووصل فقط إلى الصندوق. لا يوجد مكافأة دون المخاطرة.
سر هذا المقطع هو أن المخططات العامة يتم إنشاؤها يدوياً. هنا هو الرسم البياني المستخدم لإنشاء المستوى الموضح أعلاه.
الغرف العادية عبارة عن غرف تم اختيارها بشكل عشوائي مع أعداء أو غرف تقاطع أو غرف كبيرة مع مخارج متعددة. لا يلزم شرح المكافآت (المكافأة) ورئيسه (رب العمل). لا يُظهر غرف "متصلة" ، أي غرف بدون أعداء ، وغالبًا ما تكون بها أخطار طبيعية. الغرف المتبقية إما محددة مسبقًا أو محددة من طاولة غرفة خاصة.
في
Gungeon ، هناك عدد لا بأس به من هذه المخططات تسمى "التدفقات" (التدفق). على المستويات المجوفة ، هم الأقل (4) ، وفي Gungeon Proper ، هم الأكثر (8). هذه ليست مخططات بسيطة ، يتم إنشاء تصميمها على أساس ميزة معينة يمكن ملاحظتها مع مرور متعددة. يمكن أن تكون حلقة عملاقة ، أو شوكة مهمة بعدة طرق ، أو الحاجة للوصول إلى مقاعد البدلاء لتمرير المستوى. إنها ملحوظة لدرجة أن راكبي الدراجات السريعة لاحظوا الاختلافات
وصنعوا جداول زمنية يمكنك من خلالها إيجاد مدرب في أسرع وقت ممكن. أعددت قائمة كاملة بالمخططات التي يمكن تنزيلها
من هنا .
ربما لاحظت أن نمط التدفق والخريطة لا يتطابقان تمامًا. تحت المقعد هناك غرفة إضافية. يتعارض مع المخطط ، وغرف الممر غريبة

. دعنا ندرس العملية برمتها ، فهي تحتوي على الكثير من الأفكار الذكية.
تبدأ العملية عن طريق اختيار عشوائي لملف الدفق مثل الملف الموضح أعلاه. هذا
هو هيكل البيانات "الرسم البياني" ، أي أنه يخزن روابط الغرف ، ولكن ليس موقعها. تحتوي كل غرفة على بيانات وصفية حول نوع الغرفة والروابط التي يجب أن تحتوي عليها. الاتصالات لها اتجاه - يبدأ كل مخطط تدفق من عقدة الجذر ، ثم يشكل شجرة من العقد الفرعية. ثم اتصالات إضافية كسر هيكل شجرة لإنشاء حلقات. أعتقد أن هذا يرجع بشكل أساسي إلى خصوصيات تطوير اللعبة ، لكنه يبسط إجراءات تحليل الخريطة ، لأن جميع الحلقات حددت بوضوح البداية والنهاية.
تحويل تيار
يمكن تحويل ملف الدفق بعدد محدود من الطرق. أولاً ، سيتم استبدال بعض الغرف المحددة بسلسلة من الغرف ذات أطوال عشوائية. يتم استخدام هذه الوظيفة فقط في مستويات أكبر لاحقًا. بالإضافة إلى ذلك ، تحتوي بعض أجزاء ملف الدفق على مسارات بديلة ، ويتم اختيار أحدها عشوائيًا. هذه الوظيفة تستخدم مرتين فقط.
ثم يتم حقن بعض العقد الإضافية. هذه الوظيفة مرنة للغاية وتستخدم للعديد من الأغراض المختلفة.
يحتوي كل "حقنة" على بيانات تحدد نوع الكائن الذي يجب إدراجه ، وأين يجب إدراجه ، واحتمال الإنشاء وأي شروط يجب الوفاء بها (على سبيل المثال ، وجود
جولة رئيسية ،
لعنة عالية ، أو أن اللاعب لم يحفظ الشخصية بعد ). على سبيل المثال ، عادة ما يتم إنشاء غرف سرية في طريق مسدود ، ولكن لديها احتمال 1/5 من أن تعلق على أي غرفة. لديهم فرصة 90 ٪ من الحدوث ولا تتطلب أي شروط إضافية.
يتم تحديد كل غرفة خاصة في اللعبة تقريبًا عن طريق حقن الموقع ، بما في ذلك التجار (وليس بما في ذلك المتجر الرئيسي) والسجون والغرف ذات المواقد والمصاعد.
واحدة من زنزانات السجن التي يمكن حقنها في المستوىفي نفس المرحلة ، يختار المولد غرفة محددة لكل عقدة. هذا يعتمد بشكل رئيسي على المرحلة الحالية ونوع الغرفة المطلوبة. هناك قائمة ضخمة من الغرف - حوالي 300 غرفة للمرحلة الأولى - ولكن المولد لا يحاول اختيار نفس الغرفة مرتين.
العقد الموصل تعمل بشكل مختلف. يتم اختيار غرفهم في وقت لاحق ، في حين يتم إنشاء المخطط. غالبًا ما تكون هذه الغرف طويلة وضيقة ، لذلك من المهم جدًا اختيار غرفة ذات الاتجاه الصحيح.
كائنات مركبة
بعد اكتمال إنشاء الدفق ، يتم تقسيمه إلى "كائنات مركبة". كل كائن مركب هو إما حلقة منفصلة عن الغرف ، أو مجموعة من الغرف المتصلة بدون حلقات (أي
شجرة ). يتم تحقيق ذلك من خلال إيجاد أصغر حلقة على الخريطة وتقطيعها ككائن مركب. تتكرر العملية حتى لا توجد حلقات على الخريطة. تصبح بقية الخريطة عبارة عن مجموعة من الأشجار المقسمة والروابط بين الكائنات المركبة الفردية.
نفس التيار بعد الحقن والانقساممخطط كائن مركب
ثم يتم إنشاء كل كائن مركب بشكل منفصل ، على خريطة منفصلة. سيتم ضمهم معًا لاحقًا.
لتخطيط كائن مركب ، يتم وضع الغرفة الأولى في مكان تعسفي. بعد ذلك ، تتم إضافة الغرف إلى الدائرة الواحدة تلو الأخرى عن طريق اختيار زوج من المخارج ، يتعلق أحدهما بالغرفة الجديدة ، والآخر بالدائرة الحالية. المخارج هي مواقع محددة مسبقًا في البيانات الوصفية لكل غرفة. ثم يتم وضع الغرفة الجديدة بحيث يتم توصيل مخرجها مباشرة بالخروج من الغرفة السابقة. ثم تتكرر العملية.
وبشكل أكثر تحديدًا ، يتم وضع كائنات الشجرة المركبة عن طريق عبور الشجرة
بعمق . تقوم الخوارزمية بتحديد أزواج المخرجات التي تؤدي إلى ظهور غرفة جديدة فقط دون التقاطع مع الحلقات السابقة. بشكل عام ، تفضل الخوارزمية اختيار المخرجات البعيدة عن تلك الموجودة. إذا كان من المستحيل وضع غرفة ،
فسوف تعود وتجدد اختيار الغرف ، وتكرار هذه العملية ثلاث مرات.
وفي الوقت نفسه ، يتم وضع كائنات الحلقة المركبة عن طريق إضافة عناصر من الحلقة بدورها على جانبي الخط. بادئ ذي بدء ، يتم اختيار أزواج من المخارج بشكل عشوائي (يتم إعطاء الأفضلية للجدران المقابلة ، من الشرق إلى الغرب أو من الشمال إلى الجنوب). عندما تكون الحلقة نصف تم إنشاؤها ، تبدأ في إعطاء الأفضلية لأزواج المخرجات التي تجمع حافتين مفتوحتين للحلقة. بعد إنشاء جميع الغرف ، تحتاج الخوارزمية إلى إضافة اتصال آخر بين الغرفتين الأخيرتين. اختار زوجًا آخر من المخارج. إذا كان ذلك ممكنا ، فهو يصمم بين هذه المخارج غرفة مستطيلة صغيرة. بخلاف ذلك ، يبحث عن مسار بين المخارج ويخلق "غرفة" ، والتي هي ببساطة ممر ضيق. يجب أن يتراوح طول الممر من 4 إلى 30 وحدة (في المناجم تصل إلى 50 وحدة).
التجميع النهائي
في هذه المرحلة ، يتم توصيل أجزاء صغيرة منفصلة من الأبراج المحصنة مع بعضها البعض ، ولكن يجب أن تكون الكائنات المركبة نفسها متصلة لإنشاء خريطة كاملة.
نفس الخريطة مثل الكائنات المركبة قبل التجميع النهائيكما ترون ، لا تعطي المركبات المتبقية في هذه الحالة مجموعة كبيرة جدًا. ولكن قد تكون هناك حالات أكثر تعقيدًا من قبل. تتجاوز الخوارزمية الخريطة ، بدءًا من الغرفة بأكثر الاتصالات. كما كان من قبل ، يتم تحديد زوج من المخرجات لكل اتصال تم إنشاؤه. إذا كانت غرفتان في أجزاء منفصلة من الخريطة ، فسيتم محاذاة هذين الجزءين من الخريطة لإنشاء مسار قصير. خلاف ذلك ، يتم استخدام البحث عن الطريق لإنشاء المسار.
وهذا هو المكان الذي ينتهي فيه إنشاء مخطط المستوى. يبقى فقط اختيار الأعداء والديكورات للغرف ، وهذا موضوع مختلف تمامًا.
في الختام
يبدو أن الهدف الرئيسي للمطورين هو إنشاء منشئ إجرائي يوفر طريقة لعب مرضية. من الواضح ، حتى يتم تنفيذها بشكل صحيح ، كان عليهم إجراء العديد من التكرارات - لقد وجدت كمية كبيرة من كود التوليد ، والتي ، على ما يبدو ، غير مستخدمة ، لأن المطورين قد غيروا صيغتهم الإجرائية بحثًا عن الكمال.
الحيلة الغريبة هي أنها تولد الأجزاء الأكثر تعقيدًا / أهمية في الخريطة أولاً. يركز المولد على إنشاء حلقات ضيقة وممرات قصيرة في الأجزاء المركزية للغاية من المستوى ، ثم يحاول توصيل كل شيء آخر بها.
كما هو الحال بالنسبة
لدراستي لتوليد مستويات Diablo 1 ، فقد أذهلني مدى فعالية إنشاء جزء من الزنزانة في شكل تجريدي - في هذه الحالة هو رسم بياني بدون معلومات حول الموقع. كل شيء يصبح أكثر تحديدا في وقت لاحق فقط. ستكون وظيفة "الحقن" مستحيلة ببساطة إذا ذهبنا على الفور للعمل مع خريطة تجانب. بفضل التجريد من تفاصيل موضع الغرف ، يتيح لك التحكم في أسلوب اللعبة ومقياس المستوى.
بالإضافة إلى ذلك ، لقد تأثرت بسعة النظام ككل. الوحدة تشجع النهج النشط
القائم على البيانات . يمكن تحقيق إضافة غرفة جديدة أو مخطط أو حتى سلوك خاص عن طريق إضافة كائنات جديدة إلى الجداول المقابلة. يجب أن يكون هذا مساعدة كبيرة ، لأن Dodge Roll أصدر بالفعل بعض DLCs المجانية وبدون شك ، يدعم إنشاء
تعديلات .
المكافآت
كانت دراسة هذا المولد فرصتي الأولى للبحث في إنشاء لعبة احترافية في الوحدة. بذل مطورو دودج رول قصارى جهدهم وكتبوا رمزًا جيدًا. قراءة جيدة ، وفي بعض الأماكن مضحك جدًا - يبدو أن حب التورية امتد إلى الكود. اعجبني هؤلاء
- يسمى محرك السائل في اللعبة
DeadlyDeadlyGoopManager
- يُطلق على رمز جيل الأبراج المحصنة اسم الأبراج المحصنة
Dungeonator
- تسمى الخطوات المختلفة
CASTLEGEON/GUNGEON/MINEGEON/CATACOMBGEON
إلخ. أتساءل عما إذا كان المطورون قد استلهموا ديابلو 1 ، والذي يستخدم مخططًا مشابهًا جدًا؟ - حرفيًا ، كل غرفة لها اسمها الخاص ، وعادةً ما تكون على شكل لعبة الكلمات (أو تكريمًا من بعض جو ، وربما يكون هذا فنانًا ذو تصميم رائع).
لاحظت أيضًا أن الاستوديو في البداية كان لديه خطط لمراحل في موضوعات الفضاء ، والغابة ، والغرب المتوحش. للأسف ، لم يكن مقدرا لها أن تظهر. قررت دودج رول أن عملها على
Gungeon اكتمل . سأنتظر مباراتهم القادمة وآمل أن يضعوا الكثير من الحب والاهتمام بها.