مقدمة
كما هو الحال في دراساتي الأخرى ، لنبدأ بالمقدمة. نلقي نظرة اليوم على أحدث لعبة من المطور الفرنسي Asobo Studio. في المرة الأولى التي رأيت فيها مقطع فيديو لهذه اللعبة في العام الماضي ، عندما شارك زميل معي مقطع فيديو لعب مدته
16 دقيقة . لفت انتباهي آليات "الفئران ضد النور" ، لكنني لا أريد حقًا لعب هذه اللعبة. ومع ذلك ، بعد إصداره ، بدأ الكثيرون في القول إنه يبدو وكأنه تم تصنيعه على محرك Unreal ، لكن هذا ليس كذلك. كنت فضوليًا لمعرفة كيف يعمل التقديم وكم كان مستوحىًا من المطورين من Unreal بشكل عام. كنت مهتمًا أيضًا بعملية تقديم مجموعة من الفئران ، لأنها في اللعبة كانت تبدو مقنعة جدًا ، علاوة على ذلك ، فهي واحدة من العناصر الرئيسية في هذه اللعبة.
عندما بدأت أحاول التقاط اللعبة ، اعتقدت أنه سيتعين علي الاستسلام ، لأنه لم ينجح شيء. على الرغم من أن اللعبة تستخدم DX11 ، والتي تدعمها الآن جميع أدوات التحليل تقريبًا ، إلا أنني لم أستطع تشغيل أي منها. عندما حاولت استخدام RenderDoc ، تعطلت اللعبة عند بدء التشغيل ، ونفس الشيء حدث مع PIX. ما زلت لا أعرف لماذا يحدث هذا ، لكن لحسن الحظ ، تمكنت من إكمال عدة صور باستخدام NSight Graphics. كالعادة ، رفعت جميع المعلمات إلى الحد الأقصى وبدأت في البحث عن إطارات مناسبة للتحليل.
كسر الإطار
بعد أن قمت بتصوير زوجين ، قررت استخدام واحدة من بداية اللعبة لتحليل الإطار. لا يوجد فرق كبير بين السيطرة ، وإلى جانب ذلك ، يمكنني تجنب المفسدين.
كالعادة ، لنبدأ بالإطار النهائي:
أول شيء لاحظته هو وجود توازن مختلف تمامًا في لعبة عرض الأحداث مقارنة بما رأيته في الألعاب الأخرى سابقًا. هناك العديد من مكالمات السحب هنا ، وهذا أمر طبيعي ، ولكن من المدهش أن يتم استخدام عدد قليل منها لإجراء عمليات ما بعد المعالجة. في الألعاب الأخرى ، بعد تقديم الألوان للحصول على النتيجة النهائية ، يمر الإطار بمراحل عديدة أخرى ، لكن في لعبة Plague Tale: Innocence ، فإن رصة ما بعد المعالجة صغيرة جدًا ومُحسَّنة في عدد قليل من أحداث العرض / الحوسبة.
تبدأ اللعبة في بناء إطار من خلال تقديم GBuffer بستة أهداف للتجسيد. ومن المثير للاهتمام ، أن كل أهداف التجسيد هذه لها تنسيق عدد صحيح غير موقّع 32 بت (باستثناء واحد) بدلاً من ألوان RGBA8 أو تنسيقات أخرى خاصة بهذه البيانات. كان هذا صعبًا لأنني اضطررت إلى فك تشفير كل قناة يدويًا باستخدام وظيفة Custom Shader من NSight. لقد قضيت الكثير من الوقت في معرفة القيم التي يتم ترميزها في أهداف 32 بت ، لكن من الممكن أن أفتقد شيئًا على أي حال.
GBuffer 0يحتوي الهدف الأول على بعض قيم التظليل في 24 بت ، وبعض القيم الأخرى للشعر في 8 بت.
GBuffer 1يشبه الهدف الثاني هدف RGBA8 التقليدي بقيم مختلفة للتحكم في المواد في كل قناة. بقدر ما أفهم ، القناة الحمراء هي المعدن (ليس من الواضح تمامًا سبب تمييز بعض الأوراق بها) ، تبدو القناة الخضراء كقيمة خشونة ، والقناة الزرقاء هي قناع الشخصية الرئيسية. أيا من الأسرى التي قمت بها استخدمت قناة ألفا.
GBuffer 2يبدو الهدف الثالث أيضًا مثل RGBA8 مع albedo في قنوات RGB ، وكانت قناة ألفا في كل لقطة قمت بها بيضاء تمامًا ، لذلك لا أفهم تمامًا ما يجب أن تفعله هذه البيانات.
GBuffer3الهدف الرابع هو فضولي لأنه في جميع عمليات التقاط الصور ، يكون اللون أسودًا تقريبًا. القيم تشبه قناع جزء من الغطاء النباتي وجميع الشعر / الفراء. ربما هذا له علاقة بشفافية.
GBuffer 4ربما يكون الهدف الخامس هو نوع من الترميز العادي ، لأنني لم أرهم في أي مكان آخر ، ويبدو أن التظليل يأخذ عينات من الخرائط العادية ثم يخرج إلى هذا الهدف. مع وضع ذلك في الاعتبار ، لم أكن قد اكتشفت كيفية تصورهم بشكل صحيح.
عمق من GBuffer 5قناع من GBuffer 5الهدف الأخير استثناء لأنه يستخدم تنسيق الفاصلة العائمة 32 بت. والسبب في ذلك هو أنه يحتوي على العمق الخطي للصورة ، وأن بت الإشارة يشفر بعض القناع الآخر ، مرة أخرى يخفي الشعر وجزء من الغطاء النباتي.
بعد اكتمال إنشاء GBuffer ، يتم تقليل دقة خريطة العمق في التظليل الحسابي ، ثم يتم تقديم خرائط الظل (خرائط الظل المتتالية الاتجاهية من الشمس وخرائط العمق المكعبة من مصادر ضوء النقطة).
أشعة الشفقبعد الانتهاء من خرائط الظل ، يمكنك حساب الإضاءة ، ولكن قبل ذلك ، يتم تحويل أشعة الله إلى هدف منفصل.
SSAOفي مرحلة حساب الإضاءة ، يتم إجراء تظليل حسابي لحساب SSAO.
مضيئة هندسة مبهمةتتم إضافة الإضاءة من الخرائط المكعبة ومصادر الإضاءة المحلية. كل هذه المصادر المختلفة للضوء ، مع الأهداف المذكورة أعلاه ، تشكل صورة HDR مضيئة نتيجةً لذلك.
عناصر تقديم استباقيةتتم إضافة العناصر المقدمة في التقديم الاستباقي أعلى هندسة مبهمة مضيئة ، لكنها ليست ملحوظة بشكل خاص في هذا المشهد.
بعد تراكم كل الألوان ، انتهينا تقريبًا ، لا يوجد سوى عدد قليل من عمليات ما بعد المعالجة وواجهة المستخدم.
يتم تقليل دقة الألوان في التظليل الحسابي ثم زيادتها لإنشاء تأثير إزهار جميل وناعم للغاية.
بعد تجميع جميع النتائج السابقة ، وإضافة الأوساخ الخاصة بالكاميرا ، وتصنيف الألوان ، وتصحيح الصورة اللونية ، نحصل على ألوان المشهد. يعطينا تراكب واجهة المستخدم صورة من بداية المقالة.
تجدر الإشارة إلى بعض الأشياء المثيرة للاهتمام حول التقديم:
- يستخدم Instancing (ازدواجية الهندسة) فقط للشبكات الفردية (يبدو أنه فقط للغطاء النباتي). يتم تقديم جميع الكائنات الأخرى في مكالمات سحب منفصلة.
- يبدو أن الكائنات يتم فرزها تقريبًا من الأمام إلى الخلف ، مع وجود استثناءات قليلة.
- يبدو أن المطورين لم يبذلوا أي جهد لتجميع مكالمات السحب من حيث معايير المواد.
الفئران
كما قلت في بداية المقال ، أحد الأسباب التي دفعت لاستكشاف هذه اللعبة كان بسبب طريقة تقديم مجموعة الجرذان. لقد خيب ظني القرار من بعض النواحي: يبدو أنه اتخذ بالقوة الغاشمة. هنا أستخدم لقطات شاشة من مشهد آخر للعبة ، لكنني آمل ألا يكون هناك مفسدين فيها.
كما هو الحال مع الكائنات الأخرى ، لا يبدو أن الفئران لديها أي ازدواجية في الشكل الهندسي ، إلا إذا وصلنا إلى المسافة التي نتحول فيها إلى المستوى الأخير من تفاصيل الشبكة (LOD). دعونا نرى كيف يعمل.
LOD0LOD1LOD2LOD3الفئران لديها 4 مستويات اللد. ومن المثير للاهتمام ، في المستوى الثالث ، هو عازمة الذيل للجسم ، في حين أن الذيل الرابع لا. ربما يعني هذا أن الرسوم المتحركة نشطة فقط للمستويين الأولين. لسوء الحظ ، لا يبدو أن NSight Graphics لديها ما يكفي من الأدوات لاختبار ذلك.
لا الازدواجية (instancing) من الفئران.مع الازدواجية.في المشهد الموضح أعلاه ، تم تقديم العدد التالي من الفئران:
- LOD0 - 200
- LOD1 - 200
- LOD2 - 1258
- LOD3 - 3500 (مع ازدواجية الهندسة)
هذا يجعلنا نفهم أن هناك قيودًا صارمة على عدد الفئران التي يمكن تقديمها على أول اثنين من LODs.
في الالتقاط الذي أدليت به ، لم أتمكن من تحديد أي منطق يربط بين الفئران LODs الفردية. في بعض الأحيان ، لا تكون الفئران القريبة من الكاميرا مفصلة للغاية ، وأحيانًا تكون الجرذان التي بالكاد مرئية ذات تفاصيل عالية.
في الختام
حكاية الطاعون: البراءة مثيرة جدا للاهتمام من حيث التقديم. لا شك أن نتائجه أثارت إعجابي ، فهي تخدم طريقة اللعب بشكل جيد للغاية. كما هو الحال مع أي محرك خاص ، سيكون من الجيد سماع تحليل أكثر تفصيلًا من شفاه المطورين أنفسهم ، خاصةً لأنني لم أتمكن من تأكيد بعض نظرياتي. آمل أن تصل مقالتي في يوم من الأيام إلى شخص من Asobo Studio ويرون أن الناس لديهم مصلحة في ذلك.