GameActivity   Android Game Development Kit का हिस्सा है.

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

alt_text

ऊपर दिए गए डायग्राम में दिखाए गए तरीके से, GameActivity ये काम करता है:

  • Java-side कॉम्पोनेंट की मदद से, Android फ़्रेमवर्क के साथ इंटरैक्ट करना.
  • ऐप्लिकेशन साइकल के निर्देश, इनपुट इवेंट, और इनपुट टेक्स्ट को नेटिव साइड पर भेजना.
  • C/C++ सोर्स कोड को तीन लॉजिकल कॉम्पोनेंट में मॉडलिंग करना:
    • GameActivity के JNI फ़ंक्शन, जो सीधे तौर पर GameActivity के Java फ़ंक्शन के साथ काम करते हैं और इवेंट को native_app_glue में लाइन में लगाते हैं.
    • native_app_glue, जो ज़्यादातर अपनी नेटिव थ्रेड (ऐप्लिकेशन की मुख्य थ्रेड से अलग) में चलता है और अपने लूपर की मदद से टास्क पूरा करता है.
    • ऐप्लिकेशन का गेम कोड, जो native_app_glue में पंक्ति में लगे इवेंट को पोल करता है और प्रोसेस करता है. साथ ही, native_app_glue थ्रेड में गेम कोड को लागू करता है.

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 लाइब्रेरी इन चैनलों में उपलब्ध है:

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 से जुड़ी गड़बड़ियों की शिकायत करने या नई सुविधाओं का अनुरोध करने के लिए, GameActivity से जुड़ी समस्या को ट्रैक करने वाले टूल का इस्तेमाल करें.