إنشاء لعبة 35MM. آخر نهاية العالم في روسيا



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

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




نظرًا لأن لدي بالفعل مشروعان صغيران (Light and Train) ، بالإضافة إلى خبرة في محرك Unity ، فقد بدأت في تطوير لعبة جديدة فيه. إذا لم أكن مخطئًا ، فقد كان الإصدار الخامس من المحرك متاحًا بالفعل في ذلك الوقت ، لكنني إلى حد ما متحفظة (ليست أفضل صفة احترافية) ، لذلك قررت أن أبقى في الإصدار 4.7. لفهم عام ، هناك اختلافات كبيرة بين الإصدارين 4 و 5 من المحرك ، خاصة فيما يتعلق بالتجسيد والإضاءة والمواد. قدمت الوحدة 5 تظليلات دقيقة جسديًا يمكنها عكس الضوء وعرض ردود الفعل بشكل صحيح. وبكلمات بسيطة - تبدو الوهج وانعكاسات المواد ذات التظليلات هذه أكثر طبيعية وجاذبية. في الإصدار 4 ، كانت التظليلات الأساسية أبسط بكثير ، ومع ذلك ، فإن كتابة تظليلك الخاص يمكن أن يحسن بشكل كبير من جودة الصورة. سنتحدث عن هذا في وقت لاحق قليلا. من الواضح أن تطوير اللعبة يتضمن العديد من الجوانب ، بالإضافة إلى العمل في المحرك نفسه. من أجل أن يكون للمحرك شيء ما ، يجب أن يكون المحتوى: النماذج ، القوام ، الأصوات ، البرامج النصية ، إلخ. كل هذا في النهاية نرى على الشاشة ونسمع في الأعمدة. وبالطبع ، كل نوع من أنواع المحتوى يتطلب برمجياته الخاصة. لإنشاء نماذج ثلاثية الأبعاد ، استخدمت 3D max ، للعمل مع رسومات ثنائية الأبعاد وإنشاء مواد - Photoshop ، للعمل مع الصوت - Adobe Audition ، كتبت الرمز في برنامج Monodevelop الذي يأتي مع Unity. أوصي بشكل خاص أن تغمض عينيك أو تنتقل إلى الفصل التالي - اللعبة مكتوبة بلغة Javascript. فقط SHH ، لا تخبر أحدا. أنا أعرف أنه بالنسبة للبعض هذا مذاق سيء ولا أحد يكتب على جافا سكريبت. بشكل عام ، يتم تحديد الأدوات الرئيسية وسير العمل يسير ببطء بعيدا.


كيف بدأ كل شيء


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



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





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



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





للاكتمال ، يبقى التعامل مع السماء. لهذه المهمة ، تم استخدام مادة skybox عادية بستة مواد. كانت هناك محاولات لتعديل التظليل بحيث بدت السماء ديناميكية ، لكن النتيجة لم تبرر نفسها ويجب التخلي عن هذه الفكرة. وكان البديل هو استخدام نظام الجسيمات مع نسيج سحابي ولوحات إعلانية أفقية مع مراهقات الحركة. بقدر ما أتذكر ، تم استخدام خيار مماثل في لعبة Stalker ، وهناك بالفعل الكثير في أي مكان آخر.



إضاءة


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





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



نموذج


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







"أغنية" منفصلة كانت إنشاء شخصيات. هذه لا تزال تجربة. بالنسبة لأولئك الذين ليس لديهم فكرة جيدة عن مقدار العمل المطلوب من أجل ظهور شخصية قادرة على الوجود بطريقة ما في اللعبة ، سأوضح ذلك. يتم إنشاء نموذج عالي بولي مع كل التفاصيل ، أزرار على الأكمام ، التجاعيد على الوجه ، الخ يتم إنشاء نموذج منخفض بولي من نفس الحرف مع مسح الملمس (في لعبتي كان عدد المضلعات لكل حرف في المتوسط ​​حوالي 5-8000). علاوة على ذلك ، الخريطة العادية ، تتم إزالة الخريطة المحيطة (التظليل الناعم) من النموذج عالي بولي للنموذج المنخفض بولي عن طريق التلاعب الماكرة أو غير المعقدة. أنا عادة من المحيط ثم قم بعمل خريطة منتشرة في Photoshop. في الخريطة المنتشرة في قناة ألفا ، قم بإنشاء خريطة براق لإنشاء تألق.





لعام 2019 ، بالطبع ، إنه بالفعل بدائي للغاية ، ولكن لمدة 16 عامًا وبالنسبة لمشروع إيندي كان مناسبًا تمامًا.

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



تظليل


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





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



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

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



لذلك نحن ننتقل بسلاسة إلى الآثار اللاحقة. عند الحديث عن قطرات على الشاشة ، كل شيء بسيط: بضع قطرات من النسيج تتكاثر وتتحرك لأسفل بسرعات مختلفة. بالتوازي مع ذلك ، تتحرك الموجات (قوام متدرج) إلى الأسفل ، والتي يتم ضربها ، كل بمجموعة من القطرات الخاصة بها. ثم يتم تلخيص الأمر برمته ، ويتم عرضه قليلاً في "الانتشار" ، إذا جاز التعبير ، ولكنه يستخدم بشكل أساسي كقناع لتغيير الإحداثيات. نتيجة لذلك ، يتم تشويه صورتنا بسبب انكسار قطرات الماء. المجموعة الرئيسية من التأثيرات اللاحقة التي كانت دائمًا أو اختيارية على الكاميرا (إذا قام المشغل بتشغيلها أو إيقاف تشغيلها) هي الحواف ، SSAO ، Bloom ، Aberration ، Vignette ، Sun Shafts. هذه كلها تأثيرات موحدة للوحدة ، ولكن تم تعديل SSAO بحيث يتم تقليل تقديم الظلال من مسافة إلى صفر ، لأنه في المسافة في الضباب ، تبدو البقع الداكنة للظلال غريبة. تم تغيير تأثير الانحراف أيضًا (هذا هو تشويه ألوان الصورة عند استخدام العدسات ، مثل تشبه الألوان في حواف الكائنات) .التأثير القياسي من Unity رسمت حواف الكائنات ذات اللون الأخضر الغامق (حل غريب إلى حد ما في رأيي). في الواقع ، غالباً ما تكون الألوان أقرب إلى الأصفر والأحمر والأزرق ، وهذا ما أدركته. كان هناك تأثير دائم آخر هو تصحيح الألوان المصنوع ذاتيًا. بدا لي تأثير الوحدة القياسي كثيف الاستخدام للموارد ، لذلك تم تحقيق تأثيره البسيط والمبسط. في الأساس ، قام بإنشاء تأثير التنغيم وتغيير نظام الألوان قليلاً إلى نظام أكثر برودة. يعد اختيار لوحة ألوان لصورة مهمة صعبة دائمًا يصعب تحديدها. يحدث أنك قد ترغب في عكس الخيارات تمامًا واتخاذ قرار صعب للغاية. في هذا المشروع ، استقرت بألوان باهتة وباردة. بالنسبة للكثيرين ، بدت باهتة للغاية ، لكن يبدو لي أنها تنقل بدقة الحالة المزاجية التي حاولت التعبير عنها في لعبتي ، مزاج الحزن واليأس والوحدة.





ماذا عن الكود؟


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

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



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



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

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

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



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

الأمثل


يُعد التحسين جزءًا مهمًا جدًا من التطوير ، يعتمد عليه مدى سلاسة اللعبة على الأجهزة المختلفة. سوف أتطرق إلى تحسين المكون المرئي للمشروع. هناك العديد من الطرق المفيدة لهذا: مجموعات من النُزل ، يتم إعدام الذبح ، قطع الكائنات على مسافة. يجب استخدام مجموعة LOD في حالة الأجسام عالية الكثافة "الثقيلة". للقيام بذلك ، قم بإنشاء عدة شبكات مع عدد مختلف من المضلعات. كلما ابتعدت الكاميرا عن الموضوع ، كلما تم تبسيط النموذج في الإطار. على سبيل المثال ، في 35MM ، تم استخدام النزل في نماذج من السيارات والشخصيات وبعض الأشجار. عادةً ما يتم إجراء 2-3 دورات ، من بينها كل شبكة لاحقة بها مضلعات أقل بنحو مرتين تقريبًا. من أجل الوضوح: يتكون طراز السيارة الأصلي من 15 ألف مضلع ، ولود الأولى لديها بالفعل حوالي 9 أطنان.(عدد الأضلاع يتناقص ، الأجزاء الصغيرة مثل المفصلات ، تتم إزالة الأجزاء الداخلية) ، LOD الثاني يصل إلى 5 أطنان بالفعل (تتم إزالة مقابض الأبواب والمرايا داخل المقصورة وتصبح الهندسة أسهل). كذلك في نفس السياق. للنزل ، بالمناسبة ، تم استخدام خدعة واحدة مثيرة للاهتمام. عندما نخبز خرائط ضوئية لكائن ذي مسكن ، يجب أن نخبز لكلا الكائنين. من أجل تقليل الوقت اللازم للخبز وحفظ ذاكرة النظام ، استخدمت برنامج نصي ينقل تلقائيًا خريطة الإضاءة المخصصة مع جميع الإحداثيات من الكائن الأصل (صفر LOD) إلى جميع النُزل الأخرى.تم استخدام خدعة واحدة مثيرة للاهتمام. عندما نخبز خرائط ضوئية لكائن ذي مسكن ، يجب أن نخبز لكلا الكائنين. من أجل تقليل وقت الخبز وحفظ ذاكرة النظام ، استخدمت برنامج نصي ينقل تلقائيًا خريطة الإضاءة المخصصة مع جميع الإحداثيات من الكائن الأصل (صفر LOD) إلى جميع النُزل الأخرى.تم استخدام خدعة واحدة مثيرة للاهتمام. عندما نخبز خرائط ضوئية لكائن ذي مسكن ، يجب أن نخبز لكلا الكائنين. من أجل تقليل وقت الخبز وحفظ ذاكرة النظام ، استخدمت برنامج نصي ينقل تلقائيًا خريطة الإضاءة المخصصة مع جميع الإحداثيات من الكائن الأصل (صفر LOD) إلى جميع النُزل الأخرى.

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



طريقة أخرى مفيدة لتبسيط العرض هي عن طريق قص الكائنات عن بعد. هذا هو الخيار الأول الذي التقيته منذ وقت مشروع "الضوء". يتم تعليق البرنامج النصي على الكاميرا التي تضبط مسافة العرض لكل طبقة. في حالتي ، تم إنشاء ثلاث فئات من الطبقات بشكل خاص ، مع أشياء صغيرة (الأدوات المنزلية والمطارق والطوب والحطام الصغير) ، بأحجام متوسطة وأعلى بقليل من الأحجام المتوسطة (أقداح الشاي ، والشجيرات ، وأواني الزهور ، وأعمدة الانارة الصغيرة ، وما إلى ذلك). تم تخصيص ثلاث فئات مسافات: 40 و 80 و 120 متر. بمجرد تجاوز المسافة المحددة ، توقفت الكاميرا عن تقديم الكائن المقابل. الخيار مناسب وفعال للغاية ، حيث لم يعد بالإمكان رؤية الدعائم الصغيرة من بعيد ، وبالتالي ، فإن جعلها غير منطقية.

الصوت


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

كانت هناك خطوة أخرى مثيرة للاهتمام وهي العمل مع الشخصيات التي تمثل الصوت. على الرغم من الانتقادات من الخارج ، ما زلت سعيدًا بالنتيجة وأعتقد أن الممثلين قاموا بعملهم جيدًا. بالمناسبة ، الشخصيات الرئيسية التي عبر عنها Vsevolod Petrykin والكسندر Bragi ، والتي شكرا جزيلا لهم.

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

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

Source: https://habr.com/ru/post/ar448340/


All Articles