GameActivity Android Game Development Kit का हिस्सा है.
GameActivity
एक Jetpack लाइब्रेरी है. इसे ऐप्लिकेशन के C/C++ कोड में, ऐप्लिकेशन साइकल के निर्देशों, इनपुट इवेंट, और टेक्स्ट इनपुट को प्रोसेस करने में Android गेम की मदद करने के लिए डिज़ाइन किया गया है. GameActivity
, NativeActivity
का सीधा वंशज है और इनका आर्किटेक्चर एक जैसा है:
ऊपर दिए गए डायग्राम में दिखाए गए तरीके से, GameActivity
ये काम करता है:
- Java-side कॉम्पोनेंट की मदद से, 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
इंटरफ़ेस के साथ पूरी तरह से नया तरीका लागू किया गया है. यहNativeActivity
में इस्तेमाल किए जाने वालेInputQueue
से अलग है. 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 के ZIP पैकेज का कॉन्टेंट
Jetpack लाइब्रेरी और AGDK zip पैकेज चैनलों के साथ, GameActivity को AAR के साथ रिलीज़ किया जाता है. इस 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/...) में AARs को अनपैक करता है. prefab/modules/game-activity/include
खोजकर और अपने रिलीज़ वर्शन के तहत जगह चुनकर, C/C++ सोर्स कोड ढूंढा जा सकता है.
Jetpack लाइब्रेरी का इस्तेमाल करके इंटिग्रेट करने के निर्देशों के लिए, GameActivity का इस्तेमाल शुरू करना लेख पढ़ें.
AOSP सोर्स कोड का कॉन्टेंट
AOSP में हमेशा सबसे नया सोर्स कोड होता है. अपनी रिलीज़ बनाने के लिए, बिल्ड करने के निर्देशों का पालन करें या सोर्स को सीधे अपने बिल्ड एनवायरमेंट में इंटिग्रेट करें. C/C++ सोर्स कोड, Jetpack लाइब्रेरी और AGDK ZIP पैकेज के फ़ाइल स्ट्रक्चर के जैसे ही फ़ाइल स्ट्रक्चर में सेव किया जाता है.
इंटिग्रेशन से जुड़ी गाइड
अपने ऐप्लिकेशन में GameActivity
को इंटिग्रेट करने के लिए, इन गाइड का पालन करें:
अन्य संसाधन
GameActivity
के बारे में ज़्यादा जानने के लिए, यहां देखें:
- GameActivity और AGDK के रिलीज़ नोट.
- GameActivity में GameTextInput का इस्तेमाल करना.
- NativeActivity को माइग्रेट करने से जुड़ी गाइड.
- GameActivity का रेफ़रंस दस्तावेज़.
- GameActivity को लागू करना.
सुझाव/राय दें या शिकायत करें
GameActivity से जुड़ी गड़बड़ियों की शिकायत करने या नई सुविधाओं का अनुरोध करने के लिए, GameActivity से जुड़ी समस्या को ट्रैक करने वाले टूल का इस्तेमाल करें.