أخبار المنتجات

تحسين الأداء لتطبيقات Android XR باستخدام Unity

قراءة لمدة 6 دقائق
Luke Hopkins
مهندس علاقات المطوّرين، Android

سماعة الرأس Samsung Galaxy XR متوفّرة الآن وتعمل بنظام التشغيل Android XR. هذه مشاركة في مدونتنا ضمن أسبوع Android XR Spotlight الذي نوفّر فيه مراجع، مثل مشاركات في المدونة وفيديوهات ونماذج من التعليمات البرمجية وغير ذلك، وكلها مصمّمة لمساعدتك في التعلّم والإنشاء وإعداد تطبيقاتك لنظام التشغيل Android XR.  

أطلقت Samsung هذا الأسبوع سماعة الرأس Galaxy XR التي تم إنشاؤها بالتعاون مع Google وQualcomm. هذا وقت مثير للمطوّرين، وأردنا مساعدتك في تحقيق أفضل أداء ممكن لتطبيقك المخصّص للواقع المُمتد.

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

في هذا الدليل، سنشرح لك تحسينات الأداء الأساسية التي عليك فهمها لتطوير تطبيقات Android XR. ستتعرّف على الميزات التي تحقّق أكبر تحسينات في الأداء، ومتى يجب استخدامها، وكيفية عملها معًا لمساعدتك في تحقيق عدد اللقطات المستهدَف في الثانية.

إليك ما نسعى إلى تحقيقه: 

  • الحد الأدنى: 72 لقطة في الثانية (جزء من إرشادات جودة اللعب)
  • اختياري: 90 لقطة في الثانية مع ميزانية قدرها 11 ملي ثانية لكل لقطة

لمزيد من المعلومات حول أهمية الحفاظ على عدد اللقطات العالي هذا في الثانية، اطّلِع على إرشادات الأداء.   

ميزات الأداء الخاصة بالواقع المُمتد

سنبدأ بتغطية ميزتَين خاصتَين بأداء الواقع المُمتد: العرض البؤري وجمع العيّنات الجزئية في Vulkan. 

العرض البؤري

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

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

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

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

جمع العيّنات الجزئية في Vulkan

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

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

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

ميزات وحدة معالجة الرسومات للمشاهد المعقّدة

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

GPU Resident Drawer

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

تكون هذه الميزة أكثر فعالية للمشاهد الكبيرة التي تتضمّن أشكالاً شبكية متكرّرة، مثل الأشجار في الغابة أو الأثاث في مبنى مكاتب أو الدعائم المنتشرة في جميع أنحاء البيئة.

تخيّل مشهدًا في غابة يتضمّن 200 شجرة تستخدم الشكل الشبكي الأساسي نفسه. بدون GPU Resident Drawer، سيكون لديك 200 طلب رسم تستهلك وحدة معالجة الرسومات، وبالتالي توفّر وقت المعالجة لوحدة المعالجة المركزية. عند تفعيل هذه الميزة، ستنشئ وحدة معالجة الرسومات مثيلات ذكية لهذه الأشجار، ما من المفترض أن يقلّل عدد طلبات الرسم إلى 5 أو 10 فقط. هذا توفير كبير لوحدة معالجة الرسومات يمكنك استثماره بعد ذلك في منطق اللعب أو حسابات الفيزياء.

إزالة العناصر غير المرئية في وحدة معالجة الرسومات

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

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

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

مراقبة أدائك

لا يكفي مجرد استخدام هذه الميزات. عليك أيضًا قياس التحسينات التي تجريها، حتى تتمكّن من تحديد تأثيرها والتحقّق من أنّ التغييرات التي تجريها تعمل فعلاً.

‫Performance Metrics API

توفر Performance Metrics API مراقبة في الوقت الفعلي لاستخدام الذاكرة وأداء وحدة المعالجة المركزية وأداء وحدة معالجة الرسومات في تطبيقاتك. تمنحك هذه الواجهة بيانات شاملة من طبقتَي Compositor وRuntime، ما يتيح لك الاطّلاع على ما يحدث بالضبط في تطبيقك.

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

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

بدون هذه المقاييس، ستجري التحسينات بدون معرفة التأثير. تخبرك Performance Metrics API بالحقيقة حول ما يساعد فعلاً في حالة الاستخدام المحدّدة.

برنامج تصحيح الأخطاء في الإطار

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

هل تريد التأكّد من أنّ SRP Batcher يعمل؟ ابحث عن الإدخالات "RenderLoopNewBatcher" في برنامج تصحيح الأخطاء في الإطار. هل تريد التحقّق مما إذا كان GPU Resident Drawer يجمع طلبات الرسم بشكل صحيح؟ ابحث عن الإدخالات "Hybrid Batch Group". تساعدك عمليات التأكيد المرئية هذه في فهم ما إذا كانت إعدادات التحسين تؤثر فعلاً.

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

تحسينات إضافية

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

  • إعدادات URP: أوقِف النطاق العالي الديناميكية والمعالجة اللاحقة للواقع المُمتد على الأجهزة الجوّالة. تقدّم هاتان الميزتان تأثيرًا مرئيًا ضئيلاً مقارنةً بتكلفة الأداء على الأجهزة الجوّالة، لذا ستحصل على تحسينات قابلة للقياس في الأداء مع اختلافات مرئية بالكاد يمكن ملاحظتها.
  • ‫SRP Batcher: يقلّل من الحِمل الزائد لوحدة المعالجة المركزية للمشاهد التي تتضمّن العديد من المواد التي تستخدم نوع التظليل نفسه. من خلال تقليل تغييرات حالة العرض بين طلبات الرسم، يمكنك تقليل وقت وحدة المعالجة المركزية الذي يتم استخدامه في العرض بشكل كبير.
  • معدّل تحديث الشاشة: اضبط ديناميكيًا بين 72 لقطة في الثانية و90 لقطة في الثانية استنادًا إلى مدى تعقيد المشهد. قلِّل عدد اللقطات في الثانية خلال التسلسلات المعقّدة للحفاظ على الثبات، ثم زِد عدد اللقطات في الثانية خلال اللحظات الأبسط للتفاعل بسلاسة فائقة.
  • النسيج العميق/النسيج غير الشفاف: أوقِف هذه الخيارات ما لم تكن مطلوبة تحديدًا لتأثيرات التظليل. تؤدي هذه الخيارات إلى عمليات نسخ غير ضرورية لوحدة معالجة الرسومات تستهلك الأداء بدون تقديم أي فائدة لمعظم التطبيقات.
  • مقياس العرض في URP: يتيح لك هذا الإعداد العرض بدقة منخفضة لتحسين الأداء أو زيادة دقة العرض لتحسين الجودة المرئية.

للحصول على تعليمات مفصّلة حول هذه التحسينات والمزيد، اطّلِع على دليل أداء Unity الكامل لنظام التشغيل Android XR.

الخاتمة

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

إليك خارطة الطريق:

  1. ابدأ بالعرض البؤري وجمع العيّنات الجزئية في Vulkan. تحقّق هاتان الميزتان الخاصتان بالواقع المُمتد توفيرًا فوريًا وملحوظًا لوحدة معالجة الرسومات.
  2. أضِف GPU Resident Drawer وإزالة العناصر غير المرئية إذا كانت لديك مشاهد معقّدة تتضمّن أشكالاً هندسية متكرّرة أو مساحات داخلية.
  3. راقِب كل شيء باستخدام Performance Metrics API لضمان أنّ التغييرات التي تجريها تساعد فعلاً
  4. استكشِف تحسينات URP الإضافية للحصول على مساحة إضافية للأداء

من الضروري القياس باستمرار وتكرار العملية. لن يستفيد كل مشروع من كل تحسين بالتساوي، لذا استخدِم Performance Metrics API للحصول على فكرة واضحة عن ما يساعد فعلاً في حالة الاستخدام المحدّدة.

الخطوة التالية: توسيع نطاق مهاراتك

هل أنت مستعد للاطّلاع على مزيد من التفاصيل؟ يمكنك الاطّلاع على المراجع التالية:

  • دليل أداء Unity لنظام التشغيل Android XR : تعليمات مفصّلة لتنفيذ جميع الميزات التي تم تناولها هنا.
  • بدء استخدام Unity وAndroid XR - إعداد بيئة التطوير و بدء الإنشاء.
  • مستندات المطوّرين لنظام التشغيل Android XR : أدلة شاملة لجميع ميزات Android XR الخاصة
المؤلّف:

متابعة القراءة