GameActivity   Android গেম ডেভেলপমেন্ট কিটের অংশ।

GameActivity হল একটি Jetpack লাইব্রেরি যা অ্যাপ সাইকেল কমান্ড, ইনপুট ইভেন্ট ও টেক্সট ইনপুট প্রসেস করার ব্যাপারে Android গেমকে সাহায্য করার জন্য ডিজাইন করা হয়েছে। 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-এ রেন্ডার করে, এর ফলে গেমের পক্ষে অন্যান্য UI কম্পোনেন্টের সাথে ইন্টার‍্যাক্ট করা অনেক সহজ হয়ে যায়।
  • টাচ ও কী ইনপুট ইভেন্টের জন্য, GameActivity-এ android_input_buffer ইন্টারফেসের সাথে সম্পূর্ণ নতুন ইমপ্লিমেন্টেশন আছে, যা InputQueue থেকে আলাদা এবং এটি NativeActivity ব্যবহার করে।
  • GameActivity হল AppCompatActivity-এর একটি ডেরিভেটিভ ক্লাস, যা আপনাকে অন্যান্য Jetpack কম্পোনেন্ট নির্বিঘ্নে ব্যবহার করতে দেয়। ActionBar, Fragment এবং অন্যান্য সবই উপলভ্য।
  • GameActivity the GameTextInput লাইব্রেরি ইন্টিগ্রেট করার মাধ্যমে টেক্সট ইনপুট করার ফাংশনালিটি যোগ করে।
  • GameActivity থেকে প্রাপ্ত অ্যাপগুলি থেকে আশা করা হয় যে সেগুলি C/C++ কোডের তিনটি অংশই একটি লাইব্রেরিতে তৈরি করবে। অন্যদিকে, NativeActivity-এর JNI ফাংশন ফ্রেমওয়ার্কের অংশ (সবসময় OS-এর মাধ্যমে লোড করা হয়)। তাই, শুধুমাত্র native_app_glue এবং অ্যাপ্লিকেশনের C/C++ কোড একটি লাইব্রেরিতে বিল্ড করার কথা।
  • NativeActivity হল Android ফ্রেমওয়ার্কের একটি অংশ এবং এটি রিলিজ চক্র (সাধারণত প্রতি বছর) অনুসরণ করে। GameActivity হল Jetpack লাইব্রেরির একটি অংশ, যেটির রিলিজ সাইকেল অনেক বেশি ঘন ঘন হয় (সাধারণত প্রতি দুই সপ্তাহে); নতুন ফিচার ও সমস্যার সমাধান অনেক দ্রুত পাওয়া যায়।

রিলিজ লোকেশন

GameActivity লাইব্রেরি নিম্নলিখিত চ্যানেলে উপলভ্য:

C/C++ কোডটি Prefab ফর্ম্যাট ব্যবহার করে সমস্ত রিলিজ চ্যানেলে সোর্স কোড হিসেবে প্রদান করা হয়। GameActivity ভার্সন 1.2.2 ডিস্ট্রিবিউশনে একটি স্ট্যাটিক লাইব্রেরি যোগ করে। এই ভার্সন ও এর পরের ভার্সন থেকে শুরু করে, আমরা আপনাকে সোর্স কোডের পরিবর্তে স্ট্যাটিক লাইব্রেরি ব্যবহার করার সাজেশন দিই।

Jetpack লাইব্রেরির কন্টেন্ট

Jetpack লাইব্রেরির সাথে, 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 তার ক্যাশে ডিরেক্টরিতে AAR আনপ্যাক করে (~/.gradle/caches/...)। আপনি prefab/modules/game-activity/include সার্চ করে এবং আপনার অভিপ্রেত রিলিজ ভার্সনের অধীনে লোকেশন বেছে নিয়ে C/C++ সোর্স কোড খুঁজে পেতে পারেন।

Jetpack লাইব্রেরি ব্যবহার করে ইন্টিগ্রেট করার নির্দেশাবলীর জন্য, GameActivity ব্যবহার করা শুরু করুন দেখুন।

AOSP সোর্স কোডের কন্টেন্ট

AOSP-তে সবসময় সবচেয়ে সাম্প্রতিক সোর্স কোড থাকে। নিজের রিলিজ তৈরি করতে অথবা আপনার বিল্ড এনভায়রনমেন্টে সরাসরি সোর্স ইন্টিগ্রেট করতে, বিল্ড সংক্রান্ত নির্দেশাবলী অনুসরণ করুন। C/C++ সোর্স কোড Jetpack লাইব্রেরির মতো একই ধরনের ফাইল স্ট্রাকচারে সেভ করা হয়।

ইন্টিগ্রেশন গাইড

আপনার অ্যাপ্লিকেশনে GameActivity ইন্টিগ্রেট করতে এইসব নির্দেশাবলী অনুসরণ করুন:

অতিরিক্ত রিসোর্স

GameActivity সম্পর্কে আরও জানতে, নিম্নলিখিত বিষয়গুলি দেখুন:

মতামত

GameActivity-তে সমস্যা সম্পর্কে অভিযোগ জানাতে বা নতুন ফিচারের অনুরোধ করতে, GameActivity সমস্যা ট্র্যাকার ব্যবহার করুন।