في محاضرته ، ركز على المبدأ الأساسي لبناء العديد من التأثيرات داخل اللعبة ، أو مبدأ التقسيمات. كيف نفذ الاستوديو نظامًا واسع النطاق للتدمير الواقعي ، وما هي القيود المفروضة على موارده الخاصة وأداء النظام الأساسي الذي واجهه ، وما هي التحسينات التي أجراها والدروس التي تعلمها من كل هذا - المزيد في المادة.
لذا ، أولاً عن التحديات التي واجهها الاستوديو.
تجري اللعبة داخل مبنى وكالة حكومية على الطراز الوحشي يحتوي على بعض الميزات الخارقة مثل الجدران المتحركة.
يجب أن يبدو هيكل المقر قابلاً للتصديق ، لأن هذه وكالة حكومية ، حيث يعمل الآلاف من موظفي الخدمة في مهام روتينية. الجداول ، والهواتف ، والأكواب ، والطابعات متعددة الوظائف - كل هذه هي السمات المعتادة لموظف المكتب الذي تتوقع رؤيته في مكان العمل ، وبوجودهم يساعدون في سرد قصة هذا المكان بشكل نوعي. تعني الوحشية أطنانًا من الخرسانة ، ولكن ليس فقط: هنا لدينا كل من الخشب والزجاج ، مما يخلق المظهر الأكثر ملاءمة لمبنى خدمات خاص.
عندما يتعلق الأمر بالتدمير ، فإن أول ما يجب التفكير فيه هو اللمس. تم تكليف فريق التطوير بتنظيم بيئة تفاعلية غنية تخلق على الفور شعورًا بالقدرة على التفاعل مع أي شيء بداخلها تقريبًا.
من الواضح أن الاستوديو واجه قيودًا معينة أثناء عمله. يجب أن تبدو التفاعلات مع الأشياء واقعية. يجب أن يتمتع اللاعب ببعض حرية التصرف فيما يتعلق بالتدمير ، ولكن ليس بلا حدود ، لأن إمكانيات اللعبة تعتمد على الأداء النهائي للمنصات والذاكرة ومتطلبات الذكاء الاصطناعي. في الوقت نفسه ، تبين أن الفريق المكلف بمهمة تنفيذ البيئة القابلة للتدمير صغير جدًا ، والذي كان يجب أيضًا أن يؤخذ في الاعتبار في العمل.
لذلك ، تعتمد قابلية التدمير في اللعبة على مبدأ التقسيمات. وهو أيضًا أساس العديد من المؤثرات الخاصة في التصوير السينمائي. معناه أن الطبيعة غير محددة كميا. إنها لوحة قماشية متصلة تم إنشاؤها من مجموعة واسعة من الأشياء - من الكبيرة إلى الصغيرة ، ومن المواد الصلبة كبيرة الحجم إلى الغبار والدخان. إذا لم ينعكس شيء ما على الشاشة ، فلن تعمل الصورة بأكملها.
في محرك اللعبة ، يمكن تنفيذ هذا المبدأ في ثلاثة مستويات مختلفة من التفاصيل. يتم تقديم الأشياء الموجودة عليها في شكل أجسام صلبة (أجسام صلبة) وأجزائها وأجزاء من الدعائم والدعائم نفسها والبيئة. الأخير في هذه الحالة هو نوع من الشبكة الثابتة التي يمكن أن تصطدم بها الكائنات التفاعلية. تعطي جزيئات الشبكة والتسلسل الهرمي الصلب وشارات المواد الكائنات مزيدًا من التفاصيل حول طبقات معينة. لذلك ، من الأجسام الصلبة ننتقل إلى شظاياها ثم إلى شظايا. الطبقة الأخيرة هي الجسيمات نفسها. تلعب العفاريت والجسيمات والرمل وغيرها دورًا كبيرًا في ملء هذه التدرجات.
تظهر لقطة الشاشة أعلاه بيئة ثابتة. تبدو فارغة جدًا ، على الرغم من وجود بعض التفاصيل هنا: على سبيل المثال ، في الخلفية يمكنك رؤية درابزين الدرج.
إنه لأمر مدهش كيف يتغير الإدراك عندما نبدأ في ملء الفضاء بالأشياء التي يمكننا التفاعل معها مباشرة.
أما بالنسبة لسير العمل في Remedy ، فهو في الواقع تافه للغاية. يوفر فنانو البيئة وحدات ودعائم هندسة المستوى للتجميع ، وبعد ذلك يقوم قسم المؤثرات البصرية بتخصيص الحفارات والرسوم المتحركة للتدمير السينمائي. أخيرًا ، يتم إرسال النتيجة إلى محرك Northlight الخاص بشركة Remedy.
كان من الضروري اتخاذ قرار بشأن نهج لكيفية عمل كل شيء ، واستقر الفريق على نهج إجرائي.
ماذا يعني؟
النهج الإجرائي هو معالجة وتفسير البيانات على أساس القواعد.
يتم تمثيل المعلومات حول عالم اللعبة من خلال نماذج تحتوي على بيانات وصفية حول المواد. لذلك ، يمكنك ضبط ، على سبيل المثال ، أن مقاعد المقعد مصنوعة من القماش ، والقاعدة مصنوعة من الخرسانة ، والنباتات في الواقع نباتات. بعد تحديد المواد ، يمكنك صياغة مجموعة محدودة من القواعد لكل منها ، وتحديد ردود الفعل على جميع الإجراءات التي يمكن القيام بها في اللعبة. على سبيل المثال ، عندما تتطاير قطع الأوراق من النباتات ، تتكسر الخرسانة إلى شظايا ، ويتشوه الأنبوب المعدني ، وينفجر الماء منه. ثم يتم إعادة توجيه جميع البيانات إلى المحرك ، وهو يتفاعل بالفعل مع كل تفاعل حسب الاقتضاء.
فلماذا التدمير الإجرائي؟
لأنه كانت هناك حاجة إلى تحول سريع ومتسق في الإجراءات ، وسلوك يمكن التنبؤ به ضمن شروط محددة بوضوح. هناك المئات من الأصول المشاركة في اللعبة. في الصورة أعلاه ، يمكنك رؤية جميع أنواع الكتل التي تشكل الغرف والجدران والأعمدة والسلالم والدرابزين والمزيد. تحته الدعائم المختلفة: الطاولات والكراسي والمزهريات والنباتات وأجهزة الكمبيوتر والهواتف. لتنفيذ تدمير مجموعة متنوعة من الكائنات ، تم اختيار فريق من 1-3 أشخاص فقط. لذلك ، كان من الضروري التحديد المسبق للأنماط التي يعمل العالم وفقًا لها: إذا تأثر شيء بطريقة معينة ، فمن الضروري أن ينكسر تمامًا كما هو موصوف للطريقة المختارة لتدمير مادة معينة.
لذلك ، كان من الضروري تحديد سلوك معين اعتمادًا على المادة. لذلك عندما تطلق النار على الشجرة ، فإنها ستطير إلى أشلاء. أو إذا أطلقت النار على الزجاج ، فسوف يتفتت إلى شظايا. في الوقت نفسه ، يجب أيضًا أن تتصرف الجسيمات والشارات بطريقة معينة وفقًا لما يتكون منه الكائن.
كل مادة لها هندسة كسر خاصة بها ، محددة بمستويات مختلفة. في المثال ، نرى قطعة من الدرابزين ، في قاعدتها خرسانية ، ثم دعامة معدنية وأخيراً خشب. من اليسار إلى اليمين ، تظهر المراحل عند كسرها:
- يُظهر المستوى A كسرًا في الخرسانة. لا توجد ملصقات هنا ، لأنه لا يزال هناك عدد قليل من الشقوق. يمكن ملاحظة أن الدعم منحني قليلاً.
- المستوى ب. ذهب المعدن ، ولكن بقي المزيد من الخرسانة والخشب المكسور.
- C : , .
الآن دعونا نتخيل أننا اصطدمنا بزاوية معينة من جسم ما - فلا ينبغي أن ينكسر تمامًا ، بل جزء منه فقط.
لذلك ، في التحكم ، هناك أجسام صلبة هي كائن واحد. ولكن هناك أيضًا تفاصيل مرتبطة بالروابط. هذه هي نفس الأجسام الصلبة التي يمكن أن يفصلها ما يسمى بالاصطدام المركب.
يتم إنشاء الأجزاء أثناء التهيئة ، وتتشارك في مصادم مشترك ، وتتحرك كقطعة واحدة حتى تنكسر. إنها متصلة ببعضها البعض من خلال تلك الأسطح التي تلمس بعضها البعض.
دعنا نتحدث عن الاتصالات. يتم إنشاؤها في تسلسل هرمي هندسي على أساس البيانات الوصفية. ترتبط المواد الصلبة ببعضها البعض بنوع من المفصلات - على سبيل المثال ، في حالة الباب أو الدرج. يمكن تدميرها ديناميكيًا ، مرة أخرى من خلال قوة الدافع.
هناك فيزياء خاصة لتدمير المركبات. لا ينكسرون مع الشيء - أي إذا قمت بعمل ثقب في الباب ، فسيظل الباب كائنًا كاملاً ، متماسكًا معًا بواسطة وصلات داخلية. وبالتالي ، إذا كسرت الكتلة الأصلية RB1 ، فلن يسقط الباب عن مفصلاته: ستظل قطعة منه متصلة بالفتحة ، ولن تتأثر بالتأثير. ولا يزال من الممكن إغلاق باب به فتحة في المنتصف وفتحه كما هو متوقع. وبالتالي ، أراد المطورون تجنب المواقف التي تنكسر فيها الأشياء تمامًا ، بغض النظر عن مكان وقوة سقوط الضربة ، كما هو الحال في بعض الألعاب.
تدير محاكاة نورثلايت الخاصة منطق التدمير وتحدد الأحداث والجسيمات التي تتفاعل معها. ثم يقوم محرك الفيزياء NVIDIA بنمذجة الأجسام الصلبة ويحاول ملاءمتها مع قيود اللعبة.
التدمير نفسه يتحقق على النحو التالي. لدينا بعض هندسة الإدخال. في بعض الأحيان يكون من الضروري إعداد النموذج مسبقًا ، وتعيين هندسة اللصق وتحديد الحالات التي يمكن أن تنكسر فيها الأجزاء. ثم يتم إرسال النماذج إلى Houdini ومعالجتها هناك. التدمير في Houdini هو إعداد HDA واسع النطاق إلى حد ما ينفذ تفاعلات قائمة على المواد ويكتب البيانات في الذاكرة. اضطررت أحيانًا إلى إصلاح بعض البيانات الوصفية للفيزياء وتعيينها يدويًا للتأكد من صحة الإعدادات ، خاصةً عندما يتعلق الأمر بالاتصالات. ثم يتم نقل جميع البيانات إلى المحرك ، حيث يتم استخدامها لإنشاء عالم اللعبة.
تبدو أداة التدمير في Houdini مثل هذا. لنفترض أن لدينا كتلة خرسانية كمدخل. من الضروري تحديد المناطق التي يمكن أن تنكسر وتضبط المادة. في هذه الحالة ، ستقوم الكتلة بتنفيذ التدمير وفقًا للقواعد الموضوعة للخرسانة وإدارتها وإنشاء تسلسلات هرمية مختلفة من حيث عرض الهندسة والتصادمات. ثم تحتاج إلى التأكد من أن النمذجة تتم في حدود الميزانية والأسلوب اللذين حددتهما. بعد ذلك ، يمكنك تصدير النموذج إلى المحرك.
يبدو مثل هذا في المحرك. لديك نوع من التسلسل الهرمي الذي يحمل معلومات حول الطبقات A و B و C وما إلى ذلك. وهذا يشمل اسم المادة ، سواء كان الكائن ثابتًا أم لا ، والبيانات الموجودة على الاتصالات وأنواعها وما إلى ذلك. يتم تمثيل التسلسل الهرمي بالمستويات ، وتختلف الخصائص الفيزيائية اعتمادًا على اسم المادة. إذا تم تحديد الاسم بشكل صحيح ، تتم معالجة الفيزياء بواسطة المحرك. سنتحدث عن مشكلة الأسماء لاحقًا.
أعلاه هو سيناريو محاكاة صلبة. أطلق جيسي النار على الأشياء من حولها ، فتنفجر ، وبذلك أدركت فيزياء الدمار.
نظرًا لأن البيئة القابلة للتدمير هي شيء كثيف الموارد ، ولأن وحدات التحكم وأجهزة الكمبيوتر لها حدود أداء خاصة بها ، فقد واجه الفريق مهمة تحسين النظام بحيث لا يفرط في تحميل الأجهزة.
نظرًا لأنه كان من الضروري التوافق مع ميزانية أداء معينة ، فقد تم تعيين حد على 200 مادة صلبة نشطة على الشاشة - لذلك اختفت الكائنات الموجودة خارجها تمامًا.
في حالة الأحداث التي تتضمن العديد من الأجسام سريعة الحركة ، هناك تأخير في التصادمات بحيث يكون لدى النظام الوقت لإجراء جميع الحسابات.
تم أيضًا تنفيذ وضع السكون للعناصر غير المستخدمة. على سبيل المثال ، إذا سقطت كتلة خرسانية على الأرض ، فلا أحد يتوقعها أن تبدأ في القفز مثل الكرة ، لذلك يمكنها "النوم" بسرعة كبيرة. هذا ينطبق على العديد من العناصر في اللعبة. للسبب نفسه ، يمكن تكديسهما فوق بعضهما البعض ، كما أنهما سيظلان بلا حراك بنفس الطريقة.
بالإضافة إلى ذلك ، تم ملء الفجوات بين العناصر بالجزيئات. وهكذا ، عندما يتم تدمير جسم ما ، يتشكل غبار أو رقائق حوله.
كل شيء في اللعبة منظم وقائم على الأحداث. توجد أحداث الجسيمات التالية:
- تأثير الرصاصة ، والتي لها نتيجة مختلفة اعتمادًا على المادة ؛
- قطع الاتصال بين جزأين ؛ في هذه الحالة ، يحدث القشط ، وإطلاق الجزيئات ؛
- تدمير كامل للجسم ، مما يؤدي إلى تفككه إلى جزيئات.
ما سبق يوضح عملية تحرير الجسيمات. مباشرة في اللعبة ، يمكنك وضع نظام جسيمات معين ثم تغييره. في هذه الحالة ، يتغير تواتر تكوين الشرارة ببساطة. ومن المثير للاهتمام ، أنه يمكنك تغييره فعليًا في الوقت الفعلي والحصول على استجابة فورية فورًا ، ثم تشغيله مرة أخرى ومعرفة كيفية عمل التأثير. عند تنفيذها بهذه الطريقة ، تتيح لك حلقة التكرار السريع تلميع أشياء كهذه حتى يتم عرضها بشكل صحيح.
ميزة أخرى للجسيمات هي النمذجة القياسية. من وقت لآخر ، كان على الفريق استخدام حقول المسافات الموقعة (SDF). بفضل هذا ، كان من الممكن التأكد من عدم سقوط الأشياء عبر الأرض ، مما سيبدو غريبًا للغاية.
في المثال أعلاه ، الكائن القابل للتدمير هو تكافل بين الجسيمات والمادة الصلبة. هذا ما نراه. يخلق الانفجار غبارًا في الهواء بسبب طبقات إضافية من الجسيمات التي تملأ الفجوات المفقودة في التدرج الحبيبي.
والأخير - ملصقات المواد ، والتي يوجد الكثير منها في اللعبة ويتم إنشاؤها بشكل ديناميكي. في الأساس ، هي مجرد مواد يتم تطبيقها على الكائنات لخلق مظهر التدمير.
إذا انكسر شيء ما ، فسيظهر ملصق به صورة تشققات على العنصر. عادة ما يتم إنشاؤها في Houdini أو ما شابه. في Control ، يتم اختيار الملصق المطلوب ديناميكيًا بناءً على المادة. كما أنه ساعد في الاستفادة من قدر كبير من الهندسة الثابتة. كما تم توضيحه في البداية ، هناك دائمًا العديد من الأشياء الثابتة من حولنا ، والتي يمكن أيضًا أن تخضع لنوع من التأثير الذي يجب أخذه في الاعتبار.
هذا ما يبدو عليه. إذا كسرت الأرضية ، فسيظل المضلع نفسه كما هو ، ولكن مع ظهور الملصقات ، يمكن أن يتغير مظهره كثيرًا. تجدر الإشارة إلى أنها اقتصادية للغاية وفعالة في الاستخدام.
لذلك لدينا الجسيمات والمواد الصلبة والملصقات. في هذا المثال ، كان عليّ أن أذهب إلى بعض الحيل ، لأن أداة انفجار بسيطة لن تولد الكثير من الشارات. الآن "يرمي" جيسي شيئًا يمكن أن يترك انبعاجًا في الأرض. في الوقت نفسه ، تظل الأرضية مضلعًا ثابتًا ، ولكن بفضل الملصقات ، تظل علامات التأثير عليها.
دعنا نتطرق أيضًا إلى موضوع الدعائم المخصصة. هناك العديد من العناصر داخل اللعبة التي يمكن أن تتناثر حولها - طفايات الحريق وأجهزة الكمبيوتر والمصابيح وما شابه - والتي لا يمكن إنشاؤها من الناحية الإجرائية بالكامل. لا يزال يتعين على فنانين البيئة ضبط التأثيرات لكل منهم يدويًا. ومع ذلك ، من خلال وجودهم ، يبدو العالم داخل اللعبة أكثر ثراءً وتنوعًا.
إذن ، ما هي الدروس التي تعلمها الاستوديو من Control؟
الأشياء التالية تستحق التطرق إليها هنا:
- ;
- ;
- ;
- .
الأول هو جودة الهندسة. يمكن أن تنتج هندسة الإدخال غير المتسقة عن القياس والتوجيه غير الصحيحين ، ولكن أيضًا من تعيينات المواد غير الصحيحة. في بعض الأحيان ، قد تكون جودة الشبكة منخفضة جدًا ، وسيكون لهذا أيضًا تأثير ضار على النتيجة. يحدث أيضًا أنك عندما تكسر شيئًا ما ، فإنك تدرك أنه لا يوجد شيء بداخله ، وهذا خطأ. لتجنب مثل هذه المشاكل ، من الضروري تحسين بيانات الإدخال وتوحيد خط أنابيب الهندسة بالكامل بحيث يحذر النظام أثناء التصدير إذا كان هناك شيء لا يفي بالمعايير ويحتاج إلى تصحيح. سيساعد هذا في تجنب حلقات التغذية الراجعة المستمرة بين الإدارات المختلفة التي تبحث بالضبط عند ظهور المشكلات.
بالإضافة إلى ذلك ، سيكون من الجيد أن يكون لديك أدوات مدمجة بحيث يمكنك نمذجة كائن وترى على الفور كيف سيبدو عند تدميره. من الواضح أن هذا يمثل تحديًا يتمثل في صنع المزيد من الأدوات بواجهات أفضل ، لكن الأمر يستحق العناء.
تعودنا على تسمية أشياء مختلفة. لكن المشكلة هي أن هذه الأسماء قد تكون غير صحيحة. على سبيل المثال ، يوجد في Control 17 تعيينًا مختلفًا لمادة "الخرسانة" ، ولا يمكن إلقاء اللوم على أي شخص ، لأنه يوجد دائمًا عامل بشري. نصيحة ريختر هي التخلي عن معيار التسمية تمامًا. من الأفضل أن يكون لديك فقط واجهة برمجة تطبيقات للبيانات الوصفية. بهذه الطريقة ، بغض النظر عن الأداة التي يستخدمها الفنانون لإنشاء الدعائم ، من الممكن تصدير البيانات إلى المحرك مباشرة من هناك دون أي خطوات وسيطة.
الدرس التالي هو في الغالب محدد هوديني. خلاصة القول هي أنه في كثير من الأحيان ، عند بدء العمل على شيء ما ، فإنك تعيده عدة مرات في العملية ، وتقوم ببعض الوظائف الإضافية ، وتحتاج إلى التأكد من أنه حتى بعد عامين من العمل ، يمكنك فتح الملف المصدر على الرغم من أن أداة العمل قد تغيرت بالفعل 20 مرة. هذا يعني أنك بحاجة إلى نوع من التوحيد للعمل مع HDA. هذا هو ما تعمل عليه Remedy الآن: لضمان توزيع كل شيء بشكل صحيح ، حتى لا تفقد أي إصدار من الأداة أبدًا ولديك دائمًا فرصة لتكرار ما فعلته في الماضي.
من المهم الإشارة هنا إلى أنه عند إنشاء أدوات آلية ، فأنت في الواقع تستخدم نفس البرنامج كما لو كنت تفعل كل شيء يدويًا. وطالما أن لديهم نفس الخلفية ، يجب أن يكون كل شيء متسقًا تمامًا.
يعد الأداء والاختبار من أهم جوانب التطوير.
لم تكن الاختبارات مؤتمتة في Remedy في البداية. بعد إضافة كائنات جديدة إلى المستوى ، كان من الضروري المرور بها يدويًا للتحقق من أن كل شيء يعمل بشكل صحيح. ولكن بعد ذلك تغير شيء ما في المحرك ، وتغيرت الواجهة الخلفية ، وتم تحسين شيء ما ، وبعد ذلك كانت إعادة الاختبار مطلوبة. هذا أمر خطير للغاية ، لأنك بالتأكيد ستنسى التحقق من شيء ما. باختصار ، ليست أفضل طريقة ، مما يؤدي إلى تراكم محتمل للأخطاء.
الجانب الثاني هو اختبار الأداء. لفترة طويلة ، لم يقيس Remedy أي مقاييس مهمة مثل معدل الإطارات أو وقت الحساب. وبالتالي ، غالبًا ما تم اكتشاف مشاكل الأداء بعد فوات الأوان.
ما يمكن فعله هنا هو أولاً وقبل كل شيء تحسين مؤشرات الأداء. من الضروري تحديد المعلمات التي ستؤثر على اللعبة بشكل أفضل أو أسوأ ، من أجل الاعتماد على ذلك عند تحسين وتحديد ميزانية لا يمكن تجاوزها.
بالإضافة إلى ذلك ، يمكن أن يساعدك الاختبار الآلي ، حيث يمكنك أيضًا تغيير الإخراج لإظهار تأثير التغييرات في المحرك بشكل أفضل.
يمكنك أيضًا تحديد واتخاذ إجراء ضد تدهور الأداء. على سبيل المثال ، لجعل الأمر كذلك خلال الأحداث واسعة النطاق ، فإن بعض الأجسام تتجاوز المستويات المتوسطة من التدمير - على سبيل المثال ، من المواد الصلبة التي تذهب مباشرة إلى الجسيمات.
مقياس آخر هو تقسيم المنطقة حسب الحمل المتوقع. تستند هذه الفكرة إلى حقيقة أنه يمكننا أن نحدد أنفسنا على أي منطقة نطبق بعض الإجراءات المضادة حتى لا نطبقها على جميع الأصول على المستوى عندما لا يكون ذلك ضروريًا. على سبيل المثال ، إذا وصل الأعداء بالقنابل اليدوية قريبًا في الوقت المناسب إلى جيسي ، فمن الواضح أنه سيكون هناك الكثير من الدمار في الموقع ، وخلال هجومهم ، يمكن تسريع عملية التدمير.
ونتيجة لذلك ، أود أن أشير إلى أن فريق Remedy قد قام بعمل ضخم ، يمكنك من خلاله الحصول على الكثير من الأفكار فيما يتعلق بتنفيذ وتحسين نظام التدمير الإجرائي للبيئة.