সি ++ এ অ্যান্ড্রয়েড গেমের বিকাশ


26

সুতরাং প্রাথমিকভাবে সি / সি ++ বিকাশকারী হিসাবে আমি সবসময়ই ভেবেছিলাম যে আমার জন্য মোবাইল গেম বিকাশের একমাত্র বিকল্পটি আইওএস ব্যবহার করা ছিল যা সি / সি ++ (এবং উদ্দেশ্য সি হ্রাস করার অনুমতি দেয়)।

যদিও আমি একটি বন্ধুর কাছ থেকে শুনেছি, অ্যান্ড্রয়েডের একটি নেটিভ বিকাশ টুলকিট রয়েছে যা সি ++ কোড অ্যান্ড্রয়েডে কাজ করতে দেয়।

কেউ কি এটি ব্যবহার করেছেন এবং যদি তাই হয় তবে আপনি এটি কীভাবে খুঁজে পাবেন? আমি বলতে চাইছি, এটি কি আইওএসের মতো "কেবলমাত্র কাজ করবে", বা আরও বিভিন্ন ধরণের অ্যান্ড্রয়েড ডিভাইস উপলব্ধ থাকার কারণে আরও বেশি বিবেচ্য বিষয়গুলির যত্ন নেওয়া দরকার?

উত্তর:


26

অ্যান্ড্রয়েড API গুলি জাভা। ২০১০ সাল থেকে গুগল সি / সি ++ বিকাশকারীদের জন্য এনডিকে (একটি এসডিকে) সরবরাহ করে।

এনডিকে দুটি উপায় সরবরাহ করে:

  • অ্যান্ড্রয়েড 1.5 ডিভাইসের জন্য, আপনি একটি এল্ফ লাইব্রেরি লোড করতে পারেন এবং এটি JNI ব্রিজের মাধ্যমে জাভা অ্যাপ্লিকেশন থেকে ব্যবহার করতে পারেন
  • অ্যান্ড্রয়েড ২.৩ ডিভাইসের জন্য, আপনি ফুলস্ক্রিন অ্যাপ্লিকেশনটির জন্য জাভা ক্রিয়াকলাপটি বাইপাস করতে একটি নেটিভএকটিভিটি ব্যবহার করতে পারেন।

এনডিকে কয়েকটি সি / সি ++ এপিআই সরবরাহ করে:

  • বায়োনিকস নামে একটি সিউডো লিবিসি: অনেকগুলি ক্রিয়াকলাপ উপলভ্য নয়
  • একটি pthread গ্রন্থাগার
  • ওপেনজিএল ইএস 1.x (> অ্যান্ড্রয়েড 1.5) এবং ওপেনজিএল ইএস 2.x (অ্যান্ড্রয়েড 2.0)
  • ওপেনএসএল (অ্যান্ড্রয়েড ২.৩ এ সীমাবদ্ধ সমর্থন)

তবে অনেকগুলি এপিআই কেবল জাভা (জেএনআই এর মাধ্যমেও উপলব্ধ)।

সি ++ বিকাশকারীদের জন্য এনডিকে 5 সংস্করণটি প্রথম ব্যবহারযোগ্য, কারণ এটি অফার করে:

  • RTTI
  • ব্যতিক্রম সমর্থন করে
  • STLport
  • মাল্টি-থ্রেডেড প্রোগ্রামগুলির জন্য জিডিবি সমর্থন

সবচেয়ে বেদনাদায়ক অপারেশনটি অ্যান্ড্রয়েড ডিভাইসগুলিতে ডিবাগ করা। সুতরাং আমি ডেস্কটপ প্ল্যাটফর্ম, পরবর্তী আইওএস প্ল্যাটফর্ম (সিমুলেটারে) এবং শেষ (অ্যান্ড্রয়েড) এ প্রথম ডিবাগ করতে আমার নিজস্ব মাল্টি-প্ল্যাটফর্ম কাঠামো (ওএস এক্স, উইন্ডোজ, লিনাক্স, আইওএস এবং অ্যান্ড্রয়েড) বিকাশ করি।

অ্যান্ড্রয়েড এমুলেটর (কোনও সিমুলেটর নয়) এর একটি খারাপ পারফরম্যান্স রয়েছে এবং ওপেনজিএল ইএস 2.x অনুকরণ করতে পারে না। আমি বাস্তব ডিভাইস বিকাশ করার পরামর্শ দিই।

আপনি অনেক দরকারী তথ্য পেতে পারেন:


"ইনপুট কোড" লিঙ্কটি এখন ভেঙে গেছে।
Josh1billion

1
স্থির হয়েছে: এলিসমার্কভকে আইওপিক্সেলে পরিবর্তন করুন
এলিস

9

আমি অ্যান্ড্রয়েডে দুটি এসডিএল + ওপেনজিএল গেমগুলি পোর্ট করতে সফলভাবে অ্যান্ড্রয়েড এনডিকে ব্যবহার করেছি এবং এটি আশ্চর্যরকমভাবে সহজ বলে মনে করেছি। আমার কাছে 200-লাইনের জাভা র‌্যাপার রয়েছে যা জিএল প্রসঙ্গটি তৈরি করে এবং সি ++ কোডটি কল করার জন্য ইনপুট, শব্দ এবং চিত্র লোডিংয়ের মতো ইউটিলিটি ক্লাস সরবরাহ করে। এনডিকে "সান-অ্যাঞ্জেলেস" স্যাম্পল প্রোগ্রামটি একটি দুর্দান্ত সূচনা পয়েন্ট।

যাইহোক, জাভা-র লাইন ছাড়াই সি / সি ++ প্রোগ্রামগুলি তৈরি করা সম্ভব, তবে আমি সময়ে সময়ে জেভিএমকে কল করে কিছু ওএস-স্তরের পদ্ধতি অ্যাক্সেস করতে সুবিধাজনক বলে মনে করি।

আমি মনে করি যদি আপনার গেমটি ইতিমধ্যে লিনাক্সে কম্পাইল করে তবে আপনি ঘরে বসে অনুভব করবেন। আমার বর্তমান প্রকল্পের 100+ ফাইলের মধ্যে কেবল 4 #ifdef ANDROID_NDKটিরই নির্দেশিকা রয়েছে (চিত্র এবং শব্দ সম্পর্কিত ক্লাস)।

প্রকৃতপক্ষে গেমের পোর্টিংয়ে ব্যয় করা বেশিরভাগ সময় ছিল একটি পরিচিত এমুলেটর বাগের কারণে যা আমি জানতাম না।


এর আগে আমি অ্যান্ড্রয়েড এমুলেটরটিতে আমার ওপেনগেল গেমটি সংকলন / বিল্ড / স্থাপনের সহজ পাইপলাইন পাওয়ার চেষ্টা করে (হতাশাব্যঞ্জক) হয়েছি। আপনি কি আমাকে কোনও উত্স বা কিছু ব্যবহার করতে পারেন যা আমি ব্যবহার করতে পারি? (আপনার যদি সেই ইউটিলিটি ক্লাসের ওপেন সোর্স আছে কিনা তা আমি জানি না, তবে আপনি যদি করেন তবে আমি সেগুলি দেখতে আগ্রহী হব)) ধন্যবাদ
ব্রেইনডেএক্সটার

1
@ ব্রিনিডিএক্সটার: আমি কমান্ডলাইন ছেলে যিনি অটটুলগুলি উপভোগ করি, তাই আমি নিশ্চিত না যে আমি আপনার পক্ষে খুব সহায়ক হব, তবে আমার পাইপলাইনটি নীচে রয়েছে: নিশ্চিত ANDROID_NDK_ROOTকরা হয়েছে যে এটি $PATH(একসাথে [sdk_location]/toolsএবং সাথে [sdl_location]/platform-tools) রয়েছে; প্রকল্প ডিরেক্টরিতে যান; এনডিকে কোড ব্যবহার করে সংকলন করুন ndk-build; জাভা কোডটি সংকলন করে প্যাকেজটি ব্যবহার করে তৈরি করুন ant compile; ব্যবহার করে এমুলেটর বা সংযুক্ত ডিভাইসে আপলোড করুন ant install। ইঞ্জিন
খোলার

লিঙ্কের জন্য ধন্যবাদ! আমি আপনার ব্লগে নজর রাখব।
brainydexter

4

অ্যান্ড্রয়েড অ্যান্ড্রয়েড এনডিকে মাধ্যমে 1.5 সংস্করণ থেকে দেশীয় অ্যাপ্লিকেশনগুলিকে সমর্থন করেছে , যা আপনার টার্গেট শ্রোতাদের খুব ভালভাবে কভার করা উচিত। আপনার এখনও একটি সাধারণ অ্যান্ড্রয়েড জাভা অ্যাপ্লিকেশন দরকার যা আপনার আবেদনের নেটিভ দিকটি জেএনআই এর মাধ্যমে লোড করে এবং এগিয়ে যায় যেমন ইনপুট এবং কল রেন্ডার করে।

এনডিকে বিভিন্ন সংস্করণ রয়েছে, তবে আপনি সর্বশেষতম এনডিকে ব্যবহার করতে পারেন এবং আপনি যে টার্গেট এপিআই সমর্থন করতে চান তা নির্বাচন করতে পারেন। অ্যান্ড্রয়েড সংস্করণ ২.৩ যেহেতু আপনি নেটিভ পক্ষ থেকে আরও অনেক কিছু করতে পারেন এবং জাভা কোডের প্রয়োজন কম, তবে ২.৩ এর জন্য ডিভাইস সমর্থন বর্তমানে খুব সীমাবদ্ধ।

নেটিভ অ্যান্ড্রয়েড সি / সি ++ বিকাশ কমপক্ষে ফুলস্ক্রিন গেমসের জন্য একটি কার্যকরী সমাধান এবং বিদ্যমান সি / সি ++ ওপেনএল ইএস অ্যাপ্লিকেশনগুলি বন্দর করার জন্য প্রয়োজনীয় প্রচেষ্টা যথেষ্ট ছোট।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.