نصائح لاستخدام خوارزمية طي دالة الموجة

صورة

لقد قمت مؤخرًا بتجربة الكثير مع الجيل القائم على القيود الإجرائية. على وجه الخصوص ، مع خوارزمية طي دالة الموجة (WFC ، انهيار دالة الموجة). حتى أنني كتبت بلدي مكتبة مفتوحة المصدر و حدة الأصول .

WFC خوارزمية مرنة للغاية ، خاصة مع التحسينات التي طورتها. ولكن في نفس الوقت ، وجدت صعوبة في إنشاء مستويات عملية تنطبق على ألعاب الكمبيوتر بمساعدتها . الصعوبة الرئيسية هي أن WFC ليس لديها أي هيكل عالمي. كل ما يفعله هو جعل توليد الناتج يبدو مشابهًا محليًا للمدخلات ، على سبيل المثال ، من خلال النظر إلى مستطيلات صغيرة فردية من الناتج.

في هذه المقالة سأخبرك بما تعلمته وما الذي سيكون قادرًا على رفع المولدات بناءً على القيود إلى مستوى جديد.

أساسيات


من الصعب استخدام WFC إذا كنت لا تعرف كيف يعمل. هذه خوارزمية توليد إجرائي قائمة على القيد والتي حظيت باهتمام كبير في الآونة الأخيرة. في الواقع ، لا علاقة لها عمليًا بمفهوم فيزياء الكم الذي تم تسميته على شرفه.

WFC من السهل تكوين - كنت مجرد إعطاء خوارزمية بطاقة سبيل المثال، وبعد ذلك يولد البطاقات الجديدة التي تبدو مثل بطاقة الأصلي بسبب الاستخدام المتكرر للشظاياه الصغيرة.

لديها نوعان - مع ترتيب مجاور أو مع تراكب العناصر. يمكن القيام به في 2D أو 3D ، وحتى على شبكات السداسي أو غير مستويةشبكات. تنطبق معظم النصائح الخاصة بي بغض النظر عن كيفية استخدام الخوارزمية.

أقترح عليك اللعب بهذا العرض التوضيحي للحصول على فكرة عن الخوارزمية ، وقراءة هذه المقدمة [ الترجمة على حبري] إذا كنت مهتمًا بالتفاصيل الفنية.

تصميم بلاط


خوارزمية WFC تعتمد على البلاط. وبهذا المعنى ، تعتمد جودتها على البلاط الذي تنقله إليه للعمل. أنا لست فنانًا ، لذا يمكنني المساعدة قليلاً في رسم مجموعات البلاط الجميلة (على الرغم من أنه يمكنك البحث هنا ) ، لكن مجموعة البلاط الجيدة تتطلب أيضًا معرفة فنية.

مكعبات المسيرة


مكعبات المسيرة هي خوارزمية تحدد المربعات المطلوب تعيينها اعتمادًا على ما إذا كان كل رأس من البلاط ممتلئًا أم فارغًا. فيما يلي قائمة البلاط المستخدمة ل 2 D.


إذا قمت ببناء بلاط بحيث تتطابق الزوايا السوداء والبيضاء دائمًا ، فستتصل الخطوط الحمراء دائمًا بشكل صحيح.

هنا لا نحتاج إلى فهم الخوارزمية بأكملها ، ولكن تجدر الإشارة إلى أن فكرة تصميم البلاط مع مراعاة سلوكهم فقط في الزوايا هي تقنية قوية جدًا. يتم استخدامه في العديد من أفضل البلاط ، لأنه يضمن ربط البلاط دائمًا بشكل جيد.

هذه التقنية قوية بشكل خاص لـ WFC. حدث ذلك ، لأنه إذا فاتك عدد قليل من البلاط ، فإن WFC لن يهم. سيتحايل على هذه المشكلة ولن ينشئ أبدًا تكوينات تتطلب بلاطات مفقودة. هذا مناسب جدًا للأبعاد ثلاثية الأبعاد ، نظرًا لوجود العشرات من البلاط المحتمل ، وبعضها مطلوب فقط في المواقف الصعبة للغاية. راجع قسم "المؤسسة" أدناه ، حيث أستخدم هذه الحيلة على نطاق أوسع.

قد يكون من المفيد أيضًا معرفة أنماط البلاط الأخرى ، ولكن Marching Cubes هو الأفضل.

الغرف


في بعض الأحيان يكون من الأسهل العمل مع البلاط البسيط. هذا المزيج المكون من 4 بلاطات (بلاطة فارغة) يولد غرفًا مربعة بسهولة.



يمكن تغيير حجم الغرف بسهولة عن طريق تغيير وزن كل بلاط. بعد إضافة بلاط الباب والممر ، يمكنك إنشاء التنوع الذي يميز مخططات طوابق الأشخاص.

مؤسسة


عند العمل مع WFC ، من المثير للاهتمام تجربة البلاط. إذا قمت ببساطة بوضع بلاطة ، فإن WFC تسعى إلى تحقيق أقصى استفادة من المساحة المتبقية. يؤدي هذا في بعض الأحيان إلى نتائج مختلفة جذريًا ، كما يمكن رؤيته في صورة Maxim Gumin:


يمكننا استخدام هذا السلوك لتحفيز WFC لتوليد العديد من الهياكل المعروفة.

في ما يلي مثال على قلعة (مستوحاة من greentecq ):


في ذلك ، استخدمت البلاط التالي:


هذه البلاط لها خاصية مهمة - جميع البلاط في القاعدة لها عرض لا يقل عن في الأعلى. هذا يعني أنه من غير الممكن بناء هذه المربعات بطريقة غير مدعومة. يستجيب WFC على الفور لهذا ويخلق المباني ذات الأساس الجيد.

تقريب تقسيم الفركتال


من خلال دراسة موضوع تحفيز بعض السلوكيات عن طريق اختيار البلاط المناسب ، وجدت أنه إذا كان البلاط يتكون من طرق وفروع مستقيمة ، ولكن بدون زوايا ، يمكنك الحصول على تقريب جيد للانقسام العودي (بدون الجزء "العودي"). هذا جيد جدًا لمستويات الشبكة.

بلاط كبير


يمكنك إضافة WFC لدعم البلاط التي تكون أكبر عدة مرات من البلاط العادي. على سبيل المثال ، هذا مدعوم في ملحق Tessera الخاص بي .

يمكن استخدام البلاط الكبير بطرق مختلفة. نظرًا لأنها تمتد خارج حدود الشبكة ، يمكنك استخدامها لإضافة منحنيات أكثر سلاسة وأوسع مما يمكن عادة عند الانجذاب إلى الشبكة. كما أنها رائعة للعناصر من عدد كبير من البلاط ، أو ببساطة لإخفاء أن الجيل يعتمد على البلاط.

في ما يلي مثال للتعلم من Oscar Stalberg من لعبة Bad North . يوضح أوسكار كيف استخدم البلاط الكبير لإضافة سواحل منحنية بسلاسة ، ومنازل كبيرة ، وتقلبات جرف.


محددات


في جوهره ، WFC هو خوارزمية قائمة على القيود. هذا يعني أنه يسعى إلى إنشاء مستويات تتوافق مع مجموعة محددة من المعايير. في WFC النقي ، يوجد معيار واحد فقط - أن المستويات تبدو محليًا مثل إدخال عينة. أدناه ، سأتحدث عن تحسينات WFC لإضافة أنواع جديدة من القيود.

بلاط ثابت


من السهل جدًا إصلاح البلاط الفردي قبل إنشاء مستوى في WFC. في وقت لاحق يندمجون بسلاسة مع المستوى الناتج.


قبل الجيل


بعد التوليد

يمكن استخدام هذه التقنية بعدة طرق مختلفة. إليك بعض الأفكار:

  • - , WFC .
  • ,
  • / WFC



مسارات التحديد (قيد المسار) - هذه مساهمتي الخاصة في WFC. هذه تقنية قوية للغاية ، ولكن المقالة الكاملة تتطلب على الأرجح مقالة منفصلة. يفحص

هذا التقييد جميع المخرجات المتولدة عالميًا ، ويشير بالقوة إلى أن المسار يجب أن يمر بين المربعات المميزة. أو بعبارة أخرى ، فإنه يخبر مجموعة فرعية من البلاط لتشكيل مكون واحد من الرسم البياني . نظرًا لطبيعته العالمية ، فإنه يكمل سلوك WFC المعتاد ، الذي يأخذ في الاعتبار البلاط المحلي فقط.

اكتشفت أن إضافة هذا التقييد يؤثر بشدة على مظهر المستوى المولد. بدونه ، غالبًا ما يولد WFC العديد من الغرف أو المناطق المقسمة التي تبدو غير واقعية ولا يتم إنشاؤها من قبل البشر.





. .


هناك موقف آخر يكون فيه تحديد المسار مناسبًا ... رسم المسارات. بشكل افتراضي ، يضمن تقييد المسار فقط وجود مسار بين المربعات. لا يضمن أن المسار سيكون بسيطًا قدر الإمكان. لذلك ، في حالة الأنهار والطرق ، غالبًا ما يرسم مفاصل على شكل حرف T في أماكن اختيارية. تكمن الحيلة إما ببساطة في إزالة جميع بلاط المفاصل T ، أو إعطائها وزنًا منخفضًا جدًا ، بحيث يتم اختيارها فقط في حالة الطوارئ.

أحب استخدام البلاط الثابت لإصلاح نقاط النهاية في المسار. وبسبب هذا ، مطلوب تقييد المسار لإدراج مربعات تجعل بقية المسار متصلًا.


المسارات التي تم إنشاؤها عن طريق إصلاح الزوايا الأربع كنقاط نهاية للمسارات

إذا كنت ترغب في تجربة المسارات ، فلدي عرض توضيحي صغير لجافا سكريبت تم وضعه هنا .

تنوع


بلاط بديل


من السهل جدًا إضافة خيارات التجانب إلى خوارزمية WFC. ما عليك سوى إضافة المربعات إلى قائمة المربعات المحتملة ، مما يجعلها تحتوي على نفس اتصالات البلاط التي تحل محلها. أو يمكن القيام بذلك في مرحلة ما بعد المعالجة ، كما هو الحال عادةً في أنماط أخرى من توليد الإجراءات.


اثنان من بلاط الحائط ، أحدهما مع نافذة. إنها قابلة للتبادل تمامًا وتضيف ببساطة تنوعًا في التصميم.

تغير البلاط حسب المستوى


إذا بذلت الكثير من الجهد في إنشاء تصميم مجموعة من البلاط ، فستلاحظ أن عشوائية WFC تبدأ في إلحاق الضرر به. يستخدم البلاط بأكمله ، أي يمكنك الحصول على مستوى مع الحمم المختلطة والثلوج والصحراء. غالبًا ما يبدو هذا غير منطقي تمامًا.

يمكنك استعادة النزاهة بطريقة بسيطة: حدد مقدمًا أي منطقة بيولوجية ينتمي إليها المستوى ، ثم قم بتعطيل جميع البلاط غير المناسب لهذا المجال الحيوي.

Bad North (مرة أخرى) مثال ممتاز على ذلك. في بعض المستويات ، تكون الصخور ممنوعة تمامًا ، وفي مناطق أخرى هناك الكثير من النباتات ، في الأنقاض الثالثة وتضاف المقابر. وهذا يعطي كل مستوى نمطًا فريدًا دون الحاجة إلى تغيير كبير في أسلوب الجيل.


تحتوي حوالي 10٪ فقط من الجزر على عناصر من الكهوف ، تظهر في الركن الأيمن العلوي.

تقلب البلاط داخل الخريطة


خلط البلاط يمكن أن يذهب أبعد من ذلك.

إذا كنت تستخدم WFC لإنشاء بطاقة كبيرة ، فسيبدأ في الظهور بشكل موحد للغاية. هذه نتيجة أخرى لحقيقة أن الخوارزمية هي حل للقيود المحلية .

أفضل حل لهذه المشكلة رأيته في لعبة كهوف القدس . في قصة المطورين حول الجيل ( 1 ، 2 ) ، يقولون أنهم قسموا الخريطة إلى مناطق مختلفة ، ثم بدأوا WFC بمعلمات منفصلة للمجموعات الفرعية من الخريطة. هذا يعني أنه على الخريطة قد تكون هناك منطقة أطلال ومنطقة في المدينة يتم فيها استخدام قوالب وبلاط مختلف تمامًا.


مثال من الرياضيات لمطوري الألعاب: إنشاء الخرائط المستندة إلى البلاط باستخدام انهيار دالة الموجة في "كهوف Qud"

استنتاج


خوارزمية WFC ، مثل جميع تقنيات التوليد القائمة على القيود ، لديها مبدأ توخي الحذر مع رغباتك . من السهل التخصيص والحصول على نتائج جميلة المظهر ، ولكن قد يكون من الصعب جدًا تنفيذ التفاصيل المحددة المطلوبة للعبتك.

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

بلعب Bad North و Caves of Qud . كلتا اللعبتين أمثلة رائعة على استخدام WFC في الظروف الحقيقية ، وقد فكر المطورون جيدًا في الاستخدام الأمثل للخوارزمية في ألعابهم.

All Articles