झटपट ऐक्सेस के लिए सहायता जोड़ें

अपना पहला झटपट ऐप्लिकेशन बनाएं में बताए गए तरीके से, Google Play Instant पर चलने वाले ऐप्लिकेशन सेट अप किए जा सकते हैं. यह तरीका गेम पर भी लागू होता है. इस गाइड में, गेम के लिए खास तौर पर सेट अप करने के कुछ तरीकों के बारे में बताया गया है.

आप Google Play इंस्टेंट के लिए गेम, Unity (Google Play Instant Unity प्लग-इन के साथ या उसके बिना), Cocos2D, Android Studio या अपने हिसाब से बनाए गए इंजन का इस्तेमाल करके डेवलप कर सकते हैं.

इस गाइड में यह मान लिया गया है कि आपको पहले से पता है कि आपको किस तरह का गेमिंग अनुभव देना है. अगर आपको बेहतर क्वालिटी वाले गेम बनाने के लिए आइडिया और सबसे सही तरीके देखने हैं, तो Google Play Instant पर गेम के लिए यूएक्स के सबसे सही तरीके पढ़ें.

इसके अलावा, Google Play इंस्टेंट पर चलने वाला गेम पब्लिश करने से पहले, आपको तकनीकी ज़रूरी शर्तों की चेकलिस्ट की समीक्षा करनी चाहिए.

ऐसी गतिविधि जिसमें इंटेंट फ़िल्टर शामिल हो, 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 Store में अभी आज़माएं बटन या Google Play Games ऐप्लिकेशन में इंस्टैंट प्ले बटन पर टैप करता है, तो यह गतिविधि लॉन्च होती है. डीप लिंक एपीआई का इस्तेमाल करके, इस गतिविधि को सीधे तौर पर भी लॉन्च किया जा सकता है.

सही वर्शन कोड तय करना

आपके गेम के इंस्टैंट अनुभव का वर्शन कोड, इंस्टॉल किए जा सकने वाले गेम के वर्शन कोड से कम होना चाहिए. इस तरह से अपने ऐप्लिकेशन का वर्शन तय करने से, खिलाड़ी Google Play Instant के अनुभव से, गेम को अपने डिवाइस पर डाउनलोड और इंस्टॉल कर सकते हैं. Android फ़्रेमवर्क, इस ट्रांज़िशन को ऐप्लिकेशन का अपडेट मानता है.

यह पक्का करने के लिए कि आपने वर्शन तय करने की सुझाई गई स्कीम का पालन किया है, इनमें से कोई एक रणनीति अपनाएं:

  • Google Play Instant के अनुभव के लिए, वर्शन कोड को 1 से रीस्टार्ट करें.
  • इंस्टॉल किए जा सकने वाले ऐप्लिकेशन के वर्शन कोड को 1000 जैसे बड़े नंबर से बढ़ाएं, ताकि आपके इंस्टैंट अनुभव के वर्शन नंबर को बढ़ाने के लिए काफ़ी जगह हो.

अपने इंस्टैंट गेम और इंस्टॉल किए जा सकने वाले गेम को, Android Studio के दो अलग-अलग प्रोजेक्ट में डेवलप किया जा सकता है. हालांकि, ऐसा करने पर आपको Google Play पर अपना गेम पब्लिश करने के लिए, यह काम करना होगा:

  1. Android Studio के दोनों प्रोजेक्ट में, एक ही पैकेज का नाम इस्तेमाल करें.
  2. Google Play Console में, दोनों वैरिएंट को एक ही ऐप्लिकेशन में अपलोड करें.

अपने गेम का वर्शन सेट करने के बारे में ज़्यादा जानने के लिए, अपने ऐप्लिकेशन का वर्शन तय करना लेख पढ़ें.

एक्ज़ीक्यूशन एनवायरमेंट के साथ काम करना

अन्य ऐप्लिकेशन की तरह, Google Play इंस्टेंट पर मौजूद गेम, डिवाइस पर सीमित सैंडबॉक्स में चलते हैं. इस एक्ज़ीक्यूशन एनवायरमेंट के साथ काम करने के लिए, यहां दिए गए सेक्शन में दिखाए गए तरीके अपनाएं.

सादे टेक्स्ट वाले ट्रैफ़िक से ऑप्ट आउट करना

Google Play इंस्टेंट पर मौजूद गेम, एचटीटीपी ट्रैफ़िक के साथ काम नहीं करते. अगर आपका गेम, Android 9 (एपीआई लेवल 28) या उसके बाद के वर्शन को टारगेट करता है, तो Android आपके गेम में सादे टेक्स्ट वाले ट्रैफ़िक की सुविधा को डिफ़ॉल्ट रूप से बंद कर देता है.

हालांकि, अगर आपका गेम, Android 8.1 (एपीआई लेवल 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 इंस्टेंट के साथ काम करने वाले सैंडबॉक्स एनवायरमेंट को टारगेट करे. इस अपडेट को पूरा करने के लिए, अपने गेम के <manifest> एलिमेंट में android:targetSandboxVersion एट्रिब्यूट जोड़ें. जैसा कि यहां दिए गए कोड स्निपेट में दिखाया गया है:

<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 फ़ॉर्मैट का इस्तेमाल करने पर विचार करें. खास तौर पर, अगर जीपीयू पर कंप्रेस न किए गए टेक्सचर का इस्तेमाल किया जा रहा है. 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 का इस्तेमाल करें.
  • DEX फ़ाइलें छोटी जनरेट करने के लिए, Gradle 4.4 या उसके बाद के वर्शन का इस्तेमाल करें.
  • ऐसेट की क्लाउड डिलीवरी की सुविधा लागू करें.

बड़े गेम को कई APK में बांटना

APK का साइज़ कम करने के सुझावों को लागू करने के बाद भी, Google Play Instant के अनुभव को ऑप्टिमाइज़ करना मुश्किल हो सकता है, ताकि आपका गेम 15 एमबी के एक APK में फ़िट हो जाए. इस समस्या को हल करने के लिए, अपने गेम को कई APK में बांटा जा सकता है. खिलाड़ी, मुख्य, बेस APK डाउनलोड करके खेलना शुरू करते हैं. जैसे-जैसे वे खेलते हैं, बाकी स्प्लिट APK, बैकग्राउंड में गेम के लिए उपलब्ध कराए जाते हैं.

उदाहरण के लिए, बेस APK में कोर गेम इंजन और लोडिंग स्क्रीन दिखाने के लिए ज़रूरी ऐसेट शामिल हो सकती हैं. बेस APK लॉन्च होने पर, वह लोडिंग स्क्रीन दिखाता है और तुरंत एक और स्प्लिट APK का अनुरोध करता है. इसमें गेम और लेवल का डेटा शामिल होता है. वह स्प्लिट APK उपलब्ध होने के बाद, अपनी ऐसेट को गेम इंजन में लोड कर सकता है और खिलाड़ी को वह कॉन्टेंट दे सकता है जिसकी उसे गेम शुरू करने के लिए ज़रूरत होती है.

यूएक्स के सबसे सही तरीके अपनाना

अपने गेम को कॉन्फ़िगर करने के बाद, ताकि वह इंस्टैंट अनुभव के साथ काम कर सके, अच्छा उपयोगकर्ता अनुभव देने के लिए, यहां दिए गए सेक्शन में दिखाई गई लॉजिक जोड़ें.

64-बिट आर्किटेक्चर के साथ काम करना

Google Play पर पब्लिश किए गए ऐप्लिकेशन, 64-बिट आर्किटेक्चर के साथ काम करने चाहिए. अपने ऐप्लिकेशन का 64-बिट वर्शन जोड़ने से, परफ़ॉर्मेंस बेहतर होती है. साथ ही, 64-बिट वाले हार्डवेयर वाले डिवाइसों के लिए भी आपका ऐप्लिकेशन तैयार हो जाता है. 64-बिट के साथ काम करने की सुविधा के बारे में ज़्यादा जानें.

यह देखना कि गेम, झटपट इस्तेमाल की सुविधा देने वाले ऐप्लिकेशन के साथ चल रहा है या नहीं

अगर आपके गेम की कुछ लॉजिक इस बात पर निर्भर करती है कि उपयोगकर्ता आपके झटपट इस्तेमाल की सुविधा देने वाले ऐप्लिकेशन में शामिल है या नहीं, तो isInstantApp() तरीके को कॉल करें. अगर फ़िलहाल चल रही प्रोसेस, झटपट इस्तेमाल की सुविधा देने वाला ऐप्लिकेशन है, तो यह तरीका true दिखाता है.

यह जांच करके, यह तय किया जा सकता है कि आपके ऐप्लिकेशन को सीमित एक्ज़ीक्यूशन एनवायरमेंट में चलाने की ज़रूरत है या वह प्लैटफ़ॉर्म की सुविधाओं का फ़ायदा ले सकता है.

इंस्टॉलेशन प्रॉम्प्ट दिखाना

अगर आपने Google Play Instant का ट्रायल अनुभव बनाया है, तो किसी समय गेम को खिलाड़ी से अपने डिवाइस पर पूरा वर्शन इंस्टॉल करने के लिए कहना चाहिए. ऐसा करने के लिए, Android के लिए Google API में showInstallPrompt() तरीके का इस्तेमाल करें.

खिलाड़ी से इंस्टॉलेशन के लिए कब और कैसे कहना चाहिए, इस बारे में ज़्यादा जानने के लिए, देखें Google Play Instant पर गेम के लिए यूएक्स के सबसे सही तरीके.

इंस्टॉल किए गए अनुभव में डेटा ट्रांसफ़र करना

अगर किसी खिलाड़ी को आपका ट्रायल अनुभव पसंद आता है, तो वह आपके गेम का पूरा वर्शन इंस्टॉल करने का फ़ैसला ले सकता है. अच्छा उपयोगकर्ता अनुभव देने के लिए, यह ज़रूरी है कि खिलाड़ी की प्रोग्रेस, आपके झटपट इस्तेमाल की सुविधा देने वाले ऐप्लिकेशन से आपके गेम के पूरे वर्शन में ट्रांसफ़र हो जाए.

अगर आपके गेम में को targetSandboxVersion पर सेट किया गया है 2, तो खिलाड़ी की प्रोग्रेस, आपके गेम के पूरे वर्शन में अपने-आप ट्रांसफ़र हो जाती है. नहीं तो, आपको खिलाड़ी की प्रोग्रेस से जुड़ा डेटा मैन्युअल तरीके से ट्रांसफ़र करना होगा. ऐसा करने के लिए, Cookie API - सैंपल ऐप्लिकेशन का इस्तेमाल करें

अन्य संसाधन

Google Play इंस्टेंट के बारे में ज़्यादा जानने के लिए, ये अन्य संसाधन देखें:

कोडलैब: अपना पहला इंस्टैंट ऐप्लिकेशन बनाना
किसी मौजूदा ऐप्लिकेशन में, Google Play इंस्टेंट के लिए सहायता जोड़ना.
कोडलैब: कई सुविधाओं वाला इंस्टैंट ऐप्लिकेशन बनाना
कई सुविधाओं वाले ऐप्लिकेशन को मॉड्यूल में बांटना.