بازیهای Google Play در رایانه از شما میخواهد که تغییراتی در بازیتان ایجاد کنید تا با رایانه سازگار شود و برای آن بهینهسازی شود. این تغییرات تضمین میکند که بازی شما میتواند در رایانه اجرا شود و تجربه کاربری برای این پلاتفرم بهینهسازی شده است.
علاوهبراین، «بازیهای Google Play در رایانه» پیشنیازهایی برای گرافیک، ورودی دستگاه، و بازی بیندستگاهی دارد. برای اطلاعات بیشتر، راهنمای شروع به کار را ببینید.
هنگام ایجاد تغییرات بهینهسازی و سازگاری با رایانه (بهغیراز پشتیبانی x86-64)، میتوانید بازیتان را طوری تنظیم کنید که «بازیهای Google Play در رایانه» را شناسایی کند و سپس ویژگیهای مختص پلاتفرم را غیرفعال یا فعال کنید. این کار به شما امکان میدهد از همان APK یا App bundle برای نسخههای رایانه و تلفن همراه Android خود استفاده کنید.
در اینجا خلاصهای از الزامات و توصیههای موجود در این صفحه ارائه شده است:
- گنجاندن x86-64 ABI (توصیه میشود)
- شناسایی کردن «بازیهای Google Play» در زمان اجرا (توصیهشده)
- مدیریت رویداد onPause (توصیهشده)
- بهروزرسانی عناصر میانای کاربر (الزامی)
- غیرفعال کردن کادرهای گفتگوی اجازههای برنامه Android (الزامی)
- غیرفعال کردن اجازهها و ویژگیهای پشتیبانینشده Android (الزامی)
- جایگزین کردن WebViews با هدفهای مرورگر (توصیهشده)
- غیرفعال کردن میاناهای برنامهسازی کاربردی «خدمات Google Play» پشتیبانینشده (الزامی)
- فعال کردن فضای ذخیرهسازی محدود (الزامی)
- انتقال به Google Analytics 4 (توصیهشده)
افزودن معماری x86-64 ABI
درصورت امکان، مطمئن شوید که همه کتابخانههای موجود در بازیتان برای x86-64 ساخته شده باشند. این کار به شما کمک میکند با اجتناب از هرگونه لایه ترجمه، بهترین عملکرد و پایداری را تضمین کنید.
مجموعه کتابخانه
برای اطمینان از بیشترین سازگاری پردازنده x86-64، هنگام کامپایل کردن کتابخانههایتان از مجموعه دستورالعمل atom استفاده نکنید. برای مثال، هنگام استفاده از gcc
از -march=atom استفاده نکنید و بهجای آن از -march=x86-64 استفاده کنید.
معماری هدف در Unity
برخیاز نسخههای Unity 2019 و 2020 فاقد پشتیبانی از معماری x86-64 در Android هستند. مطمئن شوید از Unity نسخه 2019.4.31f1، 2020.3.19f1، یا جدیدتر استفاده میکنید.
اگر بازیتان از نسخه سازگار موتور بازی Unity استفاده میکند، برای فعال کردن هدفهای Android x86-64، موارد زیر را انجام دهید:
به تنظیمات پخشکننده > تنظیمات دیگر > پیکربندی > پسزمینه اسکریپتنویسی بروید و IL2CPP را از منوِ کرکرهای انتخاب کنید تا پسزمینه اسکریپتنویسی IL2CPP فعال شود.
هدفهای Android x86-64 را برای نسخه Unity خود فعال کنید:
Unity 2018 و نسخههای قبلی: به تنظیمات پخشکننده > تنظیمات دیگر > معماری هدف بروید و چارگوش انتخاب x86 را انتخاب کنید. ازآنجاییکه Unity 2018 فقط از هدفهای x86 پشتیبانی میکند، نمیتوانید x86-64 بسازید. این ساخت به استثنایی از تیم بازبینی نیاز دارد. لطفاً برای درخواست استثنای x86 با مخاطب Google خود تماس بگیرید.
نسخه Unity 2019 Long Term Support (LTS) و نسخههای جدیدتر: به Player Settings > Other Settings > Target Architectures بروید و x86-64 (ChromeOS) را فعال کنید.
شناسایی کردن «بازیهای Google Play در رایانه»
میتوانید پلاتفرم «بازیهای Google Play در رایانه» را در زمان اجرا شناسایی کنید، که به شما امکان میدهد ویژگیهای خاص پلاتفرم را در بازیتان فعال یا غیرفعال کنید.
ویژگی سیستم com.google.android.play.feature.HPE_EXPERIENCE را بررسی کنید تا
ببینید آیا بازیتان در پلاتفرم «بازیهای Google Play در رایانه» اجرا میشود یا نه:
کاتلین
var isPC = packageManager.hasSystemFeature("com.google.android.play.feature.HPE_EXPERIENCE")
جاوا
PackageManager pm = getPackageManager(); boolean isPC = pm.hasSystemFeature("com.google.android.play.feature.HPE_EXPERIENCE")
C#
var unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer"); var currentActivity = unityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity"); var packageManager = currentActivity.Call<AndroidJavaObject>("getPackageManager"); var isPC = packageManager.Call<bool>("hasSystemFeature", "com.google.android.play.feature.HPE_EXPERIENCE");
رسیدگی کردن به رویدادهای چرخه حیات Android
رسیدگی به رویداد
onPause
(c++)
در محیط «بازیهای Google Play در رایانه» مهم است. بازی شما وقتی بازیکن همپوشانی شبیهساز را فعال میکند نمایان میشود، بنابراین عدم گوش دادن به رویداد onPause میتواند منجر به تجربه کاربری ضعیف شود.
بهروزرسانی میانای کاربر
برخیاز اشارهها و عناصر میانای کاربر برای رایانه شخصی مناسب نیستند و باید بهروز شوند.
موارد ضروری:
- کنشهای واسط کاربر را که به دو یا چند انگشت نیاز دارند (اشارههای چندلمسی) جایگزین کنید. برای مثال، باید اشارههای چندلمسی و نیشگون برای بزرگنمایی را با ورودی موشواره و صفحهکلید مربوطه جایگزین کنید. برای جزئیات بیشتر درباره تغییرات ورودی دستگاه، پشتیبانی ورودی را ببینید.
توصیه میشود:
- در همه نوشتارهای قابلمشاهده برای کاربر باید بهجای «تکضرب زدن» از «کلیک کردن» استفاده شود.
- فهرستهای پیمایششدنی باید نوار پیمایش داشته باشند.
- مناطقی که کاربران میتوانند در آنها پیمایش کنند باید نوار پیمایش یا روش دیگری برای پیمودن سریع فاصلههای طولانی داشته باشند.
- صفحهکلید قابلکلیک برای وارد کردن نوشتار در صفحه نمایش داده نشود.
- همه ورودیهای نوشتاری باید در محدوده فیلد نوشتاری باشد.
- کلیک روی عناصر نمایان باید:
- کلیک را در هر جایی از محدوده قابلمشاهده عنصر بپذیرد.
- کلیک در ناحیه خارج از عنصر رؤیتپذیر را نپذیرد.
- کادرهای گفتگو باید دکمه بستن قابلمشاهده داشته باشند. کلیک خارج از محدوده کادر گفتگو را تشخیص ندهید.
غیرفعال کردن اکثر کادرهای گفتگوی اجازهها
بهاستثنای اجازههای میکروفون و اعلان، «بازیهای Google Play در رایانه» کادرهای گفتگوی اجازهها را نمایش نمیدهد، بنابراین نباید تلاش کنید آنها را نمایش دهید یا در زمان اجرا اجازهها را درخواست کنید. اگر قبلاً کادرهای گفتگوی اجازه را نمایش دادهاید، باید بازیتان را بهروز کنید تا دیگر آنها را در رایانه نمایش ندهد.
ویژگیها و اجازههای پشتیبانینشده Android
موردنیاز برای فرایند انتشار
برخیاز ویژگیهای سختافزاری رایج در تلفنهای همراه و رایانههای لوحی در رایانه دردسترس نیستند. این شامل ویژگیهای سختافزاری مانند دوربین یا مکان بازیکن میشود. هر بازیای که به ویژگیهای مفقود نیاز داشته باشد نمیتواند در رایانه بازیکن بارگیری و نصب شود. درخواست برای هر ویژگیای که در رایانه وجود نداشته باشد بهطور خودکار رد میشود.
با تایپ کردن عبارت زیر میتوانید فهرست کامل ویژگیهای دردسترس را مشاهده کنید:
adb shell pm list featuresبرای سازگار کردن بازیتان با رایانه، تغییرات زیر لازم است:
باید ویژگیها را با افزودن
android:required="false"به اظهارنامه<uses-feature>در مانیفست برنامهتان بهعنوان اختیاری علامتگذاری کنید. این فقط برای ویژگیهایی اعمال میشود که قبلاً در مانیفست برنامهتان اعلام شده است.سعی نکنید از ویژگیهای مفقود در زمان اجرا استفاده کنید. اگر از APK یکسانی در هر دو دسته تلفن همراه و رایانه استفاده میکنید، محیط رایانه را در زمان اجرا شناسایی کنید و از مسیرهای کد مربوطه اجتناب کنید.
در زمان اجرا، اجازههای Android پشتیبانینشده را درخواست نکنید. اگر از همان APK در هر دو دسته هدف رایانه و تلفن همراه استفاده میکنید، محیط رایانه را در زمان اجرا شناسایی کنید و از مسیرهای کد مربوطه اجتناب کنید. لازم نیست مانیفست را بهروز کنید.
برای اطلاعات بیشتر درباره سازگاری مانیفست برنامه، به راهنمای سازگاری مانیفست برنامه Chromebook مراجعه کنید.
الزامات آزمایش کارکردی
پیشاز ارسال اولین ساخت آزمایشی به «کنسول Google Play»، این ویژگیهای سختافزاری را بردارید:
android.hardware.wifiandroid.hardware.bluetoothandroid.hardware.cameraandroid.hardware.location
برخیاز این ویژگیها ممکن است بهدلیل سازگاری، هنگام اجرای pm list features بهعنوان ویژگیهای پشتیبانیشده فهرست شوند، اما بهطور کامل پیادهسازی نشدهاند. برای
کسب اطلاعات بیشتر درباره نحوه برداشتن ویژگی android.hardware.wifi، به
نظارت بر وضعیت اتصالپذیری و سنجش اتصال مراجعه کنید. برای
فهرست کامل ویژگیهای پشتیبانینشده، به راهنمای سازگاری مانیفست برنامه
برای Chromebook مراجعه کنید.
الزامات آزمایش کیفیت
این ویژگیهای سختافزاری رایج با رایانههای شخصی سازگار نیستند، بنابراین باید آنها را قبلاز ارسال نهایی به «کنسول Google Play» بردارید:
android.hardware.audio.proandroid.hardware.bluetoothandroid.hardware.cameraandroid.hardware.consumerirandroid.hardware.locationandroid.hardware.nfcandroid.hardware.sensor.lightandroid.hardware.sensor.accelerometerandroid.hardware.sensor.barometerandroid.hardware.sensor.compassandroid.hardware.sensor.gyroscopeandroid.hardware.sensor.proximityandroid.hardware.telephonyandroid.hardware.touchscreenandroid.hardware.usb.accessoryandroid.hardware.usb.hostandroid.hardware.wifiandroid.software.midi
اجازههای پشتیبانینشده
اجازههای پرکاربرد زیر در رایانه پشتیبانی نمیشوند، بنابراین بازی شما باید آنها را برای «بازیهای Google Play در رایانه» غیرفعال کند:
android.permission.ACCESS_COARSE_LOCATIONandroid.permission.ACCESS_FINE_LOCATIONandroid.permission.ACCESS_WIFI_STATEandroid.permission.BLUETOOTHandroid.permission.CAMERAandroid.permission.FOREGROUND_SERVICEandroid.permission.GET_ACCOUNTSandroid.permission.INSTALL_PACKAGESandroid.permission.READ_CONTACTSandroid.permission.READ_EXTERNAL_STORAGEandroid.permission.READ_PHONE_STATEandroid.permission.RECEIVE_BOOT_COMPLETEDandroid.permission.REQUEST_INSTALL_PACKAGESandroid.permission.SYSTEM_ALERT_WINDOWandroid.permission.USE_CREDENTIALSandroid.permission.WRITE_EXTERNAL_STORAGEandroid.permission.WRITE_SETTINGScom.google.android.gms.permission.ACTIVITY_RECOGNITION
وبسایتهای خارجی و WebView
هدف مرورگر بهجای بار شدن در محیط «بازیهای Google Play در رایانه»، در مرورگر وب اصلی رایانه بار میشود. این تجربه برای بازیکنان در اکثر موقعیتها ایدهآل است.
برای تسهیل انتقال، «بازیهای Google Play در رایانه» از
WebView پشتیبانی میکند. ازآنجاییکه
این در محیط «بازیهای Google Play در رایانه» باز میشود، مرورگر رایانهای
معمولی را نخواهد داشت. اگر قبلاً از WebView برای همرسانی «شرایط خدمات»، «خطمشی رازداری»، یا محتوای مشابه دیگر استفاده میکردید، باید بهجای آن یک هدف مرورگر را فراخوانی کنید.
غیرفعال کردن میاناهای برنامهسازی کاربردی «خدمات Google Play» پشتیبانینشده
موردنیاز برای فرایند انتشار
«بازیهای Google Play در رایانه» نسخه «خدمات Google Play» خودش را ارائه میدهد که فقط شامل زیرمجموعهای از میاناهای برنامهسازی کاربردی «خدمات Google Play» است. باید تأیید کنید که برنامهتان وابستگی شدیدی به ماژولهایی که در رایانه حذف شدهاند یا پشتیبانی نمیشوند ندارد. توجه داشته باشید که ممکن است برخیاز ماژولها دردسترس باشند، اما عملکرد آنها همیشه پشتیبانی نشود. برای مثال، وقتی «بازیهای Google Play در رایانه» بسته باشد، Firebase Cloud Messaging کار نخواهد کرد.
واحدهای پشتیبانیشده
این ماژولها درحالحاضر دردسترس هستند و توسط «بازیهای Google Play در رایانه» پشتیبانی میشوند، و برنامههایی برای پشتیبانی از ویژگیهای اضافی وجود دارد:
- ورود به سیستم با Google (شامل انتقال حساب، SmartLock، درستیسنجی پیامکی، محاسبه پیچیدگی گذرواژه نمیشود)
- Cronet
- خدمات بازیهای Google Play
- Tasks
- بینایی
- Google Pay
پشتیبانی محدود
ماژولهای زیر تاحدی کار میکنند. تمام تلاشمان را میکنیم تا از آنها در «بازیهای Google Play در رایانه» پشتیبانی کنیم، اما نمیتوانیم عملکردشان را تضمین کنیم.
- Google Cloud Messaging (منسوخشده، از Firebase Cloud Messaging استفاده کنید)
- اصالتسنجی Firebase (اصالتسنجی شماره تلفن کار نمیکند)
- پیامرسانی ابریِ Firebase
- کتابخانههای مشترک Firebase
- Firebase ML
- پیکربندی از راه دور Firebase
- تجزیهوتحلیل Firebase
پشتیبانی نمیشود
این واحدها در «بازیهای Google Play در رایانه» پشتیبانی نمیشوند، اما درصورت ناموفق بودن، مشکلی در «بازیهای Google Play در رایانه» ایجاد نمیکنند:
- Google Analytics (منسوخشده، از Firebase Analytics استفاده کنید)
- Google Cast
- Awareness API
- Drive (منسوخ شده است، بهزودی برداشته میشود)
- FIDO
- پایگاه داده بیدرنگ Firebase
- Firestore
- Firebase A/B Testing
- Google Fit
- Address API
- Instant Apps API
- Location API
- کیت توسعه نرمافزار Google Maps
- همین اطراف
- تمامنما
- مکانها
- Google+
- SafetyNet (منسوخ شده است، لطفاً برای موافقت با Play Integrity API آینده، فرم علاقهمندی را تکمیل کنید)
- مدیریت برچسب Google
- Wear OS
خراب است
موردنیاز برای فرایند انتشار
نباید از این واحدها در رایانه شخصی استفاده کنید زیرا میتوانند باعث رفتار غیرمنتظره در «بازیهای Google Play در رایانه» شوند.
فعال کردن فضای ذخیرهسازی محدودشده
موردنیاز برای فرایند انتشار
اگر بازی شما از فضای ذخیرهسازی خارجی میخواند یا در آن مینویسد، این بخش اعمال میشود. اجرای فضای ذخیرهسازی Scope بهعنوان روشی جایگزین برای خواندن و نوشتن در فضای ذخیرهسازی الزامی است. با انجام این کار، دیگر نیازی به درخواست از بازیکن برای این اجازههای حساس نیست:
android.permission.READ_EXTERNAL_STORAGEandroid.permission.WRITE_EXTERNAL_STORAGE
برای اطلاعات بیشتر درباره فضای ذخیرهسازی محدودشده، به این مقاله مراجعه کنید:
تجزیهوتحلیل
محصولات قدیمی Google Analytics در «بازیهای Google Play در رایانه» کار نمیکنند. اگر این موضوع برای بازیهای شما صدق میکند، باید آن را به Google Analytics 4 منتقل کنید.
این موضوع فقط درصورتی بر بازی شما تأثیر میگذارد که درحالحاضر از Google Analytics 360 استفاده کنید. اگر از کیت توسعه نرمافزار Firebase برای ردیابی رویدادهای Analytics در بازیتان استفاده میکنید و میتوانید بازیتان را بهعنوان دارایی در کنسول Google Analytics ببینید، لازم نیست اقدام دیگری انجام دهید.