بدء تطوير الألعاب في Unity

يوضّح هذا الدليل دورة نموذجية لتطوير الألعاب. بعد قراءة هذا الدليل، قد تجده مفيدًا أيضًا كمرجع.

عند العمل باستخدام Unity، تتألف دورة حياة التطوير من ثلاث مراحل:

  • التخطيط والتصميم
  • التطوير والاختبار
  • النشر والصيانة

التخطيط والتصميم

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

الحصول على مساهمات من جميع أعضاء الفريق

اعمل مع فِرق الفن والهندسة والتصميم والصوت والإنتاج لتحديد مهام التنفيذ وتسجيلها. مثلاً:

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

التصميم للأجهزة الجوّالة

يتضمّن تطوير التطبيقات على المنصات الجوّالة اعتبارات محدّدة، مثل:

  • نسب عرض إلى ارتفاع متغيرة للشاشة
  • استهلاك الطاقة
  • تقييد الأداء الحراري وأداء المعالج
  • الإدخال باللمس
  • التطوير على عدّة منصات
  • واجهات برمجة التطبيقات الخاصة بالرسومات (Vulkan أو OpenGL ES)

للحصول على تفاصيل حول الاعتبارات الخاصة بتصميم الألعاب على الأجهزة الجوّالة، يمكنك الاطّلاع على تطوير تطبيقات Android في Unity من Unity، وأكاديمية Google Play.

التطوير والاختبار

في مرحلة التطوير والاختبار، يمكنك إنشاء لعبتك وإجراء الاختبارات والاستعداد قبل الإطلاق. إجراء بعض الاختبارات الداخلية المحدودة على Google Play للاستعداد لاستيفاء متطلبات الإطلاق يمكنك تحسين استراتيجية النشر وتنظيم مواد العرض في Unity استنادًا إلى نظامَي تسليم مواد العرض في Play وAddressables في Unity.

توضّح الأقسام التالية أدوات Unity وتقنياتها المصمَّمة لمساعدتك في تطوير تطبيقات Android.

عرض

العرض هو عملية رسم مواد العرض الثلاثية والثنائية الأبعاد من مشهد Unity على الشاشة. على الرغم من أنّ محرك Unity يتعامل مع عملية العرض، من المهم مراعاة بعض العوامل الخاصة بمنصة Android.

النقوش

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

وقت عرض اللقطة

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

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

تتضمّن العديد من أجهزة Android معدّلات تحديث للشاشة تبلغ 60 هرتز و120 هرتز. يجب الموازنة بين مزايا استهداف أوقات عرض لقطات أصغر بكثير (استهداف 10 ملي ثانية لمعدّل تحديث 60 هرتز و5 ملي ثانية لمعدّل تحديث 120 هرتز) بدون المخاطرة بتقليل سرعة المعالجة بسبب ارتفاع درجة الحرارة واستنزاف البطارية عند معدّلات العرض الأعلى.

لضبط عدد معيّن من اللقطات في الثانية في لعبتك على Unity، استخدِم Application.targetFrameRate.

تساعدك مكتبة Frame Pacing في نظام التشغيل Android على عرض المحتوى بسلاسة عندما يستغرق تطبيقك وقتًا أطول لعرض الإطار التالي مقارنةً بمعدّل تحديث الشاشة. في إصدارات Unity 2021 والإصدارات الأحدث، يؤدي تفعيل ميزة "مزامنة اللقطات" على Android إلى ضبط معدّل تحديث الشاشة على أفضل قيمة تتطابق مع عدد اللقطات المستهدَف في الثانية. يضمن ذلك عدم استهلاك اللعبة لطاقة البطارية في تحديثات غير ضرورية للشاشة.

لتفعيل المكتبة، انتقِل إلى إعدادات المشروع > المشغّل، وضَع علامة في مربّع الاختيار مزامنة اللقطات المحسّنة ضمن إعدادات Android.

مربّع حوار يعرض "إعدادات المشروع" > "إعدادات المشغّل" > "معدّل عرض اللقطات المحسّن"
الشكل 1. تتوفّر ميزة Optimized Frame Pacing ضمن إعدادات المشغّل في Unity 2019.2 والإصدارات الأحدث.

Vulkan API

Vulkan هي واجهة برمجة تطبيقات للرسومات الثلاثية الأبعاد عالية الأداء ومتوافقة مع عدة أنظمة أساسية، وتتميز بتكاليفها المنخفضة مقارنةً بواجهة OpenGL ES. يمكن أن تستخدم Unity واجهة برمجة التطبيقات Vulkan بطريقتَين مختلفتَين.

Auto Graphics API

يمكنك استخدام Auto Graphics API مع Vulkan، ولكن قد يختلف السلوك حسب إصدار Unity المثبَّت. يمكنك اختيار هذا الخيار من خلال الانتقال إلى إعدادات المشروع > المشغّل > العرض.

يُرجى مراعاة ما يلي عند اختيار إصدار Unity الذي تريد استخدامه:

  • لا تتوافق الإصدارات 2021.1 والإصدارات الأقدم من Unity مع Vulkan عند استخدام Auto Graphics API. تحاول Unity استخدام OpenGL ES 3.2. إذا كان الجهاز لا يتوافق مع OpenGL ES 3.2، ستعود Unity إلى استخدام OpenGL ES 3.1 أو 3.0 أو 2.0 بهذا الترتيب.
  • تستخدم الإصدارات 2021.2 والإصدارات الأحدث من Unity واجهة برمجة التطبيقات Vulkan أولاً. إذا كان الجهاز لا يتوافق مع Vulkan، ستعود Unity إلى استخدام OpenGL ES 3.2 أو 3.1 أو 3.0 أو 2.0.
إعدادات المشروع > إعدادات اللاعب > العرض > واجهة برمجة تطبيقات الرسومات التلقائية
الشكل 2. إعداد Auto Graphics API

واجهات برمجة التطبيقات للرسومات اليدوية

بدلاً من ذلك، يمكنك تفعيل Vulkan يدويًا من خلال إيقاف "واجهة برمجة التطبيقات التلقائية للرسومات". إذا كنت تستخدم الإصدار 2021.1 من Unity أو إصدارًا سابقًا، هذه هي الطريقة الوحيدة لاستخدام Vulkan.

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

Project Settings > Player Settings > Rendering > Graphics APIs
الشكل 3. يمكنك ضبط واجهات برمجة التطبيقات للرسومات يدويًا عند إيقاف ميزة "اختيار واجهة برمجة التطبيقات للرسومات تلقائيًا". ‫Vulkan هو الخيار الأول. تعود Unity إلى استخدام OpenGL ES 3.0.

طلبات الرسم

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

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

للحصول على معلومات حول كيفية تحسين أداء طلبات الرسم في لعبتك، اطّلِع على مقالة التجميع من "فريق دعم Unity".

تظليل

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

زخرفة

تنسيق ضغط البنية المقترَح لبِنى RGB وRGBA على Android هو ASTC. في Unity، الحد الأدنى لخيارات ضغط النسيج التي يجب استخدامها على Android هو ETC2. يمكنك الرجوع إلى ETC2 كخيار احتياطي من ASTC ضمن إعدادات الإصدار في Unity.

يمكنك العثور على قائمة كاملة بالتنسيقات المتوافقة حسب النظام الأساسي في مستندات Unity على الرابط Manual: Recommended, default, and supported texture formats, by platform.

واجهة المستخدم ونِسب العرض إلى الارتفاع

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

يمكنك الاطّلاع على معاينة للأداة في محاكاة لعبتك باستخدام "محاكي الأجهزة" في Unity.

الشكل 4. محاكي الجهاز الذي يشغّل لعبة Trivial Kart

يمكنك العثور على الرمز المصدري للعبة Trivial Kart في مستودع games-samples على Github.

يمكنك التحقّق بسرعة من تخطيط عناصر لوحة واجهة المستخدم وصحّتها في عرض "محاكي الجهاز" من خلال اختيار خيارات الجهاز في القائمة المنسدلة:

إعدادات المشروع > إعدادات اللاعب > ميزة "مزامنة اللقطات المحسّنة"
الشكل 5. يتيح "محاكي الأجهزة" تغيير الأجهزة داخل المحرِّر، ما يتيح لك رصد مشاكل التصميم مبكرًا.
إعدادات المشروع > إعدادات اللاعب > وتيرة الشهرة المحسّنة
الشكل 6. ضَع علامة في المربّع بجانب تفعيل حِزم الإصدارات التجريبية قبل تنزيل حزمة "محاكي الجهاز".

للمزيد من المعلومات حول أساليب تحسين واجهة المستخدم في Unity، يمكنك الاطّلاع على الفيديو التعليمي التالي من Unity: تحسين واجهة المستخدم في Unity.

فيزياء

تم دمج محرك Nvidia PhysX في Unity. قد تكون الإعدادات التلقائية مكلفة على الأجهزة الجوّالة، لذا يجب مراعاة ما يلي:

  • ضَع في اعتبارك عدد اللقطات المستهدَف في الثانية واضبط الخطوة الزمنية الثابتة وفقًا لذلك. يتم ضبط القيمة التلقائية على 0.02 مللي ثانية أو 50 هرتز. يمكنك زيادتها إلى 0.03 أو أكثر لاستهداف 30 لقطة في الثانية.
  • ننصحك بتبسيط أدوات ربط الشبكة وتقليل مصفوفة Layer Collision لتحديد التفاعلات بين عناصر الألعاب من أنواع الطبقات المحدّدة.

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

الملف الشخصي

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

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

يمكنك استخدام أدوات إنشاء الملفات الشخصية التالية بشكل منفصل أو معًا.

  • أداة Unity Profiler: هي أداة متكاملة تمامًا لتحليل الأداء، ويمكن تشغيلها مع الرمز البرمجي في Unity Editor والربط بجهاز Android مستقل يعمل بإصدارات وضع التطوير.

  • ‫Android GPU Inspector باستخدام أداة Android GPU Inspector (AGI)، يمكنك تصحيح الأخطاء على مستوى اللقطة. تُحلّل أداة AGI أيضًا خدمات النظام، بما في ذلك وحدة معالجة الرسومات ووحدة المعالجة المركزية والذاكرة والبطارية وعدادات وحدة معالجة الرسومات.

للحصول على تفاصيل حول إنشاء ملف تعريف للعبة في Unity، شاهِد الفيديو مقدمة حول إنشاء ملفات التعريف في Unity أو اقرأ الدليل النهائي لإنشاء ملفات تعريف لألعاب Unity، وكلاهما من Unity.

إدارة الذاكرة

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

عند العمل في نصوص برمجية مكتوبة بلغة C#‎، يجب توخّي الحذر عند استخدام السلاسل النصية ومقارنات السلاسل النصية وعمليات تخصيص العناصر ذات الصلة بالسلاسل النصية (مثل ملفات JSON لإعدادات اللعبة). تؤدي هذه العمليات إلى تخصيص الذاكرة بشكل متكرر، ويمكن أن تساهم في حدوث تجزئة.

ننصحك باستخدام فئة StringBuilder للتسلسلات الكبيرة من معالجة السلاسل، بدلاً من التسلسل الموضعي للسلاسل (مثل "هذا" + "سيئ" + "جدًا" + "كفكرة" مقارنةً باستدعاءات الدالة StringBuilder.Concat()).

لمزيد من المعلومات حول السلاسل، راجِع مقالة السلاسل والنصوص في مستندات Unity.

تقييم موارد TextAsset وموارد نص JSON وفقًا للنوع ScriptableObjectالمفضّل ScriptableObjects التعامل مع تخزين البيانات في مشاهد متعددة بكفاءة والسماح بإجراء تعديلات من "محرّر" إلى "وقت التشغيل"

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

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

لمزيد من المعلومات حول تنظيم الذاكرة على أجهزة Android وكيفية عمل Unity معها، شاهِد الفيديو Understanding Android memory usage (from Google I/O '18). يشرح الفيديو أنواع مشاكل الذاكرة ومتى يبدأ عمل برنامج Low Memory Killer.

جمع البيانات المهملة

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

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

ضع في اعتبارك مقتطف الرمز التالي لبرنامج فرعي بسيط يتم استدعاؤه من بداية MonoBehaviour:

// Option 1: Bad for memory management - causes allocation each iteration
IEnumerator UpdateEnemyTarget() {
  while (enabled) {
    yield return new WaitForSeconds(1.0f);
    // Some intermittent function check
  }
}

// Option 2: Better for memory management - allocation of yield instruction once, reused each iteration
private YieldInstruction waitForSecond = new WaitForSeconds(1.0f);
IEnumerator BetterUpdateEnemyTarget() {
  while (enabled) {
    yield return waitForSecond;
    // Some other intermittent function
  }
}

يمكنك تعديل ملف نموذج MonoBehaviour لإزالة الدوال Start() وUpdate() التلقائية، وذلك لتجنُّب ترك دوال فارغة عن غير قصد أثناء التطوير.

للحصول على نظرة عامة حول ترتيب تنفيذ أحداث MonoBehaviour، يُرجى الاطّلاع على ترتيب التنفيذ لوظائف الأحداث في مستندات Unity. لمزيد من المعلومات حول إدارة الذاكرة، راجِع الدورة التدريبية إدارة الذاكرة في Unity.

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

تجميع العناصر الجاهزة

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

يمكنك العثور على العديد من مواد العرض الخاصة بالتجميع من جهات خارجية على Unity Asset Store ذات الصلة بإدارة تجميع عناصر اللعبة. يمكنك أيضًا إنشاء إحصاءاتك الخاصة. راجِع مقدمة حول تجميع العناصر في Unity Learn.

عرض مواد العرض

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

يمكنك استخدام خدمة عرض المواد في Play (PAD) لإدارة مواد العرض التي تتطلّبها لعبتك عند التثبيت أو العرض الانسيابي السريع أو عند الطلب. تم دمج حِزم مواد العرض في Unity لتوفير دعم لميزة "التسليم حسب المنطقة"، ويمكنك استخدام الأداة لتحديد العناصر التي سيتم تسليمها.

Addressables

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

للاطّلاع على مثال، راجِع المشروع التجريبي الذي يستخدم حزمة Addressables على GitHub. للحصول على تفاصيل حول تطوير Addressables، راجِع نظام الأصول القابلة للعنونة على مدونة Unity.

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

يمكنك إعداد عرض توضيحي مستقل وتجربة أوضاع الوصول للتعرّف على نظام Addressables. يمكنك أيضًا الاطّلاع على المشروع المفتوح المصدر BuildLayout Explorer for Unity 2019.3 والإصدارات الأحدث، وفحص تقرير buildlayout.txt الذي تم إنشاؤه بواسطة Addressables.

تم تجميع مواد عرض Chop Chop، وهو مشروع مفتوح من Unity، باستخدام نظام Addressables لجميع عمليات التحميل والتفريغ. يمكنك الاطّلاع على تغليف المحتوى باستخدام Addressable Assets | مدوّنة Open Projects للحصول على شرح تفصيلي حول بنية عملية إعداد حِزم Addressables.

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

يتوفّر رمز المصدر الخاص بـ Unity Open Project: Chop Chop على GitHub. على الرغم من أنّ المشروع لم يعُد قيد التطوير، إلا أنّ مستودع git والوثائق لا يزالان متاحَين.

الإضافات التابعة لجهات خارجية

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

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

الشكل 7. قد يكون هناك عدة مجلدات Resources مخفية في المجلدات التي تم تنزيلها من Unity Asset Store. يجب تنظيف هذه الملفات لتجنُّب تضمينها في حِزمة تطبيقك.

النشر والصيانة

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

تحليل الملاحظات الواردة من إصدار محدود

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

على سبيل المثال، يمكنك استخدام أداة Android Performance Tuner لـ Unity وإحصاءات Google لـ Unity للحصول على إحصاءات حول أداء تطبيقك ومؤشرات اللاعبين، ما يتيح لفريق التطوير إجراء تعديلات ونشر تحديثات. يمكنك أيضًا استخدام بيانات الإحصاءات للتخطيط لألعاب تكميلية أو ألعاب ذات صلة في نوع مشابه.

اختبار ألفا واختبار تجريبي

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

يتم توزيع إصدارات Unity من خلال "مجموعات حزمات تطبيق Android". للحصول على معلومات، يُرجى الاطّلاع على الدليل: التسليم إلى Google Play من Unity، والذي يوضّح أيضًا التغييرات من ملفات APK إلى تنسيق AAB.

المراقبة والتتبُّع

أثناء مرحلة التشغيل المباشر والتوزيع للعبتك، يمكنك استخدام Android Vitals للمساعدة في تتبُّع مشاكل الأداء على الأجهزة التي ربما لم تتمكّن من الوصول إليها أثناء التطوير والاختبار. للحصول على التفاصيل، شاهِد الفيديو الميزات الجديدة للألعاب في "مدى الوصول والأجهزة" و"مؤشرات Android الحيوية".

تتضمّن فِرق التطوير الأكبر حجمًا غالبًا مسارات فريدة ومخصّصة لنقل بيانات قياس أداء الألعاب توفّر مقاييس متعلّقة بأداء الأجهزة. ننصحك بالاستفادة من أداة Android Performance Tuner ‏ (APT) والمكوّن الإضافي المتوافق مع Unity لضبط المقاييس المتعلقة بمعدّل عدد اللقطات في الثانية والدقّة التصويرية ومدة التحميل ومعدّل مغادرة التطبيق أثناء تحميله. اتّبِع الدليل المفصّل في مقالة دمج أداة Android Performance Tuner في لعبة Unity.

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