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





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



الجزء 2



آثار المشاركة



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



جاما



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



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











الضوء الحجمي



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



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







SSAO و SSR



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







الآخرين



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







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



كيف تعمل؟



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



النظام



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



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



نهائيتان



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







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



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



الترجمة والترجمة



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







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



صوت



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



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



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



يعرض الرابط الفيديو الأصلي المستخدم في لعبة 2012 الأصلية.







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



الاقوي



أصبح التحسين أحد أكثر الموضوعات والمهام إيلامًا في العمل على إعادة الإنتاج. لقد حدث أن جميع المشاريع التي قمت بإنشائها مسبقًا على الإصدار القديم من Unity (4.6) كانت بسيطة جدًا من حيث الحمل على الأجهزة. تم تشغيل لعبة 35 مم على GTX 970 بسرعة 200-300 إطار في الثانية في أماكن في مشاهد معقدة ومشغولة إلى حد ما. أظهر الضوء الأصلي ، المبني على إصدار أقدم من المحرك ، معدل إطارات في الثانية أعلى. ولكن عند التبديل إلى Unity 2017 ، انخفض معدل الإطارات بمقدار 2-3 مرات. من الواضح أن المشهد أصبح أكثر تعقيدًا ، وأضيفت حسابات خاطئة للضوء والانعكاسات وتأثيرات لاحقة إضافية وما إلى ذلك. لكنني لم أتوقع مثل هذا الانخفاض الكبير في الأداء. المهم هو أنه حتى بعد إزالة كل المحتوى تقريبًا من المشهد ، لم يرتفع معدل الإطارات في الثانية فوق 200-300. هذه مرحلة نصف فارغة يا كارل!تم القيام بالكثير من العمل لتبسيط بعض الأشكال الهندسية ، وإنشاء مجموعات اللد ، وإعداد استبعاد الانسداد ، إلخ.







أيضًا ، باستخدام برنامج نصي ، تم تخصيص مسافة قطع للكاميرات لطبقات معينة. للتنفيذ ، تم استخدام مثال من أدلة الوحدة. تم تعيين كائنات ذات أحجام مختلفة إلى طبقات منفصلة ، والتي تتوقف عن العرض إذا كانت الكاميرا بعيدة جدًا. الأشياء الصغيرة مثل العلب والقمامة والحطام الخشبي والكتب مقطوعة بعد 20-30 متر. أكبر منها - بعد 60-80. لقد أدت جميع الإجراءات المذكورة أعلاه إلى تقليل عدد عمليات السحب بشكل كبير. في المتوسط ​​، يتراوح عدد مكالمات السحب في مشهد ما من 800 إلى 2000 DC. عدد المضلعات في إطار لا يتجاوز مليون.







قص الإنارة



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



تفاصيل قليلة



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






  • . . « », . . , .






  • , .


  • , , .






  • . “STALKER ” , . , , . , . , / .


  • , — 3 . , , . . .






  • , Half Life Alyx, . , . , . , «», . .






  • , , . , . , Graphics.DrawMeshInstancedIndirect .
  • . , , .








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



أتمنى لكم حظًا سعيدًا وإلهامًا إبداعيًا وإطارات في الثانية عالية!



All Articles