ميزة الإضاءة للألعاب على الأجهزة الجوّالة مع Unity

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

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

تستند أجزاء من هذه المقالة إلى عمل ساهمت به شركة Arm Limited ومحمية بموجب حقوق الطبع والنشر.

عرض خيارات مسارات التعلّم

يتضمّن مسار العرض القديم في Unity مسارات العرض التالية:

  • العرض الأمامي
  • تظليل مؤجل

العرض الأمامي

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

تظليل مؤجل

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

عند إنشاء عنوان للأجهزة الجوّالة، من المهم أن تعمل اللعبة بسلاسة على أكبر عدد ممكن من الأجهزة.

مسار العرض العام

طوّرت شركة Unity مسار العرض العالمي (URP). ننصحك بشدة باستخدام معيار URP للألعاب على الأجهزة الجوّالة.

أوضاع الإضاءة

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

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

للحصول على مزيد من المعلومات، يُرجى قراءة Unity's Lighting Pipeline.

استخدِم الإضاءة الثابتة وتجنَّب الإضاءة الديناميكية، إن أمكن.

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

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

خَبز باستخدام خريطة Lightmap

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

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

الشكل 1. هي إعدادات الإضاءة الكاملة المستخدَمة في العرض التوضيحي التقني لـ Armies.

لخبز المصابيح، نفِّذ الخطوات الثلاث التالية.

الخطوة 1: ضبط الإضاءة على خيار "مختلط" أو "مخبوز"

اضبط وضع المصابيح على "مختلط" أو "مخبوز". بالنسبة لعناوين الهواتف المحمولة، من الأفضل استخدام "المصابيح المخبوزة" بدلاً من "التشكيلة". الخَبْز هو الطريقة الأقل تكلفة لعرض الضوء.

الشكل 2. تشير هذه السمة إلى خيار Mode (الوضع) للمصباح في Unity.

الخطوة 2: جعل الكائنات ثابتة

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

الشكل 3. مثال على قائمة ثابتة

الخطوة 3: تحضير المصابيح

يمكنك خبز المصابيح باستخدام قائمة الإضاءة المتوفّرة في النافذة > العرض > إعدادات الإضاءة.

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

الشكل 4. مثال على الخرائط الضوئية المخبوزة.

تحسين الخرائط الضوئية

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

في المثال التالي من العرض التوضيحي لـ Armies، توجد سبعة خرائط ضوئية بحجم 1024×1024 بكسل. في معاينة الخريطة، يمكنك رؤية الشبكات الموضوعة على الخريطة الضوئية. تم تمييز الشبكات المتداخلة المحددة.

الشكل 5. هذا مثال على الخريطة الضوئية. يتم تحديد الشبكات الزرقاء.

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

مصممو الخرائط الضوئية

تقدّم Unity الطرق الثلاث التالية لمحاكاة تأثير الإضاءة في المشهد:

  • توضيح: يتوفّر هذا الخيار فقط حتى إصدار الدعم الطويل الأمد (LTS) لعام 2020. لا تستخدم ذلك في المشاريع الجديدة.
  • وحدة معالجة مركزية (CPU) متدرّجة: توفر الكثير من الوقت لأنها تنشئ خرائط خفيفة بشكل تدريجي. في حال اختيار إعطاء الأولوية للعرض، يتم منح الأولوية للمناطق في عرض "المشهد". يمكن أن يؤدي هذا الإجراء إلى تقليل وقت التكرار لإعداد إضاءة Scene.
  • وحدة معالجة الرسومات التدريجية: تعمل هذه الميزة بالطريقة نفسها التي تعمل بها وحدة المعالجة المركزية (CPU) التقدمية، ولكنها تنشئ خريطة ضوئية على وحدة معالجة الرسومات بدلاً من وحدة المعالجة المركزية (CPU). على الأجهزة المتوافقة، يمكن لهذه الطريقة أن تقلل بشكل كبير من وقت الخَبز مقارنةً باستخدام وحدة المعالجة المركزية (CPU). هناك متطلبات إضافية لإعداد وحدة معالجة الرسومات التقدّمية. تعرّف على المزيد من المعلومات حول المتطلبات في صفحة Progressive GPU Lightmapper.

الشكل 6. تتيح لك إعدادات Lightmapper تغيير طريقة محاكاة تأثير المشهد.

بيكسل

البيكسل، أو بكسل الزخرفة، هو بكسل فردي في خريطة زخرفة. تخزن Texels معلومات الضوء في خريطة ضوئية لكل نقطة ضوء تصطدم بجسم ما. يؤثر عدد أكبر من الأجزاء المستخدمة لكل وحدة من المساحة في جودة الإضاءة، والوقت الحاسوبي للخبز، وتكاليف تخزين القرص، وتكلفة VRAM لخرائطك الضوئية.

لتقليل كمية بيانات الخريطة الضوئية المطلوبة، اضبط عدد قطع تكسيك لكل وحدة من الخبز في إعدادات الخريطة الضوئية.

الشكل 7. الإعدادات المتاحة لخرائط الضوء.

في إعدادات الخريطة الضوئية، تتحكّم مَعلمة دقة الخريطة الضوئية في عدد المقاطع القصيرة التي يتم استخدامها لكل وحدة في الخريطة الضوئية. فيما يلي مثال على مكعب له إعدادات مختلفة لـ دقة الصورة الضوئية. يمكنك أن ترى كيف تؤدي الدقة الأعلى إلى زيادة مقدار العمل المطلوب بسرعة.

الشكل 8. المكعّب الأول له درجة دقة خريطة نقطية بقيمة 1. المكعب الثاني له دقة صورة Lightmap تساوي 2. المكعّب الثالث له دقة الصورة الضوئية 5.

لعرض كيفية تخطيط Texels في "المشهد"، اختَر القائمة المنسدلة وضع الرسم في "عرض المشهد" واختَر Baked Lightmap.

يتم حجب العناصر المخبوزة بتراكب شطرنج. يظهر نمط رقعة الشطرنج كيفية توزيع تيلاتك عند خبز المصابيح.

في المثال التالي، يؤدي تقليل دقة الخريطة الضوئية من 15 إلى 12 في العرض التوضيحي لجيوش الجيوش إلى تقليل عدد خرائط الضوء اللازمة من سبعة إلى أربعة.

الشكل 9. عرض توضيحي لـ Armies مع دقة صورة Lightmap لـ 12.

استخدام Texel

بينما يمكنك تحديد عدد texels لكل وحدة في مشهد بأكمله، هناك في بعض الأحيان بعض الكائنات التي لا تحتاج إلى هذا العدد الكبير من texels.

يتيح لك الانسجام التحكم في عدد الأحرف التشعبية التي يستخدمها كل عنصر. في أداة الفحص > Mesh Renderer للكائن، تتحكم قيمة المعلمة Scale In Lightmap في عدد مربّعات الاختيار التي يستخدمها الكائن في الخريطة الضوئية.

في المثال التالي، يحتوي المكعّب الموجود على اليسار على خمسة أجزاء من المعلومات الضوئية لكل وحدة خَبز. تم تعيين Scale In Lightmap في المربع الموجود على اليمين على 0.5. وهذا الإعداد يضبط خطوط الضوء إلى 2.5، مما يتطلب مساحة أقل في الخريطة الضوئية من المربع الموجود على اليسار.

الشكل 10. مكعّبان بدرجات دقة مختلفة لخريطة الضوء.

الشكل 11. يمكنك تغيير الإعداد تركيز في خريطة الضوء بحيث يحتوي الكائن على عدد أقل من الأجزاء.

حاول تجنُّب إنفاق الإعلانات النصية على ما يلي:

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

إضاءة مزيفة قدر الإمكان

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

ظلال وهمية

ظلال الوقت الفعلي باهظة الثمن. ويتم إنشاؤها باستخدام تقنية تُعرَف باسم ربط الظل. تتوافق تكلفة عرض هندسة المشهد على خريطة الظل مع عدد الرؤوس المرسومة مع تمكين الظلال. وننصح بالحدّ من أشكال العناصر الهندسية التي تُبرز الظلال وعدد أضواء الظلام في الوقت الفعلي.

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

  • استخدام شبكة ثلاثية الأبعاد، مثل مستوية أو رباعية، موضوعة أسفل الشخصية وتطبيق زخرفة ضبابية عليها.
  • يمكنك كتابة أداة تظليل مخصّصة لوضع ظلال أكثر تعقيدًا.

يوضّح المثال التالي النتيجة إذا كنت تستخدم شبكة ثلاثية الأبعاد لظل:

الشكل 12. تنفيذ التظليل في الإصدار التجريبي التقني من Armies

عرض معلومات الضوء على الزخارف مباشرةً

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

مجسّات ضوئية

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

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

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

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

يمكنك الاطّلاع على المزيد من المعلومات حول صفحتَي الإضاءة الساكنة باستخدام مجسّمات الإضاءة ومجسّمات الضوء.

الشكل 13. تم وضع مسابر ضوء لإضاءة الحشود الديناميكية في العرض التوضيحي التكنولوجي للجيوش.

إعدادات Mesh Renderer

بغض النظر عن نوع الإضاءة التي يستخدمها تطبيق Scene، من المهم أن تكون إعدادات Mesh Renderer صحيحة.

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

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

الشكل 14. إعدادات العارض المتداخلة لعرض الشكل 13

أنواع مصابيح وإضاءة في الوقت الفعلي

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

لكل نوع مصباح تكلفة مختلفة لحساب الإضاءة. توضح القائمة التالية كل نوع مصباح:

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