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

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

मोबाइल के लिए डिज़ाइन किया गया कार रेसिंग गेम, लैंडस्केप मोड में लॉक होता है, ताकि फ़ोन की स्क्रीन का ज़्यादा से ज़्यादा इस्तेमाल किया जा सके. हाल ही में, टैबलेट और ChromeOS का इस्तेमाल करने वाले लोगों ने शिकायत की है कि इस गेम को खेलना मुश्किल है. साथ ही, उन्होंने इसे पोर्ट्रेट मोड में खेलने की सुविधा देने का अनुरोध किया है. डेवलपर अपने कोड में स्क्रीन के साइज़ की जांच करने की सुविधा शामिल करता है. अगर स्क्रीन का साइज़ काफ़ी बड़ा होता है, तो पोर्ट्रेट मोड की अनुमति दी जाती है. गेम के लिए ज़रूरी वाइड-ऐंगल व्यू को बनाए रखने के लिए, कॉन्टेंट को स्क्रीन के बीच में रखा जाता है. साथ ही, स्क्रीन के सबसे नीचे एक और कार-स्टीरियो यूज़र इंटरफ़ेस (यूआई) बार दिखता है. इससे उपयोगकर्ता आसानी से रेडियो स्टेशन बदल सकते हैं. इसके अलावा, मैप और रेस के आंकड़े स्क्रीन के सबसे ऊपर दिखते हैं. इससे विंडशील्ड व्यू साफ़ दिखता है और गेम खेलने का अनुभव बेहतर होता है.
Android की बड़ी स्क्रीन के लिए दिशा-निर्देश और Android की स्क्रीन के साइज़ से जुड़ा दस्तावेज़ भी देखें.
मल्टी-विंडो की सुविधा
गेम अक्सर उपयोगकर्ताओं को शानदार और फ़ुल-स्क्रीन अनुभव देते हैं. हालांकि, डेस्कटॉप या फ़ोल्ड किए जा सकने वाले डिवाइसों पर कुछ लोगों को चैट, संगीत या वीडियो स्ट्रीमिंग सेवाएं एक साथ खुली हुई और अलग विंडो में दिखती हैं. अगर वे अपनी स्क्रीन रिकॉर्ड कर रहे हैं या शेयर कर रहे हैं, तो अतिरिक्त विंडो खुली रखना और उन्हें दिखाना भी फ़ायदेमंद हो सकता है.
मल्टी-विंडो की सुविधा, Android ऐप्लिकेशन और गेम के लिए डिफ़ॉल्ट रूप से उपलब्ध होती है. यह सुविधा, ChromeOS डेस्कटॉप के साथ-साथ स्प्लिट-स्क्रीन मोड में फ़ोन और टैबलेट पर भी काम करती है. अगर आपको अपने गेम के साइज़ में बदलाव होने से रोकना है, तो AndroidManifest.xml में जाकर यह एलान करें कि इसके साइज़ में बदलाव नहीं किया जा सकता.
android:resizeableActivity="false"
अगर आपके गेम का साइज़ बदला जा सकता है, तो इन बातों का ध्यान रखें:
- विंडो का साइज़ बदलने पर, Android डिफ़ॉल्ट रूप से आपके गेम को “बंद” कर देगा और फिर से “चालू” कर देगा. इसके बारे में जानने के लिए, Android लाइफ़साइकल देखें. आपके गेम को इन री-क्रिएशन के दौरान, स्टेट को आसानी से ट्रैक करना चाहिए. इसके लिए, Jetpack ViewModel का दस्तावेज़ देखें. इसके अलावा, कॉन्फ़िगरेशन में हुए इन बदलावों को मैन्युअल तरीके से हैंडल करें और री-क्रिएशन को रोकें. साथ ही, गेम इंजन को नई स्क्रीन साइज़ को हैंडल करने दें. ज़्यादा जानकारी के लिए, Game Developer Conference 2019 का यह वीडियो देखें.
- अगर आपका ऐप्लिकेशन दिखता है और
STARTEDहै, लेकिनRESUMEDनहीं है, तोonPauseको सही तरीके से हैंडल करें. मल्टी-विंडो का लाइफ़साइकल देखें. - बदले गए साइज़ की विंडो के लिए, अलग-अलग आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) का इस्तेमाल करें. जैसे, ऐसेट को काटना बनाम स्केल करना
विंडो मैनेजमेंट के बारे में ज़्यादा जानें.
फ़ुल-स्क्रीन मोड
जब आपका गेम फ़ुल-स्क्रीन विंडो में चल रहा हो, तब उसे इमर्सिव मोड में रखा जा सकता है. इससे विंडो के बॉर्डर और स्क्रीन पर मौजूद अन्य चीज़ें हट जाती हैं, ताकि गेम खेलने में कोई रुकावट न आए. ज़्यादा जानकारी के लिए, Android का फ़ुल-स्क्रीन मोड से जुड़ा दस्तावेज़ देखें.
private fun hideSystemUI() { // Enables regular immersive mode. window.decorView.systemUiVisibility = ( View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY or View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN) }