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

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

इंटिग्रेशन गाइड

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

अन्य संसाधन

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

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

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