GameActivity Android Game Development Kit का हिस्सा है.
GameActivity
एक Jetpack लाइब्रेरी है. इसे Android गेम की मदद करने के लिए डिज़ाइन किया गया है. यह ऐप्लिकेशन के C/C++ कोड में ऐप्लिकेशन साइकल कमांड, इनपुट इवेंट, और टेक्स्ट इनपुट को प्रोसेस करने में मदद करती है. GameActivity
, NativeActivity
का डायरेक्ट डिसेंडेंट है और इसका आर्किटेक्चर भी 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 फ़्रेमवर्क का हिस्सा है और इसके रिलीज़ साइकल (आम तौर पर, सालाना) का पालन करता है.GameActivity
, Jetpack लाइब्रेरी का हिस्सा है. इसे ज़्यादा बार रिलीज़ किया जाता है. आम तौर पर, इसे हर दो हफ़्ते में रिलीज़ किया जाता है. इसलिए, नई सुविधाएं और बग ठीक करने वाले अपडेट बहुत जल्दी मिल जाते हैं.
जगहों की जानकारी ट्रांसफ़र करना
GameActivity
लाइब्रेरी इन चैनलों पर उपलब्ध है:
- Android Jetpack लाइब्रेरी के हिस्से के तौर पर (सुझाया गया)
- AOSP के सोर्स कोड के तौर पर
C/C++ कोड को सभी रिलीज़ चैनल में सोर्स कोड के तौर पर उपलब्ध कराया जाता है. इसके लिए, Prefab फ़ॉर्मैट का इस्तेमाल किया जाता है. GameActivity के वर्शन 1.2.2 में, डिस्ट्रिब्यूशन में एक स्टैटिक लाइब्रेरी जोड़ी गई है. हमारा सुझाव है कि इस वर्शन और इसके बाद के वर्शन के लिए, सोर्स कोड के बजाय स्टैटिक लाइब्रेरी का इस्तेमाल करें.
Jetpack लाइब्रेरी और AGDK के ज़िप पैकेज का कॉन्टेंट
Jetpack लाइब्रेरी और AGDK के ज़िप पैकेज चैनल की मदद से, 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 लाइब्रेरी और AGDK zip पैकेज के फ़ाइल स्ट्रक्चर जैसा होता है.
इंटिग्रेशन से जुड़ी गाइड
अपने ऐप्लिकेशन में GameActivity
को इंटिग्रेट करने के लिए, इन गाइड को पढ़ें:
- शुरू करें
- गेम में टेक्स्ट डालने की सुविधा का इस्तेमाल करना
- NativeActivity को माइग्रेट करने से जुड़ी गाइड
अन्य संसाधन
GameActivity
के बारे में ज़्यादा जानने के लिए, यहां जाएं:
- GameActivity और AGDK के रिलीज़ नोट.
- GameActivity में GameTextInput का इस्तेमाल करें.
- NativeActivity माइग्रेशन गाइड.
- GameActivity के रेफ़रंस दस्तावेज़.
- GameActivity लागू करना.
सुझाव/राय दें या शिकायत करें
GameActivity में गड़बड़ियों की शिकायत करने या नई सुविधाओं का अनुरोध करने के लिए, GameActivity से जुड़ी समस्या को ट्रैक करने वाले टूल का इस्तेमाल करें.