सैंपल

Android गेम डेवलपमेंट एक्सटेंशन के नमूने, मुख्य सुविधाओं को इस्तेमाल करने का तरीका दिखाते हैं जोड़ें. इस विषय में, सैंपल और सेटिंग की ज़रूरत होती है.

नीचे दिए गए सैंपल यहां उपलब्ध हैं: डाउनलोड पेज:

  • HelloJNI: एक शुरुआती प्रोजेक्ट.
  • Endless-Tunnel: सिर्फ़ Android का प्रोजेक्ट.
  • Teabot: Windows और Android के लिए एक क्रॉस-प्लैटफ़ॉर्म प्रोजेक्ट.
  • AssemblyCode-Link-Objects: एक टेंप्लेट प्रोजेक्ट, जिसमें असेंबली सोर्स कोड होता है.

शुरू करने से पहले

  • Android गेम डेवलपमेंट एक्सटेंशन और सैंपल इंस्टॉल करें. ज़्यादा जानकारी के लिए, क्विकस्टार्ट देखें. इस विषय में, यह भी बताया गया है कि और सैंपल चलाकर, Teabot सैंपल के Android वर्शन का इस्तेमाल किया जा सकता है पर जाएं.

  • प्रोजेक्ट कॉन्फ़िगरेशन गाइड में बताया गया है कि एक्सटेंशन का इस्तेमाल करने वाले प्रोजेक्ट के लिए सेटिंग कॉन्फ़िगर करें, जैसे Android प्लैटफ़ॉर्म और APK जोड़ने में मदद मिलती है.

हैलोजेएनआई

HelloJNI सैंपल एक सिंपल प्रोजेक्ट है, जिसमें "हैलो फ़्रॉम जेएनआई" मैसेज दिखता है एक ऐप्लिकेशन विंडो में खुलता है. प्रोजेक्ट, Windows के लिए सोर्स कोड के अलग सेट का इस्तेमाल करता है और Android.

  • Android सोर्स कोड और Gradle बिल्ड स्क्रिप्ट डायरेक्ट्री: नमस्तेJNI\AndroidPackaging
  • Windows का सोर्स कोड और Visual Studio प्रोजेक्ट डायरेक्ट्री: HeyJNI

प्रोजेक्ट बनाते समय, विज़ुअल Studio ये पास करता है सेटिंग को ऐप्लिकेशन-लेवल की build.gradle फ़ाइल की सेटिंग में सेव किया जाता है. ये सेटिंग यहां दी गई हैं: Gredle बिल्ड स्क्रिप्ट में बदलाव करके.

  • MSBUILD_NDK_VERSION
  • MSBUILD_MIN_SDK_VERSION
  • MSBUILD_JNI_LIBS_SRC_DIR
  • MSBUILD_ANDROID_OUTPUT_APK_NAME
  • MSBUILD_ANDROID_GRADLE_BUILD_OUTPUT_DIR

सैंपल को सेट अप करने और चलाने के लिए:

  1. विज़ुअल स्टूडियो में, HelloJNI सैंपल खोलें और बनाएं.
  2. Android arm64-v8a प्लैटफ़ॉर्म जोड़ें. ज़्यादा के लिए जानकारी, देखें Android प्लैटफ़ॉर्म जोड़ना.
  3. Android APK आइटम जोड़ना नए प्लैटफ़ॉर्म पर लाने में मदद मिलती है.
  4. प्रोजेक्ट कंपाइल करें.
  5. इन Android प्लैटफ़ॉर्म को जोड़ें. इसके बाद, Android APK आइटम जोड़ें अप-टू-डेट जानकारी है: Android-armeabi-v7a, Android-x86 और Android-x86_64.
  6. सैंपल बनाएं और चलाएं.

एंडलेस-टनल

Endless-Tunnel सैंपल एक Android गेम है. इसमें खिलाड़ी सफ़ेद रंग की चीज़ें इकट्ठा करता है किसी सुरंग के आखिर तक पहुंचने की कोशिश करते समय क्यूब. इसे OpenGL से पोर्ट किया गया था सैंपल GitHub पर Android NDK रेपो. सैंपल, गेम का Windows वर्शन उपलब्ध नहीं कराता.

सैंपल में पहले से ही सेटिंग और Android प्लैटफ़ॉर्म कॉन्फ़िगर किए हुए हैं. इससे आपको ये काम करने में मदद मिलेगी बिना किसी बदलाव के Visual Studio में प्रोजेक्ट बना और चला सकेगा. आसानी से अपने कैलेंडर में जोड़ें. समाधान खोलने पर, सलूशन एक्सप्लोरर ये मॉड्यूल दिखाता है:

  • अनलिमिटेड टनल: यह ऐप्लिकेशन मॉड्यूल है, जो गेम लॉजिक को दिखाता है.
  • glm: OpenGL मैथ रेपो का स्नैपशॉट जिसे स्टैटिक लाइब्रेरी के तौर पर बनाया गया है.
  • local_app_glue: एक एनडीके रैपर जो नेटिव ऐक्टिविटी ऑब्जेक्ट है.

टीपॉट

टीपॉट का नमूना एक क्लासिक टीपॉट दिखाता है, जिसे OpenGL ES के साथ रेंडर किया जाता है और इन सुविधाओं को दिखाने के लिए Android गेम डेवलपमेंट एक्सटेंशन में पोर्ट किया गया है:

  • क्रॉस-प्लैटफ़ॉर्म प्रोजेक्ट डेवलपमेंट: आपके पास Teapo का सैंपल बनाने के लिए Windows और Android.
  • Android के लिए पसंद के मुताबिक पैकेजिंग का इस्तेमाल: Gradle बिल्ड स्क्रिप्ट सैंपल की रूट डायरेक्ट्री, जहां Teapot.sln फ़ाइल मौजूद होती है.
  • प्रयोग के तौर पर Ninja बिल्ड इंटिग्रेशन, जो प्रोजेक्ट को Android Studio में खोल सकते हैं.
  • Android के कस्टम कॉन्फ़िगरेशन, जो इस्तेमाल करने का तरीका बताते हैं अड्रेस सैनिटाइज़र (ASan) और हार्डवेयर एड्रेस सैनिटाइज़र (HWAsan).

टीपॉट के सैंपल को लागू करने की प्रोसेस को कई हिस्सों में बांटा गया है. यह हिस्सा ये आम तौर पर बड़े क्रॉस-प्लैटफ़ॉर्म ऐप्लिकेशन और गेम के होते हैं:

  • GameApplication मॉड्यूल: उपयोगकर्ता की कार्रवाइयों और ऐप्लिकेशन की स्थितियों के बारे में बताता है, जैसे कि जब कोई उपयोगकर्ता टीपॉट को घुमा रहा हो या ऐप्लिकेशन के आंकड़े अपडेट कर रहा हो.
  • GameEngine मॉड्यूल: कोर रेंडरिंग मॉड्यूल लागू करता है.

सैंपल को सेट अप करने और उसे Android पर चलाने के लिए, क्विकस्टार्ट देखें. यहां की यात्रा पर हूं सैंपल सेट अप करें और उसे Windows पर चलाएं:

  1. GLEW इंस्टॉल करें:
    1. GLEW को डाउनलोड और अनज़िप करें.
    2. यहां से बाइनरी फ़ाइलें कॉपी करें $your-glew-directory\bin\Release\x64 से %SystemRoot%\system32.
  2. Freeglut इंस्टॉल करें:
    1. freeglut को डाउनलोड और अनज़िप करें.
    2. $your-freeglut-directory\bin\x86\freeglut.dll को %SystemRoot%\system32 में कॉपी करें.
  3. फ़्रीग्लट प्रोजेक्ट डिपेंडेंसी जोड़ें:
    1. Teapot.sln को विज़ुअल स्टूडियो में खोलें.
    2. मेन्यू में, डीबग > पर क्लिक करें x64 > लोकल Windows डीबगर.
    3. सलूशन एक्सप्लोरर में, राइट क्लिक करें GameApplication करें और चुनें प्रॉपर्टी > C/C++ > सामान्य > अन्य डायरेक्ट्री शामिल करें.
    4. पाथ में $your-freeglut-dir\include जोड़ें.
      अतिरिक्त डायरेक्ट्री शामिल करें डायलॉग का स्क्रीनशॉट.
    5. ठीक है पर क्लिक करें.
    6. लिंकर > सामान्य > लाइब्रेरी की अन्य डायरेक्ट्री.
    7. पाथ में $your-freeglut-dir\lib\x64 जोड़ें. अतिरिक्त लाइब्रेरी डायरेक्ट्री के डायलॉग का स्क्रीनशॉट.
    8. ठीक है पर क्लिक करें.
    9. लिंकर > सामान्य > लाइब्रेरी की अन्य डायरेक्ट्री.
    10. पाथ में freeglut.lib जोड़ें.
    11. ठीक है पर क्लिक करें.
  4. GLEW प्रोजेक्ट डिपेंडेंसी जोड़ें:
    1. सलूशन एक्सप्लोरर पैनल में, राइट क्लिक करें GameApplication करें और चुनें प्रॉपर्टी > C/C++ > सामान्य > अन्य डायरेक्ट्री शामिल करें.
    2. पाथ में $your-glew-dir\include जोड़ें.
    3. ठीक है पर क्लिक करें.
    4. लिंकर > सामान्य > लाइब्रेरी की अन्य डायरेक्ट्री.
    5. पाथ में $your-glew-dir\lib\Release\x86 जोड़ें.
    6. ठीक है पर क्लिक करें.
    7. लिंकर > सामान्य > लाइब्रेरी की अन्य डायरेक्ट्री.
    8. पाथ में glew32.lib जोड़ें.
    9. ठीक है पर क्लिक करें.
  5. Windows पर सैंपल चलाएं:
    1. विज़ुअल स्टूडियो टूलबार पर, लोकल Windows Debugger रन बटन पर क्लिक करें.
    2. सैंपल इस तरह दिखना चाहिए:
      Windows पर चल रहे Teaपॉट के सैंपल का स्क्रीनशॉट.

यह एक टेंप्लेट प्रोजेक्ट है, जिसमें Android नेटिव को जनरेट करने का तरीका बताया गया है लाइब्रेरी असेंबली और C/C++ सोर्स कोड से ली गई है. यहां कुछ मुख्य कॉम्पोनेंट दिए गए हैं:

  • AssemblyCode-Link-Objects: C++ से बनाई गई Android की मुख्य लाइब्रेरी सोर्स कोड को असेंबल करना होगा.
  • StaticLib: एक हेल्पर स्टैटिक लाइब्रेरी जो from_static_lib_assembly_code_as फ़ंक्शन.

प्रोजेक्ट में एक से ज़्यादा आर्किटेक्चर काम करते हों. साथ काम करने वाले हर आर्किटेक्चर में ऐसी सोर्स फ़ाइलें जो StaticLib से एक्सपोर्ट किए जाने वाले फ़ंक्शन लागू करती हैं. आपको सिर्फ़ उन प्लैटफ़ॉर्म की असेंबली सोर्स फ़ाइलें शामिल करनी चाहिए जहां आप हैं बिल्डिंग. इस प्रोजेक्ट में, बिल्ड में असेंबली फ़ाइलें शामिल हैं. इसके लिए: कस्टम बिल्ड टूल शामिल है.

सैंपल बनाने और सेट अप करने के लिए:

  1. Visual Studio में, पुष्टि करें कि कस्टम बिल्ड टूल असेंबली फ़ाइलें:
    1. सलूशन एक्सप्लोरर में, राइट क्लिक करें असेंबली फ़ाइल खोलें और प्रॉपर्टी पर क्लिक करें. इससे, फ़ाइल के लिए, प्रॉपर्टी पेज डायलॉग बॉक्स.
    2. कॉन्फ़िगरेशन और प्लैटफ़ॉर्म चुनें, जैसे इसके लिए सभी कॉन्फ़िगरेशन Android-arm64-v8a.
    3. पक्का करें कि General > बिल्ड से बाहर रखें सेट हो गया है नहीं में बदलें.
    4. पक्का करें कि General > आइटम टाइप सेट कर दिया गया है कस्टम बिल्ड टूल पर जाएं.
    5. अगर बदलाव लागू करने हैं, तो लागू करें पर क्लिक करें.
    6. पक्का करें कि कॉन्फ़िगरेशन प्रॉपर्टी > कस्टम बिल्ड टूल > कमांड लाइन: इस पर सेट है $(AsToolExe) -o "$(IntDir)%(FileName).o" %(FullPath). एनडीके में हर सीपीयू आर्किटेक्चर के लिए एक अलग असेंबलर होता है और $(AsToolExe) सही असेंबलर को मैप करता है. यह सैंपल Android x86 और x86_64, दोनों को बनाने के लिए NDK टूलचेन का इस्तेमाल किया जाता है प्रोजेक्ट. अगर x86_64 Android प्लैटफ़ॉर्म के लिए yasm का इस्तेमाल करना है, इसके बजाय, $(YasmToolExe) का इस्तेमाल करें.
    7. पक्का करें कि कॉन्फ़िगरेशन प्रॉपर्टी > कस्टम बिल्ड टूल > आउटपुट: इस पर सेट है $(IntDir)%(FileName).o. यह स्ट्रिंग शामिल होनी चाहिए कमांड लाइन सेटिंग में जा सकते हैं.
    8. पक्का करें कि कॉन्फ़िगरेशन प्रॉपर्टी > कस्टम बिल्ड टूल > लिंक ऑब्जेक्ट: इस पर सेट है Yes.

    उदाहरण के लिए, Android-arm64-v8a सेटिंग को निम्न स्क्रीनशॉट की तरह दिखाई दें:

    कस्टम बिल्ड टूल के लिए प्रॉपर्टी पेज का स्क्रीनशॉट.
  2. प्रोजेक्ट बनाएं. इससे, libAssmeblyCodeLinkObjects.so फ़ाइल:
    1. AssemblyCode-Link-Objects.sln फ़ाइल खोलें.
    2. मेन्यू में, बिल्ड > पर क्लिक करें समाधान बनाएं.
  3. यह पुष्टि करने के लिए कि फ़ंक्शन, Android में सही तरीके से एक्सपोर्ट हुए हैं लाइब्रेरी के लिए, nm.exe NDK टूल इस्तेमाल करें:
    1. कमांड लाइन में, सैंपल डायरेक्ट्री पर जाएं.
    2. Android लाइब्रेरी की उस जगह पर जाएं जिसे आपने जनरेट किया है बिल्ड. डिफ़ॉल्ट जगह इससे मिलती-जुलती है $sample_dir\$solution_configuration\$solution_platform\$platform अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है और $sample_dir\Debug\Android-arm64-v8a\arm64-v8a arm64-v8a प्लैटफ़ॉर्म के ज़रिए.
    3. पुष्टि करें कि एक्सपोर्ट किए गए सिंबल वाले सेक्शन में, निम्न कमांड चला रहा है:
        \ndk\toolschains\llvm\prebuilt\windows-x86_64\aarch64-linux-android\bin\nm.exe --defined-only \Debug\Android-arm64-v8a\arm64-v8a\libAssmeblyCodeLinkObjects.so
      

      आउटपुट में, आपको उन प्रतीकों की सूची दिखेगी जिनमें फ़ॉलो किया जा रहा है:

         T from_shared_object_assembly_code_as
         T from_static_lib_assembly_code_as