يوضِّح هذا الدليل كيفية تصغير حجم اللعبة. بعد التثبيت، تتطلب لعبة أصغر حجمًا وقتًا أقل للتنزيل وبيانات أقل. يؤدي كلا الخيارين إلى ارتفاع معدلات الإحالات الناجحة لتثبيت التطبيقات. توضّح أبحاث Google أن زيادة حجم حزمة APK المعروضة بمقدار 6 ميغابايت تؤدي إلى انخفاض بنسبة 1% في معدل التثبيت. ينقل العديد من المطوّرين الأصول من حزمة APK إلى شبكة توصيل المحتوى (CDN)، ولكن بعد ذلك يتحمّلون تكاليف استضافة شبكة توصيل المحتوى (CDN) وتطوير نظام إدارة الأصول وصيانته.
لتقليل حجم اللعبة، يمكنك اتّباع الخطوات التالية:
- استخدام طرق عرض محسّنة، مثل حِزم التطبيقات وعرض مواد العرض في Play:
- تحديد الحجم الأساسي للعبة وفهم هيكلها
- ابحث عن مواد العرض والملفات الأخرى التي يمكن تصغير حجمها.
- افحص زخارف الرسومات وحدد الفرص المتاحة للتحسين.
- اتّبِع الاقتراحات العامة المتعلقة بمواد العرض.
استخدام طرق عرض محسَّنة مثل "مجموعة حزمات تطبيق Android" و"عرض المواد في Play"
ضع في اعتبارك طرق الإرسال التالية:
على الرغم من أنّ المشاريع القديمة تُنتج عادةً حزمة APK في عملية النشر، يجب أن يستخدم نشر الألعاب على Google Play مجموعة حزمات تطبيق Android. توفر حِزم التطبيقات حِزم APK محسّنة ومصمَّمة خصيصًا لإعداد جهاز كل مستخدم. في المتوسط، تقلل حِزم التطبيقات حجم التطبيق بنسبة 20%
لعرض مواد عرض الألعاب عبر Google Play وتجاوز الحد الأقصى لحجم التنزيل الذي يبلغ 200 ميغابايت لحِزم التطبيق التي يصل حجمها إلى عدة غيغابايت، استخدِم عرض المواد في Play (PAD). ولا حاجة إلى شبكة توصيل المحتوى (CDN) خارجية. يدعم PAD ثلاث طرق تسليم مختلفة، يمكن استخدام كل منها في لعبة واحدة:
- وقت التثبيت: تنزيل مواد العرض عند التثبيت ويتم تجميع الأصول في حزم مواد عرض والتي تحلّ محلّ ملفات Opaque Binary Blob (OBB).
- المتابعة السريعة: يمكنك تنزيل مواد العرض بعد التثبيت.
- محتوى مسجّل: تبدأ اللعبة تنزيل مواد العرض حسب الحاجة.
تتطلب ميزة PAD أن يتم تجميع الألعاب باستخدام تنسيق App Bundle. يمكن أيضًا لـ PAD تقليل كمية البيانات التي تستخدمها شبكة توصيل المحتوى (CDN) للمطور (إذا كان لا يزال هناك حاجة إليه).
يستخدم Google Play مجموعات حزمات تطبيق Android لإنشاء وعرض ملفات APK محسّنة لإعدادات الجهاز لدى كل مستخدم. وتتضمّن حِزم APK المحسَّنة هذه مجموعة واحدة من أصول الزخرفة، تم تنسيقها باستخدام تنسيق الضغط الأمثل للجهاز. يمكنك ضبط حِزمة تطبيقك لتتوافق مع تنسيقات مختلفة لضغط الهيئة لإتاحة أكبر مجموعة من الأجهزة.
تحديد الحجم الأساسي للّعبة وفهم هيكلها
للتعرف على اللعبة، وتحديد مقدار العمل المطلوب لأي تحسين معين، وتحديد ما إذا كانت اللعبة تقوم بتنزيل مواد عرض إضافية، قم بتنفيذ الخطوات التالية:
- استخدِم إصدار إنتاج (غير تصحيح الأخطاء) من المطوّر أو حزمة APK المنشورة.
- سجِّل حجم الملف الثنائي إما على أنّه تم تسليمه من قِبل المطوّر أو في صفحة اللعبة على "متجر Play" إذا تم نشر اللعبة. بالنسبة إلى حجم حزمة APK، إنّ العامل الأهم هو حجم البيانات التي يجب أن ينزِّلها المستخدم لتشغيل اللعبة الفعلية.
- تثبيت اللعبة على أحد الأجهزة وتشغيلها في قائمة اللعبة الأولية في هذه المرحلة، تحقَّق من حجم تثبيت اللعبة وفقًا لتقارير Android (ضمن الإعدادات > مساحة التخزين). بعض الألعاب لها حجم أولي صغير عند التثبيت، لأن هذا هو الرقم الأساسي الذي يجب تحسينه، ولكن يجب تنزيل بيانات إضافية بعد التثبيت. في بعض الألعاب، يتم تنزيل عدة غيغابايت من البيانات بعد التثبيت.
- لا تنزّل بعض الألعاب البيانات إلا بعد بدء تشغيلها. يجب أن تلعب اللعبة قليلاً لتحديد مقدار البيانات الإضافية التي يتم تنزيلها لمستخدم عادي يشغِّل اللعبة لأول مرة.
البحث عن مواد العرض والملفات الأخرى التي يمكن تصغير حجمها
يصف هذا القسم كيفية تقليل حجم الملفات في APK. يمكنك استخدام App Bundle Explorer لتنزيل حِزم APK الخاصة بالجهاز.
لتقليل حجم الملفات المجمّعة مباشرةً في حزمة APK، نفِّذ الخطوات التالية:
- استخدام أداة تحليل APK في Android Studio في استوديو Android، اختَر ملف > الملف الشخصي أو تصحيح أخطاء APK واختَر حزمة APK.
- اختَر المجلد Assets (مواد العرض). يتم سرد حجم الملف الأولي والنسبة المئوية لإجمالي حجم التنزيل لكل ملف.
راجع مجلد Assets (مواد العرض) وحدد مكان الجزء الأكبر من بيانات اللعبة. حدّد ما إذا كانت هناك أي أصول تستهلك قدرًا كبيرًا من المساحة (أي أكثر من 1% من الإجمالي). وعلى وجه الخصوص، ابحث عما يلي:
- ملفات الصور والفيديو الكبيرة (مثلاً ملفات PNG وJPEG وmp4): تُستخدم هذه الملفات عادةً في شاشات البداية والخلفيات والشعارات. نادرًا ما يتم استخدام هذه الملفات في معظم الألعاب، ويمكن ضغطها لاحقًا بدون التأثير في تجربة المستخدم. تتميز ملفات PNG غير المفقودة بحجم كبير بشكل خاص وهي مناسبة للضغط.
- ملفات الخطوط الكبيرة (مثل ملفات TTF): إذا أضَفت توافقًا مع الرموز التعبيرية، قد يؤدي ذلك إلى زيادة حجم ملف الخط بشكل ملحوظ. إذا كان ملف الخط أكبر من بضع مئات من الكيلوبايت، ففكر في طرق لتقليل حجمه.
- تنسيقات الملفات الصوتية المكرّرة أو النُسخ التي يمكنك دمجها
في حال تضمين عدّة واجهات برمجة تطبيقات ثنائية (ABIs) في حزمة APK، يمكنك الانتقال إلى حِزم التطبيقات أو إنشاء عدة حِزم APK.
حدِّد حجم ملفات الكائن الثنائي المشتركة (.so). لفحص الملفات الثنائية لمعرفة ما إذا كانت هناك عناصر قد لا تحتاج إلى تضمينها، مثل ملفات السجلّ، يمكنك استخدام أداة Bloaty McBloatface. للاطّلاع على مزيد من المعلومات حول طريقة تحسين الملفات الثنائية، راجِع علامات التجميع وخياراته.
راجِع ملف بيان Android لمعرفة تنسيقات الرسومات المتوافقة. حدِّد ما إذا كانت حزمة APK تتضمّن عدة علامات
<supports-gl-texture>
. إذا كانت اللعبة متوافقة مع تنسيقات متعددة لوحدات معالجة رسومات في حزمة APK واحدة، ننصحك باستخدام Binomial's Basis Universal. ينشئ نظام ضغط البنية في وحدة معالجة الرسومات هذا ملفات زخرفة بتنسيق متوسط يمكن تحويل ترميزه بسرعة إلى وحدة معالجة الرسومات.
فحص زخارف الرسومات وتحديد فرص التحسين
يصف هذا القسم الأدوات والأساليب المطلوبة لتحديد ما إذا كان يمكن تحسين زخارف الرسومات المستخدمة في اللعبة أم لا.
لفحص التركيبات داخل اللعبة، استخدِم أداة فحص وحدة معالجة الرسومات لنظام التشغيل Android (AGI) أو RenderDoc أو مع وحدات معالجة الرسومات من النوع Qualcomm Snapdragon فقط.
ابحث عما يلي:
- زخارف يمكن تغيير حجمها إلى درجة دقة أصغر، مثل زخارف كبيرة لشيء لا يتم عرضه إلا بحجم صغير في اللعبة. يعتبر تصغير عيّنات الزخارف أمرًا مكلفًا من الناحية الحسابية.
- استخدام عدة زخارف صغيرة يمكن دمجها في خريطة زخرفة واحدة.
- زخارف يمكنها استخدام وحدات بت أقل في قنوات الألوان. والمرشحة الجيدة هي زخارف مع عدد قليل من الزخارف الصلبة. تتطلب التدرجات والظلال اللونية المزيد من وحدات الدقة، وبالتالي ليست مرشحة جيدة.
- اكتشف خوارزميات أفضل لضغط البنية، بدءًا من ETC1 وETC2 وASTC.
تجاهل مستوى mipmap العلوي عند تحميل الزخارف على الأجهزة ذات الأطراف السفلية لتوفير الذاكرة. ويمكنك إجراء ذلك من خلال نظام بث Texture Streaming في Unity.
راجِع ملف بيان Android لمعرفة تنسيقات الرسومات المتوافقة، إذا لم يسبق لك إجراء ذلك. حدِّد ما إذا كانت حزمة APK تتضمّن علامات
<supports-gl-texture>
متعدّدة. إذا كانت اللعبة تتوافق مع تنسيقات وحدات معالجة رسومات متعددة في حزمة APK واحدة، ننصحك باستخدام Binomial's Basis Universal. ينشئ نظام ضغط البنية في وحدة معالجة الرسومات هذا ملفات زخرفة بتنسيق متوسط يمكن تحويل ترميزه بسرعة إلى وحدة معالجة الرسومات.
اقتراحات عامة بشأن مواد العرض
اتّبِع الاقتراحات التالية بشأن مواد عرض حزمة APK:
- أصول الصور والصوت والفيديو (وليس زخارف وحدة معالجة الرسومات): حدِّد ما إذا كان يمكن تغيير حجم الأصول أو ضغطها أكثر من ذلك. عادة ما تكون نسب ضغط أعلى مقبولة للألعاب. تتميز ملفات PNG غير المفقودة بحجم كبير، وبالتالي فهي تصلح بشكل ممتاز للضغط.
- مواد عرض الصور (وليس زخارف وحدة معالجة الرسومات): ننصحك باستخدام WEBP، وهو تنسيق لضغط الصور لكل من الضغط مع فقدان البيانات بدون فقدان البيانات.
- تقليل درجة دقة الزخرفة: استخدام الزخرفة الأكبر بكثير من عدد وحدات البكسل التي يتم عرضها على الشاشة في النهاية هو استخدام غير فعال للمساحة وموارد وحدة معالجة الرسومات. لتغيير الزخرفة ومعرفة الشكل الذي تظهر به في إطار بدون الحاجة إلى إعادة إنشاء اللعبة، يمكنك استخدام AGI.
- تغيير تنسيقات زخرفة الرسومات: استخدم تنسيقات الزخرفة التي تستخدم وحدات بت أقل لكل قناة. على سبيل المثال، استخدم تنسيق زخرفة 16 بت مثل RGB565 بدلاً من تنسيق 32 بت للزخرفة، مثل ARGB. لمزيد من المعلومات، راجِع
ما يلي:
- مستندات الانسجام لضبط تنسيقات الهيئة
- مستندات Unity لتنسيقات ضغط البنية الخاصة بالنظام الأساسي
- تنسيق زخرفة Baseis Universal في لعبة Binomial's لمظاهر زخارف النماذج داخل اللعبة
مراجع إضافية
- المخطط الزمني والتحسينات الجديدة لحزمة تطبيقات Android للتطبيقات الجديدة على Google Play
- تقليل حجم APK في ألعاب Android الفورية
- زخارف مضغوطة للغاية قابلة للتشفير (ورق أبحاث)