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

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

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

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

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

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

يفترض هذا الدليل أنّك تعرف نوع تجربة اللعب التي تريد تقديمها. إذا أردت الاطّلاع على أفكار وأفضل الممارسات لإنشاء ألعاب عالية الجودة، يمكنك قراءة أفضل ممارسات تجربة المستخدم للألعاب على "تطبيقات 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>

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

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

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

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

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

لا بأس بتطوير لعبتك الفورية ولعبتك القابلة للتثبيت في مشروعَين منفصلَين على "استوديو Android". إذا فعلت ذلك، عليك اتّخاذ الإجراءات التالية لنشر لعبتك على 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 أيضًا التنسيق في محرّك ألعاب مفتوح المصدر engine.
  • اضغط الأصوات والموسيقى أو أعِد استخدامها.
  • استخدِم علامات تجميع مختلفة للمساعدة في تصغير ملفك الثنائي:
    • -fvisibility=hidden: هذه العلامة هي الأهم. في cmake، يمكنك تحديدها على النحو التالي:
      $ set_target_properties(your-target PROPERTIES CXX_VISIBILITY_PRESET hidden)
      
    • -Oz: هذه العلامة مهمة أيضًا لتقليل الحجم. إذا كنت تُجمِّع باستخدام gcc، استخدِم -Os بدلاً من ذلك.
    • -flto: يؤدي ذلك أحيانًا إلى تقليل حجم الملف.
    • علامات الرابط: استخدِم --gc-sections بالإضافة إلى علامات المُجمِّع، مثل -ffunction-sections و-fdata-sections.
  • استخدِم Proguard لـ تقليل حجم الرمز والموارد.
  • استخدِم Gradle 4.4 أو إصدارًا أحدث لإنشاء ملفات DEX أصغر حجمًا.
  • استخدِم ميزة عرض مواد العرض من السحابة الإلكترونية .

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

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

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

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

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

دعم بنية 64 بت

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

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

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

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

عرض طلب التثبيت

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

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

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

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

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

مراجع إضافية

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

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