یک بازی موجود را به یک بازی فوری تبدیل کنید

مراحل راه‌اندازی برنامه‌ها برای اجرا در Google Play Instant ، همانطور که در Create your first instant app توضیح داده شد، در مورد بازی‌ها نیز صدق می‌کند. این راهنما بر برخی از مراحل راه اندازی مخصوص بازی ها تأکید دارد.

می‌توانید با استفاده از Unity (با یا بدون افزونه Google Play Instant UnityCocos2D ، Android Studio یا موتور سفارشی خود، بازی‌هایی را برای Google Play Instant توسعه دهید.

این راهنما فرض را بر این می‌گذارد که شما قبلاً نوع تجربه بازی را که می‌خواهید ارائه دهید، می‌دانید. اگر می‌خواهید ایده‌ها و بهترین روش‌ها برای ساخت بازی‌های با کیفیت بالا را ببینید، بهترین روش‌های UX برای بازی‌ها را در Google Play Instant بخوانید.

علاوه بر این، قبل از انتشار یک بازی که می تواند در Google Play Instant اجرا شود، باید چک لیست الزامات فنی را مرور کنید.

فعالیتی که شامل فیلتر هدف زیر است، به نقطه ورود تجربه Google Play Instant تبدیل می‌شود:

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

این فعالیت زمانی راه‌اندازی می‌شود که کاربر روی دکمه Try Now در فروشگاه Play یا دکمه پخش فوری در برنامه بازی‌های Google Play ضربه می‌زند. همچنین می‌توانید این فعالیت را مستقیماً با استفاده از API پیوند عمیق راه‌اندازی کنید.

کدهای نسخه صحیح را تعریف کنید

کد نسخه تجربه فوری بازی شما باید کمتر از کد نسخه بازی قابل نصب باشد. نسخه‌سازی برنامه به این روش به بازیکنان امکان می‌دهد از تجربه Google Play Instant به دانلود و نصب بازی روی دستگاه خود بروند. فریم ورک اندروید این انتقال را به‌روزرسانی اپلیکیشن می‌داند.

برای اطمینان از پیروی از طرح نسخه‌سازی توصیه‌شده، یکی از این استراتژی‌ها را دنبال کنید:

  • کدهای نسخه برای تجربه Google Play Instant را در 1 راه اندازی مجدد کنید.
  • کد نسخه برنامه قابل نصب را به تعداد زیادی مانند 1000 افزایش دهید تا مطمئن شوید که فضای کافی برای افزایش شماره نسخه تجربه فوری شما وجود دارد.

اشکالی ندارد که بازی فوری و بازی قابل نصب خود را در دو پروژه مجزای Android Studio توسعه دهید. با این حال، اگر این کار را انجام می دهید، برای انتشار بازی خود در Google Play باید موارد زیر را انجام دهید:

  1. از یک نام بسته در هر دو پروژه Android Studio استفاده کنید.
  2. در کنسول Google Play، هر دو نوع را در یک برنامه آپلود کنید.

برای جزئیات بیشتر در مورد تنظیم نسخه بازی، به نسخه برنامه خود مراجعه کنید.

از محیط اجرا پشتیبانی کنید

مانند سایر برنامه‌ها، بازی‌ها در Google Play Instant در یک جعبه ایمنی محدود روی دستگاه اجرا می‌شوند. برای پشتیبانی از این محیط اجرا، مراحل نشان داده شده در بخش های زیر را کامل کنید.

از ترافیک متن شفاف انصراف دهید

بازی‌های موجود در Google Play Instant از ترافیک HTTP پشتیبانی نمی‌کنند. اگر بازی شما اندروید 9 (سطح API 28) یا بالاتر را هدف قرار می‌دهد، Android پشتیبانی متن واضح را در بازی شما به طور پیش‌فرض غیرفعال می‌کند.

اگر بازی شما اندروید 8.1 (سطح API 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 بازی فوری خود را به‌روزرسانی کنید تا محیط sandbox را که Google Play Instant پشتیبانی می‌کند هدف قرار دهد. همانطور که در قطعه کد زیر نشان داده شده است، می توانید این به روز رسانی را با افزودن ویژگی android:targetSandboxVersion به عنصر <manifest> بازی های خود تکمیل کنید:

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

برای اطلاعات بیشتر، مستندات مربوط به ویژگی targetSandboxVersion را ببینید.

به وجود حافظه پنهان یا داده های برنامه تکیه نکنید

تجربه فوری شما تا زمانی که حافظه پنهان تجربه فوری پاک نشود در دستگاه کاربر بارگیری می‌شود، که در یکی از شرایط زیر رخ می‌دهد:

  • حافظه پنهان تجربه فوری جمع آوری شده است زیرا حافظه دستگاه در دسترس کم است.
  • کاربر دستگاه خود را مجددا راه اندازی می کند.

اگر هر یک از فرآیندها رخ دهد، کاربر باید تجربه فوری شما را دوباره دانلود کند تا بتواند با آن تعامل داشته باشد.

اگر فضای ذخیره‌سازی سیستم بسیار کم است، ممکن است داده‌های کاربر تجربه فوری شما از حافظه داخلی حذف شود. بنابراین، توصیه می شود به صورت دوره ای داده های کاربر را با سرور بازی خود همگام سازی کنید تا پیشرفت کاربر حفظ شود.

اندازه برنامه خود را کاهش دهید

برخلاف سایر انواع برنامه‌ها، بازی‌های موجود در Google Play Instant دارای محدودیت حجم دانلود 15 مگابایت هستند. برای ایجاد یک بازی با این اندازه، ممکن است لازم باشد منطق بازی خود را اصلاح کنید. این بخش ابزارها و تکنیک هایی را برای کمک به بهینه سازی اندازه بازی شما توضیح می دهد.

ابزار

لیست ابزارهای زیر می تواند به شما کمک کند تعیین کنید چه چیزی در اندازه بازی شما نقش دارد:

  • APK Analyzer : نمای کلی از محتویات یک APK کامپایل شده ارائه می دهد. با استفاده از این نما، می توانید تعداد بایت هایی را که هر عنصر در اندازه کلی کمک می کند، تعیین کنید. از این ابزار برای بررسی سریع اندازه منابع، دارایی ها، منطق و کتابخانه های بومی که بازی شما استفاده می کند استفاده کنید.
  • Bloaty McBloatface : نمایه اندازه فایل های باینری را نشان می دهد.
  • Android GPU Inspector : اثر اندازه فایل کاهش اندازه بافت را بدون نیاز به کامپایل مجدد بازی خود مشاهده کنید.

تکنیک ها

در زیر لیستی از تکنیک هایی است که می توانید برای کاهش حجم بازی خود از آنها استفاده کنید:

  • مقداری از منطق بازی خود را استخراج کنید و آن را در یک یا چند ماژول ویژگی قرار دهید، که در محدودیت اندازه حساب نمی شود.
  • وضوح بافت های بازی خود را کاهش دهید.
  • استفاده از فرمت WebP را در نظر بگیرید، به خصوص اگر از بافت های فشرده نشده در GPU استفاده می کنید. فرمت WebP تصاویری با کیفیت مشابه تصاویر JPEG اما 15% تا 30% کوچکتر ایجاد می کند. اگرچه فشرده‌سازی تصاویر WebP بیشتر طول می‌کشد، اما این زمان فشرده‌سازی همچنان به طور قابل توجهی کمتر از زمان دانلود بافت‌های بازی شما است. گوگل همچنین این قالب را در یک موتور بازی متن باز ادغام کرده است.
  • صداها و موسیقی را فشرده یا دوباره استفاده کنید.
  • از پرچم های کامپایل مختلف برای کمک به کوچکتر کردن فایل باینری خود استفاده کنید:
    • -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 Instant برای جا انداختن بازی‌تان در یک APK 15 مگابایتی، حتی پس از اعمال توصیه‌ها برای کاهش اندازه APK، ممکن است دشوار باشد. برای مقابله با این چالش، می توانید بازی خود را به چند APK تقسیم کنید. بازیکنان با دانلود APK اصلی و پایه شروع می کنند. همانطور که بازی می کنند، APK های تقسیم شده باقی مانده در پس زمینه در دسترس بازی قرار می گیرند.

برای مثال، APK پایه می‌تواند شامل موتور اصلی بازی و دارایی‌های مورد نیاز برای نمایش صفحه بارگیری باشد. با راه‌اندازی APK پایه، صفحه بارگیری را نشان می‌دهد و فوراً یک APK تقسیم اضافی که حاوی داده‌های بازی و سطح است درخواست می‌کند. پس از اینکه آن APK تقسیم‌شده در دسترس قرار گرفت، می‌تواند دارایی‌های خود را در موتور بازی بارگیری کند و محتوای مورد نیاز برای شروع بازی را در اختیار بازیکن قرار دهد.

بهترین شیوه های UX را بپذیرید

پس از اینکه بازی خود را به گونه ای پیکربندی کردید که از تجربیات فوری پشتیبانی کند، منطقی را که در بخش های زیر نشان داده شده است اضافه کنید تا یک تجربه کاربری خوب ارائه دهید.

پشتیبانی از معماری های 64 بیتی

برنامه های منتشر شده در Google Play باید از معماری 64 بیتی پشتیبانی کنند. افزودن یک نسخه 64 بیتی از برنامه شما باعث بهبود عملکرد می شود و شما را برای دستگاه هایی با سخت افزار فقط 64 بیتی آماده می کند. درباره پشتیبانی 64 بیتی بیشتر بدانید .

بررسی کنید که آیا بازی در حال اجرا است یا خیر

اگر برخی از منطق بازی شما بستگی به این دارد که آیا کاربر درگیر تجربه فوری شما است، متد isInstantApp() را فراخوانی کنید. اگر فرآیند در حال اجرا یک تجربه فوری باشد، این روش true را برمی‌گرداند.

با انجام این بررسی، می توانید تعیین کنید که آیا برنامه شما باید در یک محیط اجرای محدود اجرا شود یا می تواند از ویژگی های پلت فرم استفاده کند.

نمایش درخواست نصب

اگر یک تجربه آزمایشی Google Play Instant ساخته اید، در برخی مواقع بازی باید از بازیکن بخواهد که نسخه کامل را روی دستگاه خود نصب کند. برای انجام این کار، از متد showInstallPrompt() در APIهای Google برای اندروید استفاده کنید.

برای کسب اطلاعات بیشتر در مورد اینکه چگونه و چه زمانی باید از پخش کننده درخواست نصب کنید، به بهترین شیوه های UX برای بازی ها در Google Play Instant مراجعه کنید.

داده ها را به یک تجربه نصب شده منتقل کنید

اگر بازیکنی از تجربه آزمایشی شما لذت می برد، ممکن است تصمیم بگیرد نسخه کامل بازی شما را نصب کند. برای ارائه یک تجربه کاربری خوب، مهم است که پیشرفت بازیکن از تجربه فوری شما به نسخه کامل بازی شما منتقل شود.

اگر بازی شما targetSandboxVersion 2 را مشخص می کند ، پیشرفت بازیکن به طور خودکار به نسخه کامل بازی شما منتقل می شود. در غیر این صورت باید اطلاعات مربوط به پیشرفت بازیکن را به صورت دستی انتقال دهید. برای انجام این کار، از Cookie API - نمونه برنامه استفاده کنید

منابع اضافی

از این منابع اضافی درباره Google Play Instant بیشتر بیاموزید:

Codelab: اولین برنامه فوری خود را بسازید
پشتیبانی از Google Play Instant را در یک برنامه موجود اضافه کنید.
Codelab: یک برنامه فوری چند ویژگی بسازید
یک برنامه چند ویژگی را مدولار کنید.