تحويل لعبة حالية إلى لعبة فورية

تحذير: لن تكون "تطبيقات Google Play الفورية" متاحة بعد الآن. اعتبارًا من ديسمبر 2025، لن يكون بإمكانك نشر التطبيقات الفورية من خلال Google Play، كما أنّ جميع واجهات برمجة التطبيقات الفورية في "خدمات Google Play" ستتوقف عن العمل. لن يعرض Play "التطبيقات الفورية" للمستخدمين بعد الآن باستخدام أي آلية.

نُجري هذا التغيير استنادًا إلى ملاحظات المطوّرين واستثماراتنا المستمرة لتحسين المنظومة المتكاملة منذ طرح ميزة "تطبيقات Google Play الفورية".

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

تنطبق أيضًا على الألعاب خطوات إعداد التطبيقات للعمل على تطبيقات Google Play الفورية، كما هو موضّح في مقالة إنشاء أول تطبيق فوري. يؤكّد هذا الدليل على بعض خطوات الإعداد الخاصة بالألعاب.

يمكنك تطوير ألعاب لتطبيقات Google Play الفورية باستخدام Unity (مع المكوّن الإضافي لتطبيقات Google Play الفورية في Unity أو بدونه) أو Cocos2D أو Android Studio أو محرك الألعاب المخصّص.

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

بالإضافة إلى ذلك، قبل نشر لعبة يمكن تشغيلها على تطبيقات Google Play الفورية، عليك مراجعة قائمة التحقّق الخاصة بالمتطلبات الفنية.

يصبح النشاط الذي يتضمّن فلتر الأهداف التالي نقطة دخول إلى التجربة الفورية على Google Play:

<activity android:name=".GameActivity">
   <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LAUNCHER" />
   </intent-filter>
</activity>

يتم تشغيل هذا النشاط عندما ينقر المستخدم على الزر تجربة الآن في &quot;متجر Play&quot; أو على الزر تشغيل فوري في تطبيق &quot;ألعاب Google Play&quot;. ويمكنك أيضًا تشغيل هذا النشاط مباشرةً باستخدام واجهة برمجة التطبيقات للروابط لصفحات في التطبيق.

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

يجب أن يكون رمز إصدار تجربة اللعبة الفورية أقل من رمز إصدار اللعبة القابلة للتثبيت. يتيح لك إصدار تطبيقك بهذه الطريقة أن تتيح للاعبين الانتقال من تجربة &quot;تطبيقات Google Play الفورية&quot; إلى تنزيل اللعبة وتثبيتها على أجهزتهم. يعدّ إطار عمل Android هذا الانتقال تحديثًا للتطبيق.

للتأكّد من اتّباع نظام تحديد الإصدارات المقترَح، اتّبِع إحدى الاستراتيجيتَين التاليتَين:

  • أعِد بدء رموز الإصدارات للتطبيق الفوري على Google Play من 1.
  • زِد رمز إصدار التطبيق القابل للتثبيت بمقدار كبير، مثل 1000، لضمان توفّر مساحة كافية لزيادة رقم إصدار التجربة الفورية.

لا بأس بتطوير لعبتك الفورية ولعبتك القابلة للتثبيت في مشروعَين منفصلَين على Android Studio. ومع ذلك، إذا اخترت ذلك، عليك اتّخاذ الخطوات التالية لنشر لعبتك على Google Play:

  1. استخدِم اسم الحزمة نفسه في كلا مشروعَي "استوديو Android".
  2. في Google Play Console، حمِّل كلا الصيغتين إلى التطبيق نفسه.

لمزيد من التفاصيل حول ضبط إصدار لعبتك، يُرجى الاطّلاع على مقالة تحديد إصدار تطبيقك.

توفير بيئة التنفيذ

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

إيقاف حركة المرور بنص عادي

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

ومع ذلك، إذا كانت لعبتك تستهدف الإصدار 8.1 من نظام التشغيل Android (المستوى 27 لواجهة برمجة التطبيقات) أو الإصدارات الأقدم، عليك إنشاء ملف إعدادات أمان الشبكة. في هذا الملف، اضبط قيمة cleartextTrafficPermitted على false، كما هو موضّح في مقتطف الرمز التالي:

res/xml/network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <domain-config cleartextTrafficPermitted="false">
        <domain includeSubdomains="true">secure.example.com</domain>
    </domain-config>
</network-security-config>

تعديل إصدار وضع الحماية المستهدف

عدِّل ملف AndroidManifest.xml الخاص بلعبتك الفورية لكي يستهدف بيئة وضع الحماية التي تتيحها "تطبيقات Google Play الفورية". يمكنك إكمال هذا التعديل من خلال إضافة السمة android:targetSandboxVersion إلى عنصر <manifest> الخاص بألعابك، كما هو موضّح في مقتطف الرمز البرمجي التالي:

<manifest
   xmlns:android="http://schemas.android.com/apk/res/android"
  ...
   android:targetSandboxVersion="2" ...>

لمزيد من المعلومات، يُرجى الاطّلاع على المستندات المتعلقة بالسمة targetSandboxVersion.

لا تعتمد على توفّر ذاكرة تخزين مؤقت أو بيانات تطبيق

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

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

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

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

تقليل حجم تطبيقك

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

الأدوات

يمكن أن تساعدك قائمة الأدوات التالية في تحديد العوامل التي تساهم في حجم لعبتك:

  • أداة تحليل ملفات APK: تقدّم هذه الأداة نظرة شاملة على محتويات حِزمة APK مجمَّعة. باستخدام هذا العرض، يمكنك تحديد عدد وحدات البايت التي يساهم بها كل عنصر في الحجم الإجمالي. استخدِم هذه الأداة للتحقّق بسرعة من حجم الموارد والأصول والمنطق والمكتبات الأصلية التي تستخدمها لعبتك.
  • Bloaty McBloatface: يعرض ملف حجم الملفات الثنائية.
  • أداة Android GPU Inspector: يمكنك الاطّلاع على تأثير حجم الملف لتقليل حجم النسيج بدون الحاجة إلى إعادة تجميع لعبتك.

التقنيات

في ما يلي قائمة بالأساليب التي يمكنك استخدامها لتقليل حجم لعبتك:

  • استخرِج بعض منطق لعبتك وضَعها في وحدة ميزات واحدة أو أكثر، ولا يتم احتسابها ضمن الحد الأقصى المسموح به للحجم.
  • قلِّل دقة مواد العرض في لعبتك.
  • ننصحك باستخدام تنسيق WebP، خاصةً إذا كنت تستخدم مواد عرض غير مضغوطة على وحدة معالجة الرسومات. يوفّر تنسيق WebP صورًا بالجودة نفسها التي توفّرها صور JPEG، ولكن بحجم أصغر بنسبة تتراوح بين% 15 و% 30. على الرغم من أنّ فك ضغط صور WebP يستغرق وقتًا أطول، إلا أنّ وقت فك الضغط هذا يظل أقصر بكثير من وقت تنزيل مواد لعبتك. أدرجت Google أيضًا التنسيق في محرك ألعاب مفتوح المصدر.
  • ضغط الأصوات والموسيقى أو إعادة استخدامها
  • استخدِم علامات تجميع مختلفة للمساعدة في تصغير حجم الملف الثنائي:
    • -fvisibility=hidden: الأكثر أهمية في cmake، يمكنك تحديدها على النحو التالي:
      $ set_target_properties(your-target PROPERTIES CXX_VISIBILITY_PRESET hidden)
      
    • -Oz: مهم أيضًا لتقليل الحجم. إذا كنت تستخدم gcc في عملية التجميع، استخدِم -Os بدلاً من ذلك.
    • -flto: يقلّل أحيانًا من حجم الملف.
    • علامات الربط: استخدِم --gc-sections مع علامات المترجم، مثل -ffunction-sections و-fdata-sections.
  • استخدِم Proguard لتقليل حجم الرموز والموارد.
  • استخدِم الإصدار 4.4 من Gradle أو إصدارًا أحدث لإنشاء ملفات DEX أصغر حجمًا.
  • تنفيذ تسليم مواد العرض من السحابة الإلكترونية

تقسيم لعبة كبيرة إلى حِزم APK متعددة

قد يكون من الصعب تحسين تجربة &quot;التطبيقات الفورية على Google Play&quot; لجعل لعبتك تتناسب مع حزمة APK واحدة بحجم 15 ميغابايت، حتى بعد تطبيق الاقتراحات لتقليل حجم حزمة APK. ولحلّ هذه المشكلة، يمكنك تقسيم لعبتك إلى حِزم APK متعددة. يبدأ اللاعبون بتنزيل حزمة APK الأساسية، ثم يتم توفير حِزم APK المقسّمة المتبقية للعبة في الخلفية أثناء اللعب.

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

اتّباع أفضل الممارسات المتعلّقة بتجربة المستخدم

بعد ضبط إعدادات لعبتك لتتوافق مع التجارب الفورية، أضِف المنطق الموضّح في الأقسام التالية لتقديم تجربة جيدة للمستخدم.

توافُق البِنى 64 بت

يجب أن تتوافق التطبيقات المنشورة على Google Play مع بنية 64 بت. تؤدي إضافة إصدار 64 بت من تطبيقك إلى تحسين الأداء وتجهيز التطبيق للعمل على الأجهزة التي تتضمّن أجهزة تعمل بإصدار 64 بت فقط. مزيد من المعلومات حول توافق التطبيقات مع إصدار 64 بت

التحقّق ممّا إذا كانت اللعبة توفّر تجربة فورية

إذا كانت بعض منطق لعبتك يعتمد على ما إذا كان المستخدم يتفاعل مع تجربة فورية، استدعِ طريقة isInstantApp(). تعرض هذه الطريقة true إذا كانت العملية الجارية حاليًا هي تجربة فورية.

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

عرض طلب تثبيت

إذا أنشأت تجربة Google Play Instant تجريبية، يجب أن تطلب اللعبة من اللاعب في مرحلة ما تثبيت الإصدار الكامل على جهازه. لإجراء ذلك، استخدِم طريقة showInstallPrompt() في Google APIs for Android.

لمزيد من المعلومات حول كيفية وموعد مطالبة اللاعب بالتثبيت، يُرجى الاطّلاع على أفضل ممارسات تجربة المستخدم للألعاب على تطبيقات Google Play الفورية.

نقل البيانات إلى تجربة مثبَّتة

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

إذا كانت لعبتك تحدّد targetSandboxVersion بقيمة 2، سيتم نقل مستوى تقدّم اللاعب تلقائيًا إلى الإصدار الكامل من لعبتك. وبخلاف ذلك، عليك نقل البيانات المتعلقة بمستوى تقدّم اللاعب يدويًا. لإجراء ذلك، استخدِم Cookie API - تطبيق نموذجي

مراجع إضافية

يمكنك الاطّلاع على مزيد من المعلومات حول "تطبيقات Google Play الفورية" من خلال المراجع الإضافية التالية:

درس تطبيقي: إنشاء أول تطبيق فوري
إضافة إمكانية استخدام "تطبيقات Google Play الفورية" في تطبيق حالي
درس تطبيقي: إنشاء تطبيق فوري يتضمّن ميزات متعدّدة
تقسيم تطبيق يتضمّن عدة ميزات إلى وحدات