مراحل راهاندازی برنامهها برای اجرا در Google Play Instant ، همانطور که در بخش «اولین برنامه فوری خود را ایجاد کنید» توضیح داده شده است، برای بازیها نیز صدق میکند. این راهنما بر برخی از مراحل راهاندازی مختص بازیها تأکید دارد.
شما میتوانید با استفاده از Unity (با یا بدون افزونه Google Play Instant Unity )، Cocos2D ، 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>
این فعالیت زمانی اجرا میشود که کاربر دکمهی «اکنون امتحان کن» را در فروشگاه Play یا دکمهی «پخش فوری» را در برنامهی Google Play Games لمس کند. همچنین میتوانید این فعالیت را مستقیماً با استفاده از API لینک عمیق اجرا کنید.
کدهای نسخه صحیح را تعریف کنید
کد نسخه تجربه فوری بازی شما باید کمتر از کد نسخه بازی قابل نصب باشد. نسخهبندی برنامه شما به این روش به بازیکنان اجازه میدهد تا از تجربه فوری گوگل پلی به دانلود و نصب بازی روی دستگاه خود منتقل شوند. چارچوب اندروید این انتقال را به عنوان یک بهروزرسانی برنامه در نظر میگیرد.
برای اطمینان از اینکه از طرح نسخهبندی پیشنهادی پیروی میکنید، یکی از این استراتژیها را دنبال کنید:
- کدهای نسخه را برای تجربه Google Play Instant از ۱ مجدداً راهاندازی کنید.
- کد نسخه برنامه قابل نصب را به تعداد زیادی، مانند ۱۰۰۰، افزایش دهید تا مطمئن شوید که فضای کافی برای افزایش شماره نسخه تجربه فوری شما وجود دارد.
اشکالی ندارد که بازی فوری و بازی قابل نصب خود را در دو پروژه جداگانه اندروید استودیو توسعه دهید. با این حال، اگر این کار را انجام دهید، باید موارد زیر را برای انتشار بازی خود در گوگل پلی انجام دهید:
- در هر دو پروژه اندروید استودیو از نام بسته یکسانی استفاده کنید.
- در کنسول گوگل پلی، هر دو نوع را در یک برنامه آپلود کنید.
برای جزئیات بیشتر در مورد تنظیم نسخه بازی خود، به بخش «نسخه برنامه خود» مراجعه کنید.
پشتیبانی از محیط اجرا
مانند سایر برنامهها، بازیهای Google Play Instant در یک محیط محدود روی دستگاه اجرا میشوند. برای پشتیبانی از این محیط اجرا، مراحل نشان داده شده در بخشهای زیر را انجام دهید.
از ترافیک متن ساده صرف نظر کنید
بازیهای موجود در Google Play Instant از ترافیک HTTP پشتیبانی نمیکنند. اگر بازی شما اندروید ۹ (سطح API 28) یا بالاتر را هدف قرار میدهد، اندروید به طور پیشفرض پشتیبانی از متن ساده را در بازی شما غیرفعال میکند.
اگر بازی شما اندروید ۸.۱ (سطح API ۲۷) یا پایینتر را هدف قرار میدهد، باید یک فایل پیکربندی امنیت شبکه ایجاد کنید. در این فایل، همانطور که در قطعه کد زیر نشان داده شده است، 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 محدودیت حجم دانلود ۱۵ مگابایت دارند. برای ایجاد بازی با این حجم، ممکن است لازم باشد منطق بازی خود را تغییر دهید. این بخش برخی از ابزارها و تکنیکهایی را برای کمک به بهینهسازی حجم بازی شما شرح میدهد.
ابزارها
فهرست ابزارهای زیر میتواند به شما در تعیین اینکه چه چیزی به حجم بازی شما کمک میکند، کمک کند:
- تحلیلگر APK : یک نمای کلی از محتوای یک APK کامپایل شده ارائه میدهد. با استفاده از این نما، میتوانید تعداد بایتهایی را که هر عنصر در اندازه کلی سهم دارد، تعیین کنید. از این ابزار برای بررسی سریع اندازه منابع، داراییها، منطق و کتابخانههای بومی که بازی شما استفاده میکند، استفاده کنید.
- Bloaty McBloatface : نمایه اندازه فایلهای باینری را نشان میدهد.
- بازرس پردازنده گرافیکی اندروید : بدون نیاز به کامپایل مجدد بازی، تأثیر کاهش اندازه بافت بر حجم فایل را مشاهده کنید.
تکنیکها
در زیر لیستی از تکنیکهایی که میتوانید برای کاهش حجم بازی خود استفاده کنید، آورده شده است:
- مقداری از منطق بازی خود را استخراج کنید و آن را در یک یا چند ماژول ویژگی قرار دهید، که جزو محدودیت اندازه محسوب نمیشوند.
- وضوح بافتهای بازی خود را کاهش دهید.
- استفاده از فرمت WebP را در نظر بگیرید، به خصوص اگر از بافتهای فشرده نشده در GPU استفاده میکنید. فرمت WebP تصاویری ایجاد میکند که کیفیتی مشابه تصاویر JPEG دارند اما ۱۵ تا ۳۰ درصد کوچکتر هستند. اگرچه خارج کردن تصاویر 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 برای کاهش کد و منابع خود استفاده کنید.
- برای تولید فایلهای DEX کوچکتر از Gradle 4.4 یا بالاتر استفاده کنید.
- پیادهسازی تحویل ابری داراییها
تقسیم یک بازی بزرگ به چندین APK
بهینهسازی تجربه Google Play Instant برای اینکه بازی شما در یک فایل APK با حجم ۱۵ مگابایت جا شود، حتی پس از اعمال توصیهها برای کاهش حجم APK ، میتواند دشوار باشد. برای حل این چالش، میتوانید بازی خود را به چندین APK تقسیم کنید. بازیکنان با دانلود APK اصلی و پایه شروع میکنند؛ همزمان با بازی، APKهای تقسیمشده باقیمانده در پسزمینه در دسترس بازی قرار میگیرند.
برای مثال، APK پایه میتواند شامل موتور بازی اصلی و فایلهای مورد نیاز برای نمایش صفحه بارگذاری باشد. همزمان با اجرای APK پایه، صفحه بارگذاری نمایش داده میشود و بلافاصله یک APK تقسیمشده اضافی که حاوی دادههای بازی و مراحل است، درخواست میشود. پس از اینکه APK تقسیمشده در دسترس قرار گرفت، میتواند فایلهای خود را در موتور بازی بارگذاری کند و محتوای مورد نیاز بازیکن برای شروع بازی را در اختیار او قرار دهد.
بهترین شیوههای UX را اتخاذ کنید
بعد از اینکه بازی خود را طوری پیکربندی کردید که از تجربههای فوری پشتیبانی کند، منطقی را که در بخشهای بعدی نشان داده شده است اضافه کنید تا یک تجربه کاربری خوب ارائه دهید.
پشتیبانی از معماریهای ۶۴ بیتی
برنامههای منتشر شده در گوگل پلی باید از معماری ۶۴ بیتی پشتیبانی کنند. اضافه کردن نسخه ۶۴ بیتی برنامه شما، بهبود عملکرد را فراهم میکند و شما را برای دستگاههایی با سختافزار فقط ۶۴ بیتی آماده میکند. درباره پشتیبانی ۶۴ بیتی بیشتر بدانید .
بررسی کنید که آیا بازی در حال اجرا است یا خیر.
اگر برخی از منطق بازی شما به این بستگی دارد که آیا کاربر در تجربه فوری شما مشارکت دارد یا خیر، متد isInstantApp() را فراخوانی کنید. اگر فرآیند در حال اجرا یک تجربه فوری باشد، این متد true را برمیگرداند.
با انجام این بررسی، میتوانید تعیین کنید که آیا برنامه شما نیاز به اجرا در یک محیط اجرایی محدود دارد یا میتواند از ویژگیهای پلتفرم بهره ببرد.
نمایش اعلان نصب
اگر یک نسخه آزمایشی از Google Play Instant ساختهاید، در مقطعی بازی باید از بازیکن بخواهد که نسخه کامل را روی دستگاه خود نصب کند. برای انجام این کار، از متد showInstallPrompt() در APIهای گوگل برای اندروید استفاده کنید.
برای کسب اطلاعات بیشتر در مورد نحوه و زمان درخواست نصب از بازیکن، به بهترین شیوههای تجربه کاربری برای بازیهای Google Play Instant مراجعه کنید.
انتقال دادهها به یک تجربه نصبشده
اگر یک بازیکن از تجربه آزمایشی شما لذت ببرد، ممکن است تصمیم بگیرد نسخه کامل بازی شما را نصب کند. برای ارائه یک تجربه کاربری خوب، مهم است که پیشرفت بازیکن از تجربه فوری شما به نسخه کامل بازی شما منتقل شود.
اگر بازی شما targetSandboxVersion را روی 2 مشخص کند ، پیشرفت بازیکن به طور خودکار به نسخه کامل بازی شما منتقل میشود. در غیر این صورت، باید دادههای مربوط به پیشرفت بازیکن را به صورت دستی منتقل کنید. برای انجام این کار، از Cookie API - sample app استفاده کنید.
منابع اضافی
از این منابع اضافی درباره Google Play Instant بیشتر بدانید:
- Codelab: اولین برنامه فوری خود را بسازید
- پشتیبانی از Google Play Instant را در یک برنامه موجود اضافه کنید.
- Codelab: ساخت یک اپلیکیشن فوری چندمنظوره
- ماژولار کردن یک برنامه چند منظوره.