تاريخ تطور The Light Remake. الجزء 1





تحياتي القارئ! اسمي سيرجي ، أنا مطور ألعاب كمبيوتر مستقل. لدي بالفعل العديد من المشاريع المستقلة في أعمالي ، بعضها تم إصداره ذاتيًا على Steam. كانت لعبة Light or The Light ، التي تم إصدارها في عام 2012 ، أول قلم لي ورائد في عالم تطوير الألعاب. تم توزيع المشروع مجانًا ، لكن رد فعل الجمهور وردود الفعل من اللاعبين أعطاني دافعًا جادًا لمزيد من العمل. أصبح "النور" بالنسبة لي شيئًا مثل حكاية فلسفية عن الإنسانية ومصيرها. الحبكة مجردة ولا تسعى إلى أي أهداف محددة ، إنها مجرد فرصة للتفكير في موضوع واسع.



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







عن ماذا نتحدث؟



ستركز هذه المقالة بشكل خاص على مشروع "Light" وعلى العمل المنجز المتعلق بنقل اللعبة إلى إصدار أحدث من محرك Unity. هذا يعني الكثير من الفروق التقنية. سيتم تقديم المقال في جزأين.



الجزء 1



تم بناء الإصدار الأصلي من اللعبة على Unity 4.2 في عام 2012. ثم في مجال المعلومات الخاص بي لم يكن هناك حديث عن مواد PBR واختبارات الانعكاس والطرق الأخرى ذات الصلة حاليًا. كانت أدوات التظليل الأساسية في Unity بسيطة جدًا وليست واقعية جدًا. بالطبع ، كان من الممكن إضافة الكثير من العناصر الإضافية ، مثل انعكاسات فرينل ، ولكن بعد ذلك كانت برمجة التظليل بالنسبة لي سرًا وراء سبعة أختام. التظليل الرئيسي المستخدم هو Normal Bumped Specular و AlphaTest المنتشر للكائنات ذات الشفافية (أوراق الشجر ، الشبكات المعدنية المتعرجة).



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



تم تحويل الصورة بشكل كبير من خلال التأثيرات اللاحقة على الكاميرا ، ولا سيما Bloom and Color Correction. أضافوا اللون والتنوع ، على الرغم من أنهم كانوا متطفلين للغاية في الأماكن.







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



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



بداية. تظليل وضوء



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







New Standart



تقرر البدء باستبدال المظلات القديمة بـ PBR Standart الجديد. في المقال السابقفيما يتعلق بموضوع تطوير 35 ملم ، فقد ذكرت بالفعل نوعًا جديدًا من تظليل PBR (العرض القائم على أساس مادي) ، مما يعني التقديم المادي الصحيح. لم يعد معيار المواد الجديد يحتوي على معيار o.Gloss و o.Specular المعتاد من الإصدارات السابقة ، هنا لدينا خريطة معدنية (o.Metallic) والنعومة. أيضًا ، هناك المزيد من الفتحات للتركيبات من الفئات المختلفة. على سبيل المثال ، لدينا الفرصة لإضافة خريطة إطباق لتظليل ناعم. هذا التأثير مفيد للغاية لأنه يسمح لك بإبراز الحجم والتظليل في مناطق النموذج حيث يكون الضوء أقل. بدون هذه الخريطة وخريطة الضوء - النسيج ، تبدو الكائنات مسطحة وغير واقعية.







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







الغطاء النباتي



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



سمح نموذج إضاءة LightingRamp المقدم برسم صورة ظلية للظلال على كل من الجانب المضيء من المضلع وعلى الجانب الآخر. هذا يحاكي قدرة أوراق الشجر على نقل الضوء - الشفافية.







يمكن أيضًا استخدام تظليل مماثل لتقديم الأقمشة الشفافة مثل الستائر.







لسوء الحظ ، في هذا الوضع ، فإن العرض التلقائي للجانب الخلفي للمضلع باستخدام طريقة Cull Off لا يعطي نتيجة صحيحة للغاية ، لذلك يجب إضافة Backface يدويًا في المحرر. بعد ذلك ، تمت إضافة الخريطة العادية والبراق إلى التظليل. لم يعد بإمكاني استخدام نموذج إضاءة تظليل PBR وتوصيل مجسات الانعكاس ، ولكن بمساعدة الأقنعة وخريطة الانبعاث ، تمت إضافة محاكاة الانسداد المحيط. وأخيرًا ، كان من الضروري للغاية إحياء كل شيء وإعطاء حركة الغطاء النباتي. مع وظيفة Vertex ونفس القناع ، تظهر المناطق المرغوبة من ألواح أوراق الشجر بالحياة. تستند إزاحة قمة الرأس إلى المثال Normal Extrusion with Vertex Modifier من دليل الوحدة.







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







يلمع



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















ليلا ونهارا



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







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



أيضًا ، عند تغيير الوقت ، قام البرنامج النصي بتعديل اللون المطلوب لـ Global Fog post-effect ، نظرًا لأنه في النهار يجب أن يبدو الضباب كضباب رمادي فاتح ، وفي الليل يجب أن يكون لونه أغمق ، تقريبًا أسود.







نماذج ومحتوى جديد



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















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







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



التأثيرات والتظليل المخصص.



الماء







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







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







المواد الكاوية من



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







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







الجسيمات



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







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



ضباب / دخان



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







الشارات من



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



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











الأرض / العشب



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







الضوء خارج النافذة



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







هذا يختتم الجزء الأول من المقال. رابط للجزء الثاني. شكرا لكم جميعا على اهتمامكم!



All Articles