बिल्ड टीवी गेम

टेलिविज़न स्क्रीन पर ऐसी कई बातें नज़र आती हैं जो मोबाइल गेम के लिहाज़ से नई हो सकती हैं डेवलपर. जैसे, गेम का बड़ा साइज़, कंट्रोल स्कीम, और यह तथ्य कि सभी खिलाड़ी साथ ही वे उसे देख रहे हैं.

डिसप्ले

टीवी स्क्रीन के लिए गेम डेवलप करते समय ध्यान रखने वाली दो मुख्य बातें आपके गेम को एक लैंडस्केप ओरिएंटेशन के साथ-साथ, इंतज़ार के समय को कम करने में भी मदद करेगा.

लैंडस्केप डिसप्ले के साथ काम करता है

टीवी हमेशा तिरछा होता है: आप उसे पलट नहीं सकते हैं और उसका कोई पोर्ट्रेट ओरिएंटेशन नहीं है. हमेशा डिज़ाइन करें लैंडस्केप मोड में दिखाए जाने के लिए आपके टीवी गेम.

इंतज़ार का समय अपने-आप कम होने वाला मोड

कुछ डिसप्ले पर, वीडियो पोस्ट करने के बाद ग्राफ़िक का इस्तेमाल किया जा सकता है. इस पोस्ट-प्रोसेसिंग से ग्राफ़िक बेहतर होते हैं क्वालिटी होती है, लेकिन इससे इंतज़ार का समय बढ़ सकता है. एचडीएमआई 2.1 के साथ काम करने वाले नए डिसप्ले में अपने-आप कम होने की सुविधा होती है इंतज़ार का समय (ALLM), यह पोस्ट-प्रोसेसिंग को बंद करके इंतज़ार के समय को कम करता है. इसके लिए ALLM के बारे में ज़्यादा जानकारी के लिए, एचडीएमआई 2.1 की खास बातें. किसी और तरीके से डिसप्ले, इसी तरह के व्यवहार वाले गेम मोड के साथ काम कर सकते हैं.

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

कम से कम पोस्ट-प्रोसेसिंग को चालू या बंद करने के लिए, कॉल करें Window.setPreferMinimalPostProcessing(), या विंडो के preferMinimalPostProcessing एट्रिब्यूट की वैल्यू true को दें. सभी डिसप्ले, कम से कम पोस्ट-प्रोसेसिंग की सुविधा नहीं देते हैं; यह पता लगाने के लिए कि क्या किसी कुछ खास डिसप्ले पर काम करता है, तो Display.isMinimalPostProcessingSupported() तरीका.

इनपुट डिवाइस

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

कीबोर्ड लेआउट

Android 13 (एपीआई लेवल 33) और उसके बाद वाले वर्शन में, कीबोर्ड लेआउट तय करने के लिए, इनका इस्तेमाल किया जा सकता है getKeyCodeForKeyLocation(). उदाहरण के लिए, आपके गेम में WASD बटनों का इस्तेमाल करके हलचल की सुविधा काम करती है, लेकिन हो सकता है कि यह इन डिवाइस पर ठीक से काम न करे ऐसा AZERTY कीबोर्ड जिसमें अलग-अलग जगहों पर A और W बटन होते हैं. आपको कीकोड मिल सकते हैं के लिए:

Kotlin

val inputManager: InputManager? = requireActivity().getSystemService()

inputManager?.inputDeviceIds?.map { inputManager.getInputDevice(it) }
    ?.firstOrNull { it.keyboardType == InputDevice.KEYBOARD_TYPE_ALPHABETIC }
    ?.let { inputDevice ->
        keyUp = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_W)
        keyLeft = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_A)
        keyDown = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_S)
        keyRight = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_D)
    }

Java

InputManager inputManager = requireActivity().getSystemService(InputManager.class);
InputDevice inputDevice = Arrays.stream(inputManager.getInputDeviceIds())
        .mapToObj(inputManager::getInputDevice)
        .filter( device -> device.getKeyboardType() == InputDevice.KEYBOARD_TYPE_ALPHABETIC)
        .filter(Objects::nonNull)
        .findFirst()
        .orElse(null);
if (inputDevice != null) {
    keyUp = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_W);
    keyLeft = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_A);
    keyDown = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_S);
    keyRight = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_D);
}

इस उदाहरण में, AZERTY कीबोर्ड से keyUp को इस पर सेट किया गया है KeyEvent.KEYCODE_Z, keyLeft को KeyEvent.KEYCODE_Q पर सेट किया गया, जबकि keyDown और keyRight को KeyEvent.KEYCODE_S पर सेट किया गया है और KeyEvent.KEYCODE_D, दोनों का इस्तेमाल किया जा सकता है. अब इनके लिए मुख्य इवेंट हैंडलर बनाए जा सकते हैं कुंजी कोड और अपेक्षित व्यवहार लागू करता है.

मेनिफ़ेस्ट

कुछ खास चीज़ें हैं जो गेम के Android मेनिफ़ेस्ट में शामिल होनी चाहिए.

होम स्क्रीन पर अपना गेम दिखाएं

Android TV की होम स्क्रीन पर, सामान्य ऐप्लिकेशन से अलग गेम को एक लाइन में दिखाया जा रहा है. अपने गेम को गेम की सूची में दिखाने के लिए, ऐप्लिकेशन मेनिफ़ेस्ट में "true" के लिए android:isGame एट्रिब्यूट <application> टैग. उदाहरण के लिए:

<application
    ...
    android:isGame="true"
    ...
>

गेम कंट्रोलर के लिए सहायता का एलान करें

टीवी डिवाइस के उपयोगकर्ताओं के लिए, हो सकता है कि गेम कंट्रोलर उपलब्ध न हों या चालू न हों. ठीक से करने के लिए लोगों को बताएं कि आपका गेम, गेम कंट्रोलर के साथ काम करता है. इसके लिए, आपको आपका ऐप्लिकेशन मेनिफ़ेस्ट:

  <uses-feature android:name="android.hardware.gamepad" android:required="false"/>

ध्यान दें: android:hardware:gamepad सहायता तय करते समय, android:required एट्रिब्यूट का इस्तेमाल "true" के लिए किया जाता है. ऐसा करने पर, लोग टीवी डिवाइसों पर अपना ऐप्लिकेशन इंस्टॉल करें.

मेनिफ़ेस्ट एंट्री के बारे में ज़्यादा जानकारी के लिए देखें ऐप्लिकेशन मेनिफ़ेस्ट.

Google Play गेम्स सेवाएं

अगर आपके गेम में Google Play की गेम सेवाओं को इंटिग्रेट किया गया है, तो आपको कई बातों का ध्यान रखना चाहिए और गेम को सेव करने, साइन-इन करने, और गेम सेव करने जैसे विषयों पर बात करते हैं.

उपलब्धियां

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

साइन इन करना

लॉन्च के समय, आपके गेम में उपयोगकर्ता को साइन इन करने की कोशिश करनी चाहिए. अगर खिलाड़ी, कई बार साइन इन करने से मना कर देता है आपके गेम को बार-बार पूछना बंद कर देना चाहिए. साइन इन करने के बारे में ज़्यादा जानने के लिए, पर साइन इन लागू करना पर जाएं Android.

सेव किया जा रहा है

स्टोर करने के लिए, Google Play Services में सेव किए गए गेम का इस्तेमाल करें सेव करें. आपके गेम में सेव किए गए गेम से, सेव किए गए आइटम को एक खास Google खाते से बाइंड किया जाना चाहिए. ऐसा करने से, डिवाइस पर व्यक्ति की अच्छी तरह से पहचान करना: चाहे प्लेयर हैंडसेट का इस्तेमाल कर रहा हो या टीवी का, गेम में उसी उपयोगकर्ता खाते से, गेम में सेव की गई जानकारी हासिल की जा सकती हो.

आपको अपने गेम के यूज़र इंटरफ़ेस (यूआई) में ऐसा विकल्प भी देना चाहिए जिससे खिलाड़ी को डिवाइस से आइटम मिटाने की अनुमति मिल सके और क्लाउड पर सेव किया गया डेटा है. इस विकल्प को गेम की Settings स्क्रीन पर दिखाया जा सकता है. इसके लिए Play Services का इस्तेमाल करके, सेव किए गए गेम की सुविधा लागू करने के बारे में खास जानकारी, Android में सेव किए गए गेम देखें.

बाहर निकलें

एक जैसा और साफ़ तौर पर दिखने वाला यूज़र इंटरफ़ेस (यूआई) एलिमेंट दें, ताकि लोग आसानी से गेम से बाहर निकल सकें. यह एलिमेंट ऐसा होना चाहिए कि डी-पैड नेविगेशन बटन से उसे ऐक्सेस किया जा सके. भरोसा करने के बजाय ऐसा करें बाहर निकलने के लिए दिया गया होम बटन. यह अलग-अलग कंट्रोलर के लिए न तो एक जैसा है और न ही भरोसेमंद है.

वेब

Android TV के लिए, गेम में वेब ब्राउज़िंग की सुविधा चालू न करें. Android TV पर वेब ब्राउज़र काम नहीं करता.

ध्यान दें: लॉगिन करने के लिए, WebView क्लास का इस्तेमाल किया जा सकता है सोशल मीडिया सेवाओं पर.

नेटवर्किंग

बेहतरीन परफ़ॉर्मेंस देने के लिए, गेम को अक्सर ज़्यादा बैंडविड्थ की ज़रूरत होती है और ज़्यादातर लोगों ने ईथरनेट से वाई-फ़ाई का इस्तेमाल कर सकते हैं. आपके ऐप्लिकेशन को वाई-फ़ाई और ईथरनेट, दोनों की जांच करनी चाहिए कनेक्शन. अगर आपका ऐप्लिकेशन सिर्फ़ टीवी के लिए है, तो आपको 3G/LTE सेवा की जांच करने की ज़रूरत नहीं है, जैसा कि आपको मोबाइल ऐप्लिकेशन के लिए.