टीवी स्क्रीन पर कई ऐसी बातें ध्यान में रखनी पड़ती हैं जो मोबाइल गेम के डेवलपर के लिए नई हो सकती हैं. जैसे, गेम का बड़ा साइज़, कंट्रोल स्कीम, और यह तथ्य कि सभी खिलाड़ी साथ ही वे उसे देख रहे हैं.
डिसप्ले
टीवी स्क्रीन के लिए गेम बनाते समय, इन दो मुख्य बातों का ध्यान रखें: लैंडस्केप ओरिएंटेशन के लिए गेम डिज़ाइन करना और कम इंतज़ार के लिए सहायता देना.
लैंडस्केप मोड में देखने की सुविधा
टीवी हमेशा तिरछा होता है: आप उसे पलट नहीं सकते हैं और उसका कोई पोर्ट्रेट ओरिएंटेशन नहीं है. अपने टीवी गेम को हमेशा लैंडस्केप मोड में दिखाने के लिए डिज़ाइन करें.
लो-लेटेंसी मोड अपने-आप चालू होना
कुछ डिसप्ले, ग्राफ़िक्स पोस्ट-प्रोसेसिंग कर सकते हैं. पोस्ट-प्रोसेसिंग से ग्राफ़िक की क्वालिटी बेहतर होती है, लेकिन इंतज़ार का समय बढ़ सकता है. एचडीएमआई 2.1 के साथ काम करने वाले नए डिसप्ले में अपने-आप कम होने की सुविधा होती है इंतज़ार का समय (ALLM), यह पोस्ट-प्रोसेसिंग को बंद करके इंतज़ार के समय को कम करता है. इसके लिए ALLM के बारे में ज़्यादा जानकारी के लिए, एचडीएमआई 2.1 की खास बातें. अन्य डिसप्ले पर भी, मिलते-जुलते तरीके से गेम मोड काम कर सकता है.
Android 11 और उसके बाद के वर्शन में, विंडो कम से कम पोस्ट-प्रोसेसिंग का अनुरोध करके, ऑटो लो लेटेंसी मोड या गेम मोड का इस्तेमाल करने का अनुरोध कर सकती है. हालांकि, ऐसा तब ही किया जा सकता है, जब ये मोड उपलब्ध हों. यह सुविधा खास तौर पर, गेम और वीडियो कॉन्फ़्रेंसिंग ऐप्लिकेशन के लिए ज़्यादा फ़ायदेमंद है. इनमें बेहतरीन ग्राफ़िक्स होने के बजाय, कम इंतज़ार करना ज़्यादा ज़रूरी होता है.
कम से कम पोस्ट-प्रोसेसिंग को चालू या बंद करने के लिए, कॉल करें
Window.setPreferMinimalPostProcessing()
,
या विंडो के
preferMinimalPostProcessing
एट्रिब्यूट की वैल्यू true
को दें. सभी डिसप्ले, कम से कम पोस्ट-प्रोसेसिंग की सुविधा नहीं देते हैं; यह पता लगाने के लिए कि क्या किसी
कुछ खास डिसप्ले पर काम करता है, तो
Display.isMinimalPostProcessingSupported()
तरीका.
इनपुट डिवाइस
टीवी में टच इंटरफ़ेस नहीं होते. इसलिए, यह ज़रूरी है कि आप गेम के कंट्रोल सही तरीके से सेट करें. साथ ही, यह भी पक्का करें कि खिलाड़ियों को उन्हें इस्तेमाल करने में आसानी हो और उन्हें मज़ेदार लगे. कंट्रोलर मैनेज करने के दौरान, कुछ और समस्याओं का भी ध्यान रखना पड़ता है. जैसे, एक से ज़्यादा कंट्रोलर का ट्रैक रखना और डिसकनेक्ट होने की समस्या को ठीक करना. गेम के साथ-साथ, सभी टीवी ऐप्लिकेशन को कंट्रोलर को लगातार मैनेज करना चाहिए. टीवी कंट्रोलर इस्तेमाल करने के बारे में ज़्यादा जानने के लिए, टीवी कंट्रोलर मैनेज करना लेख पढ़ें. साथ ही, गेम के लिए टीवी कंट्रोलर इस्तेमाल करने के बारे में खास जानकारी पाने के लिए, गेम के लिए कंट्रोलर मैनेज करना लेख पढ़ें.
कीबोर्ड लेआउट
Android 13 (एपीआई लेवल 33) और उसके बाद वाले वर्शन में, कीबोर्ड लेआउट तय करने के लिए, इनका इस्तेमाल किया जा सकता है
getKeyCodeForKeyLocation()
.
उदाहरण के लिए, आपके गेम में WASD बटनों का इस्तेमाल करके हलचल की सुविधा काम करती है, लेकिन हो सकता है कि यह इन डिवाइस पर ठीक से काम न करे
ऐसा AZERTY कीबोर्ड जिसमें अलग-अलग जगहों पर A और W बटन होते हैं. आपको जिन कुंजियों को किसी खास जगह पर चाहिए उनके लिए कीकोड पाएं:
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) }
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 की होम स्क्रीन पर, सामान्य ऐप्लिकेशन से अलग गेम को एक लाइन में दिखाया जा रहा है.
अपने गेम को गेम की सूची में दिखाने के लिए, अपने ऐप्लिकेशन मेनिफ़ेस्ट के <application>
टैग में,
android:isGame
एट्रिब्यूट को "true"
पर सेट करें. उदाहरण के लिए:
<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 सेवा की जांच करने की ज़रूरत नहीं है.