অ্যান্ড্রয়েড গেম ডেভেলপমেন্ট এক্সটেনশনের নমুনাগুলি প্রদর্শন করে যে কীভাবে এক্সটেনশনের মূল বৈশিষ্ট্যগুলি ব্যবহার করতে হয়৷ এই বিষয় নমুনা এবং সেগুলি চালানোর জন্য প্রয়োজনীয় সেটিংস বর্ণনা করে৷
নিম্নলিখিত নমুনা ডাউনলোড পৃষ্ঠায় উপলব্ধ:
- HelloJNI: একটি পরিচায়ক প্রকল্প।
- অন্তহীন-টানেল: একটি Android শুধুমাত্র প্রকল্প।
- টিপট: উইন্ডোজ এবং অ্যান্ড্রয়েডের জন্য একটি ক্রস-প্ল্যাটফর্ম প্রকল্প।
- এসেম্বলি কোড-লিঙ্ক-অবজেক্টস: একটি টেমপ্লেট প্রজেক্ট যাতে অ্যাসেম্বলি সোর্স কোড থাকে।
আপনি শুরু করার আগে
অ্যান্ড্রয়েড গেম ডেভেলপমেন্ট এক্সটেনশন এবং নমুনা ইনস্টল করুন। বিস্তারিত জানার জন্য কুইকস্টার্ট দেখুন। টপিকটি কীভাবে একটি নমুনা তৈরি এবং চালাতে হয় তা বর্ণনা করে এবং উদাহরণ হিসাবে Teapot নমুনার Android সংস্করণ ব্যবহার করে।
প্রজেক্ট কনফিগারেশন গাইড বর্ণনা করে যে কিভাবে একটি প্রজেক্টের জন্য সেটিংস কনফিগার করতে হয় যা এক্সটেনশন ব্যবহার করে, যেমন একটি Android প্ল্যাটফর্ম এবং APK যোগ করা।
হ্যালো জেএনআই
HelloJNI নমুনা হল একটি সাধারণ প্রকল্প যা একটি অ্যাপ উইন্ডোতে "Hello From JNI" বার্তা প্রদর্শন করে। প্রজেক্টটি উইন্ডোজ এবং অ্যান্ড্রয়েডের জন্য সোর্স কোডের একটি ভিন্ন সেট ব্যবহার করে।
- অ্যান্ড্রয়েড সোর্স কোড এবং গ্রেডল বিল্ড স্ক্রিপ্ট ডিরেক্টরি: HelloJNI\AndroidPackaging
- উইন্ডোজ সোর্স কোড এবং ভিজ্যুয়াল স্টুডিও প্রজেক্ট ডিরেক্টরি: HelloJNI
আপনি যখন প্রজেক্ট তৈরি করেন, ভিজ্যুয়াল স্টুডিও নিম্নলিখিত সেটিংস অ্যাপ-লেভেল build.gradle
ফাইলে পাস করে। আপনি আপনার Gradle বিল্ড স্ক্রিপ্ট পরিবর্তন করে এই সেটিংস পরিবর্তন করতে পারেন।
-
MSBUILD_NDK_VERSION
-
MSBUILD_MIN_SDK_VERSION
-
MSBUILD_JNI_LIBS_SRC_DIR
-
MSBUILD_ANDROID_OUTPUT_APK_NAME
-
MSBUILD_ANDROID_GRADLE_BUILD_OUTPUT_DIR
নমুনা সেট আপ এবং চালানোর জন্য:
- ভিজ্যুয়াল স্টুডিওতে, HelloJNI নমুনা খুলুন এবং তৈরি করুন।
- একটি Android arm64-v8a প্ল্যাটফর্ম যোগ করুন। আরও তথ্যের জন্য, একটি অ্যান্ড্রয়েড প্ল্যাটফর্ম যোগ করা দেখুন।
- নতুন প্ল্যাটফর্মে একটি Android APK আইটেম যোগ করুন ।
- প্রকল্পটি কম্পাইল করুন।
- নিম্নলিখিত Android প্ল্যাটফর্মগুলি যোগ করুন এবং তারপরে তাদের প্রতিটিতে একটি Android APK আইটেম যুক্ত করুন: Android-armeabi-v7a , Android-x86 , এবং Android-x86_64 ।
- নমুনা তৈরি করুন এবং চালান ।
অন্তহীন-টানেল
এন্ডলেস-টানেল নমুনা হল একটি অ্যান্ড্রয়েড গেম যেখানে খেলোয়াড় একটি টানেলের শেষ প্রান্তে পৌঁছানোর চেষ্টা করার সময় সাদা কিউব সংগ্রহ করে। এটি Github-এ Android NDK রেপোতে একটি OpenGL নমুনা থেকে পোর্ট করা হয়েছিল। নমুনা গেমটির একটি উইন্ডোজ সংস্করণ প্রদান করে না।
নমুনাটির ইতিমধ্যেই সেটিংস এবং অ্যান্ড্রয়েড প্ল্যাফর্মগুলি কনফিগার করা আছে, যাতে আপনি কোনও পরিবর্তন ছাড়াই ভিজ্যুয়াল স্টুডিওতে প্রকল্পটি তৈরি এবং চালাতে পারেন৷ আপনি যখন সমাধানটি খুলবেন, তখন সমাধান এক্সপ্লোরার এই মডিউলগুলি প্রদর্শন করে:
- endless-tunnel: অ্যাপ্লিকেশন মডিউল যা গেমের যুক্তি প্রদর্শন করে।
- glm: OpenGL Math repo- এর একটি স্ন্যাপশট যা একটি স্ট্যাটিক লাইব্রেরি হিসেবে তৈরি করা হয়েছে।
- নেটিভ_অ্যাপ_গ্লু: একটি NDK র্যাপার যা NativeActivity অবজেক্টের সাথে যোগাযোগ করে।
চাপানি
Teapot নমুনা একটি ক্লাসিক টিপট প্রদর্শন করে যা OpenGL ES দিয়ে রেন্ডার করা হয় এবং নিম্নলিখিত বৈশিষ্ট্যগুলি প্রদর্শন করতে Android গেম ডেভেলপমেন্ট এক্সটেনশনে পোর্ট করা হয়:
- ক্রস প্ল্যাটফর্ম প্রজেক্ট ডেভেলপমেন্ট: আপনি Windows এবং Android এর জন্য Teapot নমুনা তৈরি করতে পারেন।
- কাস্টম অ্যান্ড্রয়েড প্যাকেজিং ব্যবহার: গ্রেডল বিল্ড স্ক্রিপ্টগুলি নমুনার রুট ডিরেক্টরিতে সরানো হয়েছিল, যেখানে
Teapot.sln
ফাইলটি অবস্থিত। - কাস্টম অ্যান্ড্রয়েড কনফিগারেশন যা দেখায় কিভাবে অ্যাড্রেস স্যানিটাইজার (ASan) এবং হার্ডওয়্যার অ্যাড্রেস স্যানিটাইজার (HWAsan) ব্যবহার করতে হয়।
টিপট নমুনা বাস্তবায়ন একাধিক অংশে বিভক্ত, যা বড় ক্রস প্ল্যাটফর্ম অ্যাপ্লিকেশন এবং গেমগুলির জন্য সাধারণ:
-
GameApplication
মডিউল: ব্যবহারকারীর অ্যাকশন এবং অ্যাপ্লিকেশানের অবস্থা সংজ্ঞায়িত করে, যেমন একজন ব্যবহারকারী চাপানি ঘোরানো বা অ্যাপ্লিকেশন পরিসংখ্যান আপডেট করা। -
GameEngine
মডিউল: মূল রেন্ডারিং মডিউল প্রয়োগ করে।
নমুনা সেট আপ করতে এবং এটি অ্যান্ড্রয়েডে চালাতে, কুইকস্টার্ট দেখুন। নমুনা সেট আপ করতে এবং উইন্ডোজে এটি চালাতে:
- GLEW ইনস্টল করুন:
- ডাউনলোড করুন এবং GLEW আনজিপ করুন।
-
$your-glew-directory\bin\Release\x64
থেকে%SystemRoot%\system32
এ বাইনারি ফাইলগুলি কপি করুন।
- ফ্রিগ্লুট ইনস্টল করুন:
- ফ্রিগ্লুট ডাউনলোড এবং আনজিপ করুন।
-
$your-freeglut-directory\bin\x86\freeglut.dll
%SystemRoot%\system32
এ কপি করুন।
- Freeglut প্রকল্প নির্ভরতা যোগ করুন:
- ভিজ্যুয়াল স্টুডিওতে
Teapot.sln
খুলুন। - মেনুতে, Debug > x64 > Local Windows Debugger-এ ক্লিক করুন।
- সলিউশন এক্সপ্লোরারে , গেমঅ্যাপ্লিকেশনে রাইট ক্লিক করুন এবং বৈশিষ্ট্য > C/C++ > সাধারণ > অতিরিক্ত অন্তর্ভুক্ত ডিরেক্টরি নির্বাচন করুন।
- পাথে
$your-freeglut-dir\include
যোগ করুন। - ওকে ক্লিক করুন।
- লিঙ্কার > সাধারণ > অতিরিক্ত লাইব্রেরি ডিরেক্টরি নির্বাচন করুন।
- পাথে
$your-freeglut-dir\lib\x64
যোগ করুন। - ওকে ক্লিক করুন।
- লিঙ্কার > সাধারণ > অতিরিক্ত লাইব্রেরি ডিরেক্টরি নির্বাচন করুন।
- পথে
freeglut.lib
যোগ করুন। - ওকে ক্লিক করুন।
- ভিজ্যুয়াল স্টুডিওতে
- GLEW প্রকল্প নির্ভরতা যোগ করুন:
- সলিউশন এক্সপ্লোরার প্যানে, গেমঅ্যাপ্লিকেশনে ডান ক্লিক করুন এবং বৈশিষ্ট্যগুলি > C/C++ > সাধারণ > অতিরিক্ত অন্তর্ভুক্ত ডিরেক্টরি নির্বাচন করুন।
- পাথে
$your-glew-dir\include
যোগ করুন। - ওকে ক্লিক করুন।
- লিঙ্কার > সাধারণ > অতিরিক্ত লাইব্রেরি ডিরেক্টরি নির্বাচন করুন।
- পাথে
$your-glew-dir\lib\Release\x86
যোগ করুন। - ওকে ক্লিক করুন।
- লিঙ্কার > সাধারণ > অতিরিক্ত লাইব্রেরি ডিরেক্টরি নির্বাচন করুন।
- পাথে
glew32.lib
যোগ করুন। - ওকে ক্লিক করুন।
- উইন্ডোজে নমুনা চালান:
- ভিজ্যুয়াল স্টুডিও টুলবারে, স্থানীয় উইন্ডোজ ডিবাগার রান বোতামে ক্লিক করুন।
- নমুনা নিম্নলিখিত হিসাবে দেখতে হবে:
সমাবেশ কোড-লিঙ্ক-বস্তু
এটি একটি টেমপ্লেট প্রকল্প যা প্রদর্শন করে কিভাবে সমাবেশ এবং C/C++ সোর্স কোড থেকে একটি Android নেটিভ লাইব্রেরি তৈরি করা যায়। এগুলি হল প্রধান উপাদান:
-
AssemblyCode-Link-Objects
: C++ এবং অ্যাসেম্বলি সোর্স কোড থেকে তৈরি প্রধান অ্যান্ড্রয়েড নেটিভ লাইব্রেরি। -
StaticLib
: একটি সহায়ক স্ট্যাটিক লাইব্রেরি যাfrom_static_lib_assembly_code_as
ফাংশন রপ্তানি করে।
প্রকল্প একাধিক আর্কিটেকচার সমর্থন করে. প্রতিটি সমর্থিত আর্কিটেকচারের নিজস্ব সোর্স ফাইল রয়েছে যা StaticLib
থেকে এক্সপোর্ট করা ফাংশনগুলিকে বাস্তবায়ন করে। আপনি যে প্ল্যাটফর্মগুলি তৈরি করছেন তার জন্য আপনার কেবলমাত্র সমাবেশ উত্স ফাইলগুলি অন্তর্ভুক্ত করা উচিত। এই প্রকল্পে কাস্টম বিল্ড টুল ব্যবহার করে বিল্ডে অ্যাসেম্বলি ফাইল অন্তর্ভুক্ত রয়েছে।
নমুনা সেট আপ এবং নির্মাণ করতে:
- ভিজ্যুয়াল স্টুডিওতে, যাচাই করুন যে কাস্টম বিল্ড টুলগুলি সমাবেশ ফাইলগুলির জন্য কনফিগার করা হয়েছে:
- সলিউশন এক্সপ্লোরারে , সমাবেশ ফাইলটিতে ডান ক্লিক করুন এবং বৈশিষ্ট্যগুলিতে ক্লিক করুন। এটি ফাইলের জন্য বৈশিষ্ট্য পৃষ্ঠা ডায়ালগ খোলে।
- কনফিগারেশন এবং প্ল্যাটফর্ম নির্বাচন করুন, যেমন Android-arm64-v8a এর জন্য সমস্ত কনফিগারেশন ।
- নিশ্চিত করুন যে General > Exclude from Build No তে সেট করা আছে।
- নিশ্চিত করুন যে সাধারণ > আইটেম টাইপ কাস্টম বিল্ড টুলে সেট করা আছে।
- আবেদন করার জন্য পরিবর্তনগুলি থাকলে প্রয়োগ করুন ক্লিক করুন।
- নিশ্চিত করুন যে কনফিগারেশন প্রপার্টি > কাস্টম বিল্ড টুলস > কমান্ড লাইন :
$(AsToolExe) -o "$(IntDir)%(FileName).o" %(FullPath)
এ সেট করা আছে। এনডিকে প্রতিটি সিপিইউ আর্কিটেকচারের জন্য একটি পৃথক অ্যাসেম্বলার এবং সঠিক অ্যাসেম্বলারের জন্য$(AsToolExe)
মানচিত্র অন্তর্ভুক্ত করে। এই নমুনা x86 এবং x86_64 উভয় Android প্রকল্প তৈরি করতে NDK টুলচেন ব্যবহার করে। আপনি যদি x86_64 অ্যান্ড্রয়েড প্ল্যাটফর্মের জন্য yasm ব্যবহার করতে চান তবে পরিবর্তে$(YasmToolExe)
ব্যবহার করুন। - নিশ্চিত করুন যে কনফিগারেশন প্রপার্টি > কাস্টম বিল্ড টুলস > আউটপুট :
$(IntDir)%(FileName).o
সেট করা আছে। এই স্ট্রিংটি অবশ্যই কমান্ড লাইন সেটিংয়ে অন্তর্ভুক্ত করতে হবে। - নিশ্চিত করুন যে কনফিগারেশন বৈশিষ্ট্য > কাস্টম বিল্ড টুল > লিঙ্ক অবজেক্ট :
Yes
সেট করা আছে।
উদাহরণস্বরূপ, Android-arm64-v8a সেটিংস নিম্নলিখিত স্ক্রিনশটের মতো দেখতে হবে:
- প্রকল্পটি তৈরি করুন। এটি
libAssmeblyCodeLinkObjects.so
ফাইল তৈরি করে:-
AssemblyCode-Link-Objects.sln
ফাইলটি খুলুন। - মেনুতে, Build > Build Solution-এ ক্লিক করুন।
-
- অ্যান্ড্রয়েড লাইব্রেরিতে ফাংশনগুলি সঠিকভাবে রপ্তানি হয়েছে তা নিশ্চিত করতে, nm.exe NDK টুলটি ব্যবহার করুন:
- কমান্ড লাইনে, নমুনা ডিরেক্টরিতে যান।
- আপনার বিল্ড দ্বারা তৈরি করা Android লাইব্রেরি অবস্থানে যান৷ ডিফল্ট অবস্থান
$sample_dir\$solution_configuration\$solution_platform\$platform
এবং$sample_dir\Debug\Android-arm64-v8a\arm64-v8a
arm64-v8a প্ল্যাটফর্মের মতো। - রপ্তানি করা প্রতীক বিভাগে নিম্নলিখিত কমান্ডটি চালানোর মাধ্যমে ফাংশন রয়েছে তা যাচাই করুন:
…\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