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

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

alt_text

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

  • Java-साइड कॉम्पोनेंट के ज़रिए 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 इंटरफ़ेस के साथ पूरी तरह से नए तरीके से लागू किया गया है. यह InputQueue से अलग है, जिसका इस्तेमाल NativeActivity करता है.
  • 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 लाइब्रेरी का कॉन्टेंट

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 में हमेशा सबसे नया सोर्स कोड होता है. अपनी रिलीज़ बनाने के लिए, [बनाने के निर्देशों][GameActivity implementation]{: .external} का पालन करें या सोर्स को सीधे अपने बिल्ड एनवायरमेंट में इंटिग्रेट करें. C/C++ सोर्स कोड को Jetpack लाइब्रेरी के फ़ाइल स्ट्रक्चर की तरह ही सेव किया जाता है.

इंटिग्रेशन से जुड़ी गाइड

अपने ऐप्लिकेशन में GameActivity को इंटिग्रेट करने के लिए, इन गाइड को पढ़ें:

अन्य संसाधन

GameActivity के बारे में ज़्यादा जानने के लिए, यहां जाएं:

सुझाव/राय दें या शिकायत करें

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