GameActivity Android Game Development Kit का हिस्सा है.
GameActivity एक Jetpack लाइब्रेरी है. इसे Android गेम की मदद करने के लिए डिज़ाइन किया गया है. इससे ऐप्लिकेशन साइकल के कमांड, इनपुट इवेंट, और ऐप्लिकेशन के C/C++ कोड में टेक्स्ट इनपुट को प्रोसेस करने में मदद मिलती है. GameActivity,
NativeActivity का डायरेक्ट डिसेंडेंट है और इसका आर्किटेक्चर भी
जैसा ही है:

ऊपर दिए गए डायग्राम में दिखाया गया है कि GameActivity ये फ़ंक्शन करता है:
- Java-साइड कॉम्पोनेंट के ज़रिए Android फ़्रेमवर्क के साथ इंटरैक्ट करना.
- ऐप्लिकेशन के साइकल कमांड, इनपुट इवेंट, और इनपुट टेक्स्ट को नेटिव साइड पर पास करना.
- C/C++ सोर्स कोड को तीन लॉजिकल कॉम्पोनेंट में मॉडल करना:
- GameActivity के JNI फ़ंक्शन, जो सीधे तौर पर GameActivity के Java फ़ंक्शन को सपोर्ट करते हैं और इवेंट को
native_app_glueमें शामिल करते हैं. native_app_glue, जो ज़्यादातर अपनी नेटिव थ्रेड में चलता है. यह ऐप्लिकेशन की मुख्य थ्रेड से अलग होता है. साथ ही, यह अपने लूपर की मदद से टास्क पूरे करता है.- ऐप्लिकेशन का गेम कोड, जो
native_app_glueमें कतार में लगे इवेंट को पोल और प्रोसेस करता है. साथ ही,native_app_glueथ्रेड में गेम कोड को एक्ज़ीक्यूट करता है.
- GameActivity के JNI फ़ंक्शन, जो सीधे तौर पर GameActivity के Java फ़ंक्शन को सपोर्ट करते हैं और इवेंट को
GameActivity की मदद से, गेम बनाने पर फ़ोकस किया जा सकता है. साथ ही, JNI कोड को मैनेज करने में ज़्यादा समय खर्च करने से बचा जा सकता है.
अगर आपको NativeActivity के बारे में पहले से पता है, तो GameActivity और NativeActivity के बीच मुख्य अंतर यहां दिए गए हैं:
GameActivityकोSurfaceViewमें रेंडर किया जाता है. इससे गेम के लिए, अन्य यूज़र इंटरफ़ेस (यूआई) कॉम्पोनेंट के साथ इंटरैक्ट करना बहुत आसान हो जाता है.- टच और कीबोर्ड से इनपुट देने के इवेंट के लिए,
GameActivityमेंandroid_input_bufferइंटरफ़ेस के साथ पूरी तरह से नया तरीका लागू किया गया है. यहInputQueueसे अलग है, जिसका इस्तेमालNativeActivityकरता है. GameActivity,AppCompatActivityकी डिराइव की गई क्लास है. इसकी मदद से, Jetpack के अन्य कॉम्पोनेंट का आसानी से इस्तेमाल किया जा सकता है.ActionBar,Fragment, और अन्य सभी उपलब्ध हैं.GameActivity, GameTextInput लाइब्रेरी को इंटिग्रेट करके, टेक्स्ट इनपुट करने की सुविधा जोड़ता है.GameActivityसे बनाए गए ऐप्लिकेशन से यह उम्मीद की जाती है कि वे C/C++ कोड के तीनों हिस्सों को एक लाइब्रेरी में बनाएं. वहीं दूसरी ओर,NativeActivityके JNI फ़ंक्शन, फ़्रेमवर्क का हिस्सा होते हैं. इन्हें ओएस हमेशा लोड करता है. इसलिए, सिर्फ़native_app_glueऔर ऐप्लिकेशन के C/C++ कोड को एक लाइब्रेरी में बनाया जाना चाहिए.NativeActivity, Android फ़्रेमवर्क का हिस्सा है. यह Android के रिलीज़ साइकल (आम तौर पर, हर साल) के हिसाब से काम करता है.GameActivityJetpack लाइब्रेरी का हिस्सा है. यह लाइब्रेरी, बहुत कम समय के अंतराल में रिलीज़ होती है. आम तौर पर, यह हर दो हफ़्ते में रिलीज़ होती है. इसलिए, नई सुविधाएं और गड़बड़ी ठीक करने वाले अपडेट बहुत कम समय में उपलब्ध हो जाते हैं.
जगहें रिलीज़ करना
GameActivity लाइब्रेरी इन चैनलों पर उपलब्ध है:
- Android Jetpack लाइब्रेरी के हिस्से के तौर पर (सुझाया गया)
- AOSP के सोर्स कोड के तौर पर
C/C++ कोड को सभी रिलीज़ चैनल में सोर्स कोड के तौर पर उपलब्ध कराया जाता है. इसके लिए, Prefab फ़ॉर्मैट का इस्तेमाल किया जाता है. GameActivity के वर्शन 1.2.2 में, डिस्ट्रिब्यूशन में एक स्टैटिक लाइब्रेरी जोड़ी गई है. हमारा सुझाव है कि इस वर्शन और इसके बाद के वर्शन के लिए, सोर्स कोड के बजाय स्टैटिक लाइब्रेरी का इस्तेमाल करें.
Jetpack लाइब्रेरी का कॉन्टेंट
Jetpack लाइब्रेरी के साथ, GameActivity को AAR के साथ रिलीज़ किया जाता है. इस एएआर में ये मुख्य कॉम्पोनेंट शामिल हैं:
- Java कोड के लिए JAR फ़ाइल
- C/C++ स्टैटिक लाइब्रेरी
game-activity_static, GameActivity के वर्शन 1.2.2 और उसके बाद के वर्शन में शामिल है. - C/C++ सोर्स कोड (
/prefabफ़ोल्डर में)
इस पेज पर दिए गए इंटिग्रेशन के निर्देशों में यह माना गया है कि आपके पास अपने बिल्ड सिस्टम में Prefab का इस्तेमाल करने की सुविधा है. अगर ऐसा नहीं है, तो prefab/modules/game-activity/include फ़ोल्डर में पैक किए गए सोर्स कोड को अपने बिल्ड सिस्टम में कॉपी करें. इसके बाद, इंटिग्रेशन के ज़रूरी चरण पूरे करें. Android Jetpack लाइब्रेरी के लिए, androidx में मौजूद रिलीज़ के लिए भी इसी तरह का फ़ाइल स्ट्रक्चर होता है. डिफ़ॉल्ट रूप से, Gradle अपनी कैश मेमोरी डायरेक्ट्री (~/.gradle/caches/...) में AAR को अनपैक करता है. C/C++ का सोर्स कोड ढूंढने के लिए, prefab/modules/game-activity/include खोजें. इसके बाद, रिलीज़ के लिए तैयार वर्शन के हिसाब से लोकेशन चुनें.
Jetpack लाइब्रेरी का इस्तेमाल करके इंटिग्रेट करने के निर्देश जानने के लिए, GameActivity का इस्तेमाल शुरू करना लेख पढ़ें.
AOSP के सोर्स कोड का कॉन्टेंट
AOSP में हमेशा सबसे नया सोर्स कोड होता है. अपनी रिलीज़ बनाने के लिए, बनाने से जुड़े निर्देशों का पालन करें या सोर्स को सीधे अपने बिल्ड एनवायरमेंट में इंटिग्रेट करें. C/C++ सोर्स कोड को Jetpack लाइब्रेरी के फ़ाइल स्ट्रक्चर की तरह ही सेव किया जाता है.
इंटिग्रेशन गाइड
अपने ऐप्लिकेशन में GameActivity को इंटिग्रेट करने के लिए, इन गाइड का पालन करें:
- शुरू करें
- गेम में टेक्स्ट डालने की सुविधा का इस्तेमाल करना
- NativeActivity माइग्रेट करने से जुड़ी गाइड
अन्य संसाधन
GameActivity के बारे में ज़्यादा जानने के लिए, यह लेख पढ़ें:
- GameActivity और AGDK के रिलीज़ नोट.
- GameActivity में GameTextInput का इस्तेमाल करें.
- NativeActivity माइग्रेट करने से जुड़ी गाइड.
- GameActivity का रेफ़रंस दस्तावेज़.
- GameActivity लागू करना.
सुझाव/राय दें या शिकायत करें
GameActivity में गड़बड़ियों की शिकायत करने या नई सुविधाओं का अनुरोध करने के लिए, Issue Tracker का इस्तेमाल करें.