الجيل المستوى في غير مستكشفة 2
نحن فخورون جدًا بمولد مستوى اللعبة Unexplored 2 ، وهو برنامج يلبي جميع المتطلبات الحديثة. في منشور ، سأتحدث عن كيفية إنشاء مستويات اللعبة.
لم يكن لدينا لإعادة اختراع العجلة. في Unexplored 1 ، أنشأنا بالفعل تقنيات أثرت بشكل كبير على نجاح اللعبة الأولى. غير مستكشفة 2 فقط تابع ما بدأ. يتكون أساس تقنيتنا من جزأين: نستخدم الجيل متعدد المراحل ، والذي يحاكي عملية تشبه إلى حد كبير عمل مصمم مستوى المعيشة. علاوة على ذلك ، نستخدم تقنية تسمى "
جيل الأبراج المحصنة الدورية " ، والتي هي أفضل بكثير في توليد مستويات المظهر الطبيعي من معظم تطبيقات إنشاء المحتوى التوليفي القياسي. في هذا المنصب سأتحدث عن الجانب الأول. سوف يكون تكييف مقال المستقبل مع الجيل الجديد من الأبراج المحصنة الدورية إلى Unexplored 2.
تقليد تصميم "الإنسان" المستوى
ينقسم مولد المستوى عملية توليد المستوى إلى مجموعة كاملة من المراحل المتحكم فيها. ينتقل من تخطيط رفيع المستوى إلى خريطة مستوى تفصيلية منخفضة المستوى. في الواقع ، يقوم أولاً بإنشاء رسم تخطيطي للمستوى ، ثم يبدأ في إضافة التفاصيل حتى يتم إكمال المستوى وتعبئته.
في كل مرحلة من مراحل هذه العملية ، نستخدم القواعد النحوية لتحويل المستوى الذي تم إنشاؤه في المراحل السابقة. على وجه الخصوص ، نحن نستخدم قواعد تجانب وقواعد الرسم البياني ، وهي أنواع من قواعد سلسلة أكثر عمومية تبحث ببساطة عن أجزاء من السلاسل وتستبدلها بسلسلة أخرى ، مثلما تفعل التعبيرات العادية. إذا لم تكن على دراية بمفاهيم القواعد النحوية والتعبيرات العادية ، فنوصيك بالبحث عن أمثلة على الإنترنت (أو مواصلة القراءة - فلن تحتاج إلى معرفة متعمقة لفهم معنى هذا المنشور).
المرحلة الأولى من المستوى بسيطة نسبيا. نستخدم صورة نقطية دقة منخفضة لتحديد أساسيات المستوى. في المثال أدناه ، يكون المستوى بسيطًا في البداية: فهو يتكون فقط من المدخل (هـ) على اليسار ، والمدخل على اليمين وربط المسار المباشر. معظم التجانبات الأخرى إما غير محددة (u) أو محظورة (B) لأنها على حواف المستوى.
الشكل 1: رسم بسيط للمستوىفي المرحلة التالية ، تتم إضافة التفاصيل: تظهر مجموعة من الغرف ، متصلة بواسطة البوابات ، والتي تم تصميمها لتمريرها في اتجاه معين:
الشكل 2: هيكل المضافةتعد خرائط Tile رائعة لإنشاء هندسة مستوى ، لكن من العملي أكثر استخدام الرسوم البيانية لإنشاء هياكل ومنطق اللعب. هذا ما يفعله المولد بعد ذلك:
الشكل 3: الرسم البياني الأساسيفي الرسم البياني ، تحتوي بعض العقد على شبكات فرعية ، وفي حالتنا ، يتم وضع علامة على معظم البوابات على أنها خطرة (H) ، ويتم تمييز بعضها على أنها مفتوحة (O).
بناءً على تحليل بسيط إلى حد ما وقواعد عامة ، تتم إضافة عناصر جديدة إلى الرسم البياني. على سبيل المثال ، تقع نقطة النهاية (G) في موقع بعيد بما فيه الكفاية عن المداخل. بالإضافة إلى ذلك ، يتم إضافة المخاطر الصغيرة إلى الرسم البياني لجعل المستوى أكثر تهديدًا.
الشكل 4: إضافة عناصر جديدة إلى الرسم البياني.
في غضون ذلك ، يتم تحويل خريطة تجانب منخفضة الدقة باستخدام العديد من وظائف الضوضاء في خريطة تجانب عالية الدقة لمنحها مظهرًا طبيعيًا أكثر:
الشكل 5: خريطة البلاط عالية الدقة
ثم يتم استخدام المعلومات من الرسم البياني لتزيين خريطة التجانب وإضافة عناصر جديدة:
الشكل 6: بطاقة البلاط المزخرف.يتم إنشاء الخريطة لأنها يتم إنشاؤها فقط للعرض في اللعب. تشير البلاطات البيضاء إلى المساحات المفتوحة ، وتشير جميع البلاطات الأخرى تقريبًا إلى عناصر لعب محددة للغاية ، على سبيل المثال ، ممر سري عبر الأدغال (الدوائر الخضراء) أو "البوابات في الغابة" (المربعات الخضراء والمشارب أرجواني) أو أماكن تفرخ لربط الأشجار (الدوائر الحمراء مع خطاب ق). لا يزال الجزء الرئيسي من المستوى غير محدد ، ويفترض المولد في هذه المرحلة أنه ينبغي ملء هذه المناطق لمنع حركة اللاعب.
يقوم بهذه المهمة على عدة طبقات: تشير الطبقة السفلى إلى مستوى الارتفاع ونوع السطح ، بينما تضيف الثانية الماء في مواقع معينة ، وتضيف الطبقة الثالثة الغطاء النباتي وغيرها من الزخارف.
الشكل 7: أنواع سطح الأرض (الأعشاب والطين والأحجار)الشكل 8: الماءالشكل 9: الغطاء النباتي وغيرها من الزخارفثم يتم إضافة هذه الطبقات إلى ملف بيانات المستوى النهائي ، حيث يتم إضافة بعض التفاصيل. تستخدم اللعبة هذه البيانات لوضع الأصول وبناء المستوى كما تراه. هناك العديد من الحيل في هذه المرحلة. على سبيل المثال ، قد تلاحظ أن البلاط الأرضي في الشكل أعلاه له أشكال غريبة. تُستخدم هذه النماذج لإنشاء "تجانب" أرضي بطريقة لا يلاحظ فيها اللاعب أن البيانات المصدر كانت خريطة تجانب. سأتحدث عن هذا في الجزء الثاني من المقال.
الشكل 10: مستوى جاهزمضيفا اللعب
هناك العديد من الفوائد لهذا الأسلوب الجيل المستوى. تعتبر مرحلة تحويل المستوى إلى رسم بياني مهمة بشكل خاص من أجل تبسيط "المنطق" حول طريقة اللعب إلى المولد. في المثال الموضح أعلاه ، لم نقم بأي شيء سوى التحقق من أن أهداف المستوى يتم إنشاؤها على مسافة ما من المدخلات. ولكن بالنسبة للمستويات الأخرى في هذه المراحل ، يتم تنفيذ المزيد من المهام.
خذ على سبيل المثال خريطة كهف بأسلوب زنزانة أكثر كلاسيكية (مقارنة بمستوى الغابات من المثال أعلاه). يحتوي الرسم البياني الأساسي لهذا المستوى على مدخل واحد فقط واثنين من أنواع البوابات الجديدة. الزوجان مغلقان (يسارًا): بعض البوابات تصيد اللاعب من جانب واحد (T) ، والأخضر الغامق أسميه "الصمام": يسمح هذا النوع من البوابة للاعب بالذهاب في اتجاه واحد فقط.
الشكل 11: العد الأساسي للكهفيسمح هيكل هذا المستوى للمولد بإنشاء مهمة أكثر تعقيدًا. على سبيل المثال ، الطريقة الوحيدة للوصول إلى هذا المستوى هي من خلال "صمام" ، مما يجبر اللاعب على البحث عن مخرج آخر. يقع المفتاح لفتح الطريق (أسفل اليسار) وراء الخطر في أعلى اليسار ، والهدف يقع وراء البوابات التي تحبس اللاعب. مثال على مثل هذا الهدف هو مرور ينهار خلف اللاعب. بشكل عام ، يُنشئ هذا كهفًا مثيرًا للاهتمام لاستكشافه بمفرده ، ولكن Unexplored 2 أيضًا لديه القدرة على إضافة كائنات وأحداث تمتزج في وقت التشغيل.
الشكل 12: أقفال ومفاتيح تضاف إلى الكهفباستخدام العملية الموضحة أعلاه ، يتم استخدام الرسم البياني لإنشاء وملء خريطة تجانب مفصلة بالكامل. يؤدي تطبيق العديد من المعلمات التي تعكس طبيعة الكهف لهذا المستوى إلى نتائج متباينة للغاية مع الهياكل تحت الأرض المدمرة (المربعات الزرقاء الموضحة بالحرف c) والهاوية الواسعة ذات المسامير (الدوائر ليلك):
الشكل 13: مستوى الكهف بتفاصيل كاملةلتلخيص
أتمنى أن تكون قد حصلت على فكرة عامة عن كيفية تعاملنا مع جيل المستويات في Unexplored 2. هذه عملية معقدة متعددة المراحل ، أخطط لكتابة المزيد عنها في المستقبل القريب. على الأقل وعدت بالفعل لك أن تكتب عن تطبيق جيل الأبراج المحصنة الدورية. لكن يمكنك معرفة المزيد ، بدءًا من أساليب سرد القصص التوليفية وخطوط التقديم وطرق التظليل إلى عملية التصميم المطولة التي استخدمناها لإنشاء نظام الحظ ، بالإضافة إلى الجوانب الأخرى.
الجزء 2. من البلاط إلى المنحنيات ، أو المرح مع التهم Voronoi
مولد المحتوى غير المستكشف 2 يولد خرائط البلاط. تبدو النتيجة النموذجية كما يلي:
يتم تكديس بطاقات البلاطة هذه فوق بعضها البعض وتستخدم بلاطات مختلفة للإشارة إلى أنواع سطح الأرض (في هذا المثال العشب أو الأوساخ) ، وكذلك الزخارف المختلفة. في هذه الحالة ، توجد عدة شجيرات (دوائر خضراء كبيرة) وحجارة (دوائر سوداء) ونباتات (دوائر خضراء صغيرة) وزهور (دوائر بيضاء) وقوام زخرفية (مربعات رمادية). هناك أيضًا مربعات خاصة تشير إلى بيانات اللعب ، على سبيل المثال ، نقاط التفريش المميزة بالحرف "s". بالإضافة إلى ذلك ، يمكن تمييز البلاط بمعلومات إضافية ، على سبيل المثال ، مستوى الارتفاع أو الأنواع الفرعية الخاصة.
خرائط البلاط هي بنية بيانات ملائمة للمولدات. ولكن في نفس الوقت ، يكون الأمر واضحًا جدًا ، وغالبًا ما تكون الشبكة ملحوظة في اللعبة. ومع ذلك ، بعد تحميل البيانات في اللعبة ووضع الأصول ، تبدو النتيجة كما يلي:
أعتقد أننا أخفينا البلاط جيدًا ، وهذا ما حصلنا عليه.
فورونوي ماجيك
الحيلة هي أن البلاط الفردية تتوافق مع الخلايا في مخطط فورونوي. يمكن استخدام هذا المخطط لإنشاء أشكال طبيعية أكثر بكثير. يتم إنشاء مخطط فورونوي عن طريق زرع الطائرة بنقاط عشوائية وتقسيمها إلى خلايا بحيث تنتمي كل نقطة على المستوى إلى الخلية المقابلة لأقرب نقطة انطلاق. في إنشاء المحتوى الإجرائي ، يمكن استخدام مخططات فورونوي بعدة طرق مثيرة للاهتمام.
يتم إنشاء مخطط فورونوي نموذجي من توزيع عشوائي ، ولكن موحدة إلى حد ما من نقاط توليد ، والتي تبدو مثل هذا:
في UnExplored 2 ، نستخدم نوعًا مختلفًا من توزيع نقاط التوليد. أولاً ، نولد نقطة واحدة لكل بلاطة. لذلك يمكننا التأكد من أن كل بلاطة على خريطة التجانب سوف تتوافق مع خلية واحدة في مخطط فورونوي.
إذا وضعنا نقاط التوليد في وسط كل خلية ، فسنحصل على شبكة مستقيمة تشبه تمامًا خريطة التجانب (لهذه الصور وغيرها من الصور أدناه ، لقد صنعت نسخة من لعبة الشطرنج التي يتم فيها تقديم نصف المربعات باللون الأصفر بحيث يمكنك القيام بعمل أفضل قليلاً انظر الأنماط):
أسهل طريقة هي تحسين المخطط من خلال اختيار موقع كل نقطة توليد بشكل عشوائي. عند تحريك النقاط ، يجدر التحقق من أن النقطة لا تتجاوز التجانب الأصلي.
النتيجة تبدو شيء مثل هذا:
بالفعل أفضل ، ولكن صاخبة جدا ، وبالتالي لا تحصل على خطوط متعرجة جميلة. يمكن تحسين الصورة عن طريق إجراء "استرخاء" لمخططات فورونوي (هذه تقنية قياسية لهم ، والتي لن أناقشها هنا). لكن سيظل دائمًا صاخبًا بعض الشيء ، ومن الصعب التنبؤ بفعالية بالأرقام على مقياس يتجاوز حجم الإطارات الفردية.
لحل هذه المشكلة ، لا نحتاج فقط إلى التحرك بشكل عشوائي ، ولكننا نتعامل مع هذا أكثر ذكاءً. أنواع مختلفة من الحركة يمكن أن يكون لها تأثير مختلف جدا. على سبيل المثال ، عند استخدام ضوضاء Perlin ، يتم الحصول على بطاقات بلاط متعرج مثيرة للاهتمام. أو يمكنك تحويل الشبكة بالكامل إلى مربعات سداسية عن طريق تحريك كل سطر ثانٍ من نقاط التوليد إلى اليسار:
لقد حققنا طفرة حقيقية عندما بدأنا في تحريك نقاط التوليد في أنماط معينة لإنشاء زوايا مستديرة. يتم بالفعل تنفيذ المرحلة الأولى من هذه العملية داخل مولد المستوى. يتم التعرف على الزوايا بين أنواع مختلفة من سطح الأرض ، ويتم تمييز بلاطات الركن بأشكال مختلفة ، مما يشير إلى الطريقة التي يتم بها تشوهها لتوليد بيئة أكثر جمالا:
في هذه الحالة ، يؤدي الاختلاف في مستويات الارتفاع أيضًا إلى ظهور الزوايا على خريطة التجانب. لهذا السبب ترى زوايا دائرية إضافية في العشب في أعلى اليمين وأسفل اليسار ، حيث تم إنشاء المنحدرات.
تستخدم اللعبة هذه المعلومات لتحويل نقاط التوليد في الرسم البياني Voronoi. كل زاوية مستديرة تنقل موقع النقطة الأصلية (انظر الصورة أدناه). بالإضافة إلى ذلك ، يقوم أيضًا بتغيير نقاط التوليد الخاصة بجيرانه الأربعة المتعامدين. هذه العملية تراكمية. يمكن توليد نقاط توليد عدة مرات إذا كانت قريبة من عدة زوايا. ومع ذلك ، بعد معالجة جميع الإزاحات ، تكون نقاط التوليد عشوائية بعض الشيء (حوالي 10٪ من عرض البلاط في كل اتجاه) ، ويقتصر الإزاحة النهائية على حد أقصى قدره 40٪ من عرض التجانب.
والنتيجة هي بالفعل الحصول على جودة عالية جدا:
لكننا لم تنته بعد ...
تزيين بحكمة
أصبح الشكل العام أفضل ، ولكن لا تزال الحواف مستقيمة للغاية وتبدو وكأنها خشنة. سنقوم بإخفاء ذلك عن طريق وضع أصول منحنية على الحواف حيث تختلف الألوان. ومع ذلك ، فإن الخدعة الحقيقية هي أن المنحنى يوضع غالبًا على حافتين ، ويتم استخدام زواياهما بالنسبة لبعضهما البعض لتحديد اتجاه المنحنى.
النتيجة تبدو مثل هذا:
بعد ذلك ، استخدمنا الأصول ثلاثية الأبعاد لإضافة قصاصات نسيج:
أخيرًا ، نضيف أصلًا آخر لملء المستوى. يتم تحديد موقع هذه الأصول من خلال بيانات المستوى التي تم إنشاؤها مسبقًا ، وبصورة عامة تتبع مبادئ بسيطة. نحن نستخدم الأصول الصغيرة المحيطة بالأكبر لإنشاء تحولات طبيعية وجميلة. على وجه الخصوص ، تجدر الإشارة إلى أن الحجارة تضاف عند سفح المنحدرات ، مما يخلق التباين ويخفف بصريًا المنحدرات العمودية اللازمة للعب:
التقلبات المحلية
الزوايا ليست هي النوع الوحيد من النزوح الذي نستخدمه. على وجه الخصوص ، نريد أن تكون الحواف أكثر استقامة بجوار الهياكل الصناعية (على سبيل المثال ، الجدران المدمرة الموضحة أدناه):
في نظامنا ، هذا التأثير سهل التحقيق. نضيف ببساطة قاعدة أخرى للنزوح ، والتي تحظر إزاحة البلاط مع هياكل من صنع الإنسان. يستخدم المولد مربعات صغيرة لتمييز مثل هذه المربعات ، وتضمن اللعبة تجاهل كل الإزاحات بكل بساطة:
إذا نظرت إلى الأرض ، يمكنك أن ترى بوضوح أن بعض المناطق تكون مستقيمة ، بينما تنحني مناطق أخرى بشكل طبيعي:
أليس جميلا؟
هناك قواعد أخرى يمكن إضافتها بسهولة باستخدام هذه التقنية. على سبيل المثال ، في بعض الأحيان نجبر البلاط على إنشاء نمط سداسي بحيث تظل المسارات الضيقة واسعة بما يكفي للتنقل حولها. أنا متأكد من أننا سوف نجد استخدامات أخرى لأنماط أخرى.
هذا هو أحد الأسباب التي تجعلني أحب مخططات فورونوي. مرة أخرى ، سأكتب عن كيفية استخدامنا لإنشاء وتزيين خريطتين عالميتين غير مستكشفتين.