আসুন Android এর জন্য একটি সহজ গেম তৈরি করি। কীভাবে স্ক্র্যাচ থেকে অ্যান্ড্রয়েডে একটি গেম তৈরি করবেন - গেম বিকাশের মূল বিষয়গুলি আয়ত্ত করা

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

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

  1. আইডিয়া বা স্ক্রিপ্ট।
  2. ইচ্ছা এবং ধৈর্য।
  3. খেলা নকশাকার।

এবং যদি সাফল্যের প্রথম দুটি উপাদানের সাথে সবকিছু কম-বেশি পরিষ্কার হয়, তবে আমাদের আরও বিশদভাবে তৃতীয় উপাদানটিতে থাকতে হবে।

গেম বিল্ডার কি

আমরা এমন একটি প্রোগ্রাম সম্পর্কে কথা বলছি যা গেমের বিকাশকে উল্লেখযোগ্যভাবে সহজ করে তোলে, যাদের প্রোগ্রামিং দক্ষতা নেই তাদের কাছে এটি অ্যাক্সেসযোগ্য করে তোলে। গেম বিল্ডার একটি ইন্টিগ্রেটেড ডেভেলপমেন্ট এনভায়রনমেন্ট, একটি গেম ইঞ্জিন এবং একটি লেভেল এডিটরকে একত্রিত করে যা ভিজ্যুয়াল এডিটর হিসেবে কাজ করে ( WYSIWYG- ইংরেজি এর সংক্ষিপ্ত রূপ "আপনি যা দেখেন তাই আপনি পান")।

কিছু ডিজাইনার জেনার দ্বারা সীমাবদ্ধ হতে পারে (উদাহরণস্বরূপ, আরপিজি, আর্কেড, অনুসন্ধান)। অন্যরা, বিভিন্ন ঘরানার গেমগুলি ডিজাইন করার সুযোগ দেওয়ার সময়, একই সাথে একজন নবজাতক বিকাশকারীর কল্পনাকে 2D গেমগুলিতে সীমাবদ্ধ করে।

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

কীভাবে সঠিক ডিজাইনার চয়ন করবেন

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

এবং দ্বিতীয় গুরুত্বপূর্ণ পয়েন্টএকটি ডিজাইনার নির্বাচন করার সময় - কার্যকারিতা। এখানে আপনাকে আপনার প্রকল্পের দৃশ্যকল্পটি খুব নিখুঁতভাবে বিশ্লেষণ করতে হবে, কারণ গেমটি যত জটিল হবে, এটি তৈরি করতে আপনার আরও বিভিন্ন সরঞ্জামের প্রয়োজন হবে এবং সেই অনুযায়ী, আপনার আরও শক্তিশালী ডিজাইনার প্রয়োজন হবে।

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

সেরা 5 সেরা গেম নির্মাতা

গঠন 2

গেম ডিজাইনারদের রেটিংয়ে এই অ্যাপ্লিকেশনটি ধারাবাহিকভাবে প্রথম স্থানে রয়েছে। Construct 2 ব্যবহার করে, আপনি Android সহ বিভিন্ন প্ল্যাটফর্মের জন্য প্রায় যেকোনো ঘরানার দ্বি-মাত্রিক গেম তৈরি করতে পারেন, সেইসাথে HTML5 সমর্থন করে এমন ব্রাউজারগুলির লক্ষ্যে অ্যানিমেটেড গেম তৈরি করতে পারেন৷

বিপুল সংখ্যক সহায়ক সরঞ্জামগুলি বিবেচনায় নিয়ে, এমনকি নবীন ব্যবহারকারীরা সহজেই প্রোগ্রামটি আয়ত্ত করতে পারে।

কনস্ট্রাক্ট 2 এর সাথে কাজ করার জন্য, একটি লাইসেন্স কেনার দরকার নেই। যাইহোক, মোবাইল প্ল্যাটফর্মের জন্য তৈরি পণ্য কোডিং এবং কার্যকারিতার সম্পূর্ণ পরিসরে অ্যাক্সেস $129-এর জন্য একটি ব্যক্তিগত লাইসেন্স দ্বারা প্রদান করা হবে। যদি গেম তৈরিতে আপনার দক্ষতা সর্বোচ্চ পর্যায়ে পৌঁছে যায়, এবং আপনি ইতিমধ্যেই আপনার $5 হাজারের বেশি প্রকল্প থেকে আয় পেতে শুরু করেছেন, তাহলে আপনাকে ব্যবসার বিকল্পের জন্য কাঁটাচামচ করতে হবে, যার দাম হবে $429৷

এখন, কীভাবে তৈরি করবেন তার কিছু ব্যবহারিক ভিডিও টিউটোরিয়াল দেখুন গেমিং অ্যাপ্লিকেশন Construct 2 ব্যবহার করে:

ক্লিকটিম ফিউশন

ক্লিকটিম ফিউশন হল একটি চমৎকার পূর্ণাঙ্গ গেম ডিজাইনারের আরেকটি উদাহরণ যা একজন শিক্ষানবিসকেও একটি পূর্ণাঙ্গ গেম তৈরি করতে সাহায্য করে। প্রোগ্রামটি তৈরি করা অ্যাপ্লিকেশনগুলিকে HTML5 ফর্ম্যাটে সম্পূর্ণ বিনামূল্যে রপ্তানি করার ক্ষমতা সরবরাহ করে, যার অর্থ ব্রাউজার গেমগুলি প্রকাশ করা সম্ভব হবে এবং উপরন্তু, বিভিন্ন মোবাইল বাজারে প্রকাশের জন্য তাদের রূপান্তর করা সম্ভব হবে, উদাহরণস্বরূপ, গুগল প্লে।

প্রধান বৈশিষ্ট্যগুলির মধ্যে রয়েছে ইন্টারফেসের সরলতা, শেডার প্রভাব এবং হার্ডওয়্যার ত্বরণের জন্য সমর্থন, একটি পূর্ণাঙ্গ ইভেন্ট সম্পাদকের উপস্থিতি এবং অ্যান্ড্রয়েড সহ বিভিন্ন প্ল্যাটফর্মের সাথে সামঞ্জস্যপূর্ণ ফর্ম্যাটে প্রকল্পগুলি সংরক্ষণ করা।

প্রোগ্রামটির প্রদত্ত বিকাশকারী সংস্করণটি রাশিয়ান ফেডারেশনের বাসিন্দাদের জন্য উপলব্ধ নয়, তবে এর লাইসেন্সকৃত ডিস্কটি একই অ্যামাজন থেকে অর্ডার করা যেতে পারে, আপনার ব্যক্তিগত বাজেট গড়ে $100 কমিয়ে দেয়৷ একটি তৃতীয় পক্ষের Russifier মাধ্যমে মেনু Russify করা সম্ভব।

অ্যাপ্লিকেশনটির সাথে কীভাবে কাজ করবেন, একটি বিশেষ ভিডিও কোর্স দেখুন:

স্টেনসিল

স্টেনসিল হ'ল আরেকটি দুর্দান্ত সরঞ্জাম যা আপনাকে কোডগুলির বিশেষ জ্ঞান ছাড়াই সাধারণ 2D কম্পিউটার গেম বিকাশ করতে দেয়, পাশাপাশি সমস্ত জনপ্রিয় প্ল্যাটফর্মের জন্য প্রোগ্রামিং ভাষা। এখানে আপনাকে দৃশ্যকল্প এবং চিত্রগুলির সাথে কাজ করতে হবে, যা ব্লকের আকারে উপস্থাপিত হয় এবং আপনি মাউসের সাহায্যে বস্তু বা বৈশিষ্ট্য টেনে আনতে পারেন, যা খুবই সুবিধাজনক।

প্রোগ্রাম বিকাশকারী ব্লকগুলিতে আপনার নিজের কোড লেখার সুযোগও অফার করে, তবে এর জন্য অবশ্যই প্রোগ্রামিং জ্ঞানের প্রয়োজন হবে।

একটি চমৎকার গ্রাফিক এডিটর সিন ডিজাইনারের উপস্থিতি ব্যবহারকারীকে তাদের কল্পনাশক্তি ব্যবহার করে গেমের দুনিয়া আঁকতে দেয়।

ফাংশনের সর্বোত্তম সেটটি বিভিন্ন ঘরানার উচ্চ-মানের গেম তৈরি করতে সাহায্য করবে, তবে স্টেনসিলের সর্বাধিক টাইলযুক্ত গ্রাফিক্স "শুটার" বা "অ্যাডভেঞ্চার গেমস" এর জন্য প্রাসঙ্গিক হবে।

প্রোগ্রামটি বিনামূল্যে বিতরণ করা হয়, তবে ডেস্কটপ ফরম্যাটে রপ্তানি করার জন্য একটি সাবস্ক্রিপশন প্রয়োজন যার জন্য এক বছরের জন্য $99 খরচ হবে এবং এর জন্য একটি লাইসেন্স মোবাইল গেম- প্রতি বছর $199।

আসুন স্টেনসিলের সাথে কাজ করার একটি ক্র্যাশ কোর্স দেখি:

খেলা প্রস্তুতকারক

প্রোগ্রাম পেইড এবং বিদ্যমান বিনামূল্যে সংস্করণ. বাজেট বিকল্প আপনাকে ডেস্কটপের জন্য উচ্চ মানের 2D গেম তৈরি করতে দেয়। যদিও প্রদত্ত সংস্করণটি উইন্ডোজ, আইওএস এবং অ্যান্ড্রয়েডের জন্য বেশ পরিশীলিত 3D গেম লেখা সম্ভব করে তোলে। আপাতত, আমরা গেমিং শিল্পে নিজেকে কীভাবে উপলব্ধি করতে হয় তা শেখার বিনামূল্যের সুযোগে আগ্রহী, এবং গেম মেকার হল এমন একটি বিকল্প যা আপনাকে কোনও জেনার বেছে নেওয়ার ক্ষেত্রে কোনও বিধিনিষেধ ছাড়াই আপনার নিজের দৃশ্যের সাথে গেম তৈরি করতে দেয়৷

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

গেম মেকার কভার ইংরেজী ভাষা, তাই যাদের এটি সম্পর্কে যথেষ্ট জ্ঞান নেই তাদের ক্র্যাক ফাইলটি ডাউনলোড করতে হবে।

এই প্রোগ্রামে আগ্রহীদের জন্য, আমরা প্রশিক্ষণ ভিডিও দেখার পরামর্শ দিই:

ঐক্য 3D

ইউনিটি 3D সম্ভবত সেরা যা একটি উচ্চ-মানের 3D প্রকল্প তৈরি করার জন্য দেওয়া যেতে পারে। প্রোগ্রামটি সম্পূর্ণরূপে সমাপ্ত মডেল, সেইসাথে টেক্সচার এবং স্ক্রিপ্টগুলিকে একীভূত করে। উপরন্তু, এটি আপনার নিজস্ব বিষয়বস্তু যোগ করা সম্ভব - শব্দ, ছবি এবং ভিডিও.

Unity-এর সাহায্যে তৈরি গেমগুলি iOS বা Android-এর মোবাইল ডিভাইস থেকে SMART TV টেলিভিশন রিসিভার সব জনপ্রিয় প্ল্যাটফর্মের সাথে সামঞ্জস্যপূর্ণ।

প্রোগ্রামটি উচ্চ সংকলন গতি, একটি সহজে ব্যবহারযোগ্য ইন্টারফেস এবং একটি নমনীয় এবং বহুমুখী সম্পাদক দ্বারা চিহ্নিত করা হয়।

সব খেলা কর্মএবং চরিত্রের আচরণ একটি কঠিন PhysX পদার্থবিদ্যা কোরের উপর ভিত্তি করে। এই গেম কনস্ট্রাক্টরে তৈরি প্রতিটি বস্তু ইভেন্ট এবং স্ক্রিপ্টগুলির একটি নির্দিষ্ট সংমিশ্রণকে প্রতিনিধিত্ব করে যা স্বাধীনভাবে বিকাশকারী দ্বারা নিয়ন্ত্রিত হয়।

এটি বোঝা গুরুত্বপূর্ণ যে যদিও প্রোগ্রামটি নতুনদের জন্য ডিজাইন করা একটি গেম ডিজাইনার হিসাবে অবস্থান করা হয়েছে, তবুও এই অ্যাপ্লিকেশনটির সাথে কাজ করার জন্য একটি নির্দিষ্ট স্তরের জ্ঞানের প্রয়োজন হবে৷ ঠিক আছে, 3D গ্রাফিক্সের সাথে কাজ করার জন্য একটি হার্ডওয়্যার ভিডিও কার্ড দিয়ে সজ্জিত একটি মোটামুটি আধুনিক কম্পিউটার থাকা প্রয়োজন।

ইউনিটি 3D ব্যবহার করে গেম তৈরির ক্লাসের একটি সিরিজ:

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

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

গেম তৈরির অ্যাপ্লিকেশন

সবচেয়ে সহজ এবং সবচেয়ে অ্যাক্সেসযোগ্য উপায় হল গুগল প্লেতে গেম তৈরির জন্য একটি অ্যাপ্লিকেশন ডাউনলোড করা হ্যাঁ, গেমটি সহজ হবে, তবে আপনাকে কোথাও শুরু করতে হবে।

1. আপনার খেলা আঁকা

একটি সুবিধাজনক প্রোগ্রাম যা প্রত্যেককে কয়েকটি সহজ ধাপে তাদের নিজস্ব ভিডিও গেম তৈরি করার সুযোগ দেয়।

  1. চারটি ভিন্ন রঙ (কালো, নীল, সবুজ এবং লাল) ব্যবহার করে কাগজের টুকরোতে আপনার গেমের জগত আঁকুন।
  2. আপনার অঙ্কনের একটি ছবি তুলতে অ্যাপটি ব্যবহার করুন।
  3. 10 সেকেন্ড অপেক্ষা করুন DYG-এর জন্য অঙ্কনটিকে একটি খেলায় পরিণত করতে।
  4. এর চরিত্র নিয়ন্ত্রণ করে আপনার গেম খেলুন।
  5. অন্যান্য ব্যবহারকারীদের সাথে আপনার সৃজনশীলতা শেয়ার করুন.

গুগল প্লেতে ডাউনলোড করুন

2. অ্যাপার (আপনার নিজস্ব প্রোগ্রাম তৈরি করুন)

Apper-এর মাধ্যমে আপনি 5টি সহজ ধাপে আপনার নিজস্ব অ্যাপ তৈরি এবং প্রকাশ করতে পারেন। প্রোগ্রামটি ব্যবহার করা খুব সহজ এবং প্রোগ্রামিং জ্ঞানের প্রয়োজন নেই।

অ্যাপ্লিকেশন বিনামূল্যে, কিন্তু আপনার প্রকল্প প্রকাশ করতে অ্যাপ স্টোরঅথবা Google Play, আপনাকে একটি অর্থপ্রদানের সদস্যতা কিনতে হবে।

গুগল প্লেতে ডাউনলোড করুন

3. AIDE- Android Java C++ এর জন্য IDE

আপনার সরাসরি বাস্তব অ্যান্ড্রয়েড অ্যাপ্লিকেশন তৈরি করার জন্য একটি সমন্বিত উন্নয়ন পরিবেশ (IDE) অ্যান্ড্রয়েড ডিভাইস. একজন বিশেষজ্ঞ হওয়ার জন্য পাঠগুলি অনুসরণ করুন এবং এই দক্ষতাগুলি আপনার নিজের অ্যাপ্লিকেশনগুলিতে প্রয়োগ করুন৷

প্রধান কার্যাবলী:

  • Eclipse প্রকল্পের সাথে সামঞ্জস্যপূর্ণ।
  • Java/XML এবং Android SDK।
  • C/C++ এবং Android NDK।
  • জাভা কনসোল অ্যাপ্লিকেশন।
  • ড্রপবক্সের সাথে সিঙ্ক্রোনাইজেশন।

গুগল প্লেতে ডাউনলোড করুন

4. Createria 2 আপনার গেমগুলি তৈরি করুন

এই গেমটি দিয়ে আপনি আপনার নিজের তৈরি করতে পারেন উত্তেজনাপূর্ণ গেমমিনিটের মধ্যে, বন্ধুদের সাথে শেয়ার করুন এবং বিখ্যাত হয়ে উঠুন। প্রোগ্রামিং দক্ষতা ছাড়া, আপনার যা প্রয়োজন তা হল আপনার কল্পনা।

প্রধান বৈশিষ্ট্য:

গুগল প্লেতে ডাউনলোড করুন

5. STRUCKD - ​​3D গেম বিল্ডার

নিজের মধ্যে ঐক্যবদ্ধ করে গেমিং সম্প্রদায়এবং একটি উন্নত প্ল্যাটফর্ম যেখানে আপনি একটি অনন্য 3D বিশ্ব তৈরি করতে পারেন এবং আপনার সৃষ্টিগুলি অন্য লোকেদের সাথে ভাগ করতে পারেন৷ রেসিং গেম থেকে শুরু করে বেছে নেওয়ার শৈলী রয়েছে৷ টাওয়ার ডিফেন্সএবং অ্যাকশন পাজল।

  • ড্র্যাগ-এন্ড-ড্রপ সহ 3D গেম কনস্ট্রাক্টর।
  • অন্যান্য ব্যবহারকারীদের দ্বারা তৈরি কয়েক হাজার গেমের একটি সংগ্রহ।
  • গেমিং সম্প্রদায়: রেকর্ড সেট করুন এবং স্ট্যান্ডিংয়ে উঠুন।

গুগল প্লেতে ডাউনলোড করুন

6. স্কেচ নেশন তৈরি করুন

তৈরি করার জন্য আরেকটি ভাল প্ল্যাটফর্ম অনলাইন খেলা. এখন আপনি বাস্তব রিয়েল-টাইম মাল্টিপ্লেয়ার গেম তৈরি করতে এবং আপনার বন্ধুদের সাথে খেলতে পারেন৷ অ্যাপ্লিকেশনটি আপনাকে বিভিন্ন ঘরানার ব্যবহার করে সহজ থেকে আরও উন্নত গেম তৈরি করতে দেয়, পরিষেবাটিকে শুধুমাত্র শিশুদের জন্যই নয়, ছাত্রদের এবং এমনকি শিক্ষকদের জন্যও উপযুক্ত করে তোলে।

গুগল প্লেতে ডাউনলোড করুন

অনলাইন গেম এবং অ্যাপ্লিকেশন ডিজাইনার

আপনি যদি Google Play এবং AppStore-এ আরও প্রকাশনা সহ গেম এবং অ্যাপ্লিকেশন তৈরির জন্য আরও গুরুতর প্ল্যাটফর্ম চেষ্টা করার সিদ্ধান্ত নেন, তাহলে আমরা নীচে উপস্থাপিত PC-এর জন্য যেকোনো অনলাইন কনস্ট্রাক্টর চেষ্টা করার পরামর্শ দিই।

সেরা অনলাইন পরিষেবাগুলির তালিকা যেখানে আপনি মোবাইল ডিভাইসের জন্য গেম এবং অ্যাপ্লিকেশন তৈরি করতে পারেন:

  1. www.appsgeyser.com – সম্ভবত আজকের সেরা অনলাইন নির্মাতা। Appsgeyser আপনাকে বিনামূল্যে সীমাহীন পরিমাণে বিভিন্ন ধরণের গেম এবং অ্যাপ্লিকেশন তৈরি করতে দেয়। আপনার সফ্টওয়্যার পরীক্ষা এবং পরীক্ষা করার পরে, আপনি এটি অবাধে এবং কোনো সীমাবদ্ধতা ছাড়াই প্রকাশ করতে পারেন। এছাড়াও, আপনি বিজ্ঞাপন থেকে আয়ের 50% পাবেন।
  2. www.unity3d.com হল বিশ্বের বৃহত্তম সৃজনশীল সম্প্রদায়গুলির মধ্যে একটি - এবং গেম বিকাশের জন্য এক নম্বর প্ল্যাটফর্ম৷ ইউনিটির মাধ্যমে আপনি যেকোনো 2D বা 3D গেম তৈরি করতে পারবেন। উন্নয়ন প্রক্রিয়া সহজ হবে, এবং ফলাফল গভীরভাবে অপ্টিমাইজ করা এবং সুন্দর হবে.
  3. www.c2community.ru – অনায়াসে গেম তৈরি করুন! Construct 2 হল Android এর জন্য একটি গেম নির্মাতা যা আপনাকে কোডিং বা স্ক্রিপ্টিং ছাড়াই আশ্চর্যজনক গেম তৈরি করতে দেয়!
  4. www.russia.ibuildapp.com – আপনার ব্যবসার জন্য অর্থপ্রদানকারী অ্যাপ্লিকেশন নির্মাতা। আপনাকে বিনামূল্যে Android বা IOS (iPhone এবং iPad) এর জন্য অ্যাপ্লিকেশন তৈরি করতে দেয়৷ ডিজাইনার ব্যবহার করে তৈরি করা অ্যাপ্লিকেশনগুলি শুধুমাত্র অ্যানিমেটেড নয়, ভিডিও এবং শব্দের সাথে সম্পূরকও হতে পারে।
  5. www.mobiumapps.com – আইওএস (অ্যাপল) এবং অ্যান্ড্রয়েড (গুগল) ফোনের জন্য অনলাইনে একটি মোবাইল অ্যাপ্লিকেশন তৈরির অর্থপ্রদান।
  6. www.viziapps.com – 3টি দ্রুত ধাপে একটি মোবাইল অ্যাপ্লিকেশন তৈরি করুন এবং চালু করুন।
  7. www.appmakr.com – 20 মিনিটের মধ্যে আপনার নিজের অ্যাপ্লিকেশন তৈরি করুন বা একটি রেডিমেড টেমপ্লেট ব্যবহার করুন।
  8. www.theappbuilder.com – দ্রুত তৈরির জন্য বিনামূল্যে অনলাইন পরিষেবা মোবাইল অ্যাপ্লিকেশনব্যাবসার জন্য।
  9. www.appsmakerstore.com হল কয়েকটি ক্লিকে আপনার নিজস্ব অ্যাপ্লিকেশন তৈরি করার জন্য একটি অনলাইন পরিষেবা৷ বিনামূল্যে আপনার নিজস্ব অ্যাপ্লিকেশন তৈরি করুন, সেগুলি প্রকাশ করুন এবং প্রতি 1000 বার দেখার জন্য বিজ্ঞাপন থেকে অর্থ উপার্জন করুন৷
  10. www.biznessapps.com - ব্যাপক ক্ষমতা সহ ছোট ব্যবসার জন্য একটি অ্যাপ্লিকেশন তৈরি করা।

আপনি কিভাবে আপনার অ্যাপ্লিকেশন তৈরি করতে পরিচালিত? পৃষ্ঠার নীচে একটি মন্তব্য রেখে আপনার মতামত শেয়ার করুন, সম্ভবত আপনার বার্তাটি কার্যকর হবে এবং অন্যান্য ব্যবহারকারীদের তাদের পছন্দ করতে সহায়তা করবে৷

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

আলেকজান্ডার লেডকভ

ধারণা এবং স্থাপত্য

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

এর একটি খেলা পরিস্থিতি অনুকরণ করা যাক. আমাদের চরিত্রটি পর্দার কেন্দ্রে রয়েছে। রোবটরা প্রতি সেকেন্ডের 1/10তম সময়ে তার কাছাকাছি আসে। প্রতি দশম সেকেন্ডে আমরা পর্দা স্পর্শ করা হয়েছে কিনা তাও পরীক্ষা করি। যদি এটি ঘটে, আমরা আমাদের চরিত্রটিকে প্রয়োজনীয় দিকে নিয়ে যাই বা একটি গুলি চালাই। যদি গুলি চালানো হয়, প্রতিটি টিক (এক সেকেন্ডের 1/10) আমরা শত্রুদের সাথে বুলেটের সংঘর্ষ পরীক্ষা করি। যদি বুলেটটি রোবটকে আঘাত করে, তাহলে রোবট এবং বুলেট উভয়ই বিস্ফোরিত হবে, যদি না হয়, রোবট এবং বুলেট নতুন অবস্থানে চলে যায় (রোবটটি প্রতি টিক 5 পিক্সেল চলে, এবং বুলেট 50 পিক্সেল চলে)। রোবট আমাদের নায়ককে ধরেছে কিনা তাও আমরা পরীক্ষা করি। ধরা পড়লে খেলা শেষ হয়।

সহজ ক্ষেত্রে, গেম আর্কিটেকচারটি নিম্নলিখিত মডিউলগুলির আকারে উপস্থাপন করা যেতে পারে, যাকে চক্রাকারে বলা হয়:

  1. নিয়ন্ত্রণ মডিউল. এখানে পর্দা স্পর্শের স্থানাঙ্কগুলি পড়া হয়।
  2. গেম ইঞ্জিন. এখানে আমাদের অবশ্যই গেম অবজেক্টের অবস্থা আপডেট করতে হবে, অর্থাৎ, তাদের নতুন স্থানাঙ্ক গণনা করতে হবে, স্বাস্থ্য, সংঘর্ষ এবং এর মতো পরীক্ষা করতে হবে।
  3. অডিও মডিউল.
  4. গ্রাফিক্স মডিউল. এখানে, বর্তমান অবস্থার উপর ভিত্তি করে, একটি নতুন ফ্রেম গঠিত হয় এবং পর্দায় প্রদর্শিত হয়।

আসুন আমাদের মডিউলগুলি ঘনিষ্ঠভাবে দেখে নেওয়া যাক।

নিয়ন্ত্রণ মডিউল

আমাদের গেমে, ব্যবহারকারী যখন স্ক্রিনের দুটি অংশ স্পর্শ করে তখন বার্তা তৈরি হয়। প্রোগ্রাম অন টাচ ইভেন্টগুলি পর্যবেক্ষণ করে এবং প্রতিটি স্পর্শের স্থানাঙ্ক রেকর্ড করে। যদি স্থানাঙ্কগুলি নিয়ন্ত্রণ এলাকার ভিতরে থাকে, আমরা গেম ইঞ্জিনে উপযুক্ত কমান্ড পাঠাই। উদাহরণস্বরূপ, যদি বৃত্তের পাশে একটি স্পর্শ থাকে তবে আমাদের অবশ্যই আমাদের চরিত্রটিকে যথাযথ দিকে নিয়ে যেতে হবে। যদি অস্ত্র নিয়ন্ত্রণকারী বৃত্ত স্পর্শ করা হয়, আমরা শট ইভেন্ট প্রক্রিয়া করার জন্য ইঞ্জিনে একটি কমান্ড পাঠাই।

গেম ইঞ্জিন

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

কন্ট্রোল মডিউল এবং গেম ইঞ্জিনের মধ্যে মিথস্ক্রিয়া দেখুন। উপরের ছবিটি নিয়ামক বৃত্ত দেখায়। একটি হালকা সবুজ দাগ যোগাযোগের এলাকার প্রতীক। কন্ট্রোল মডিউল গেম ইঞ্জিনে টাচ কোঅর্ডিনেট রিপোর্ট করে (dx এবং dy - বৃত্তের কেন্দ্র থেকে পিক্সেলে দূরত্ব)। এই স্থানাঙ্কগুলির উপর ভিত্তি করে, গেম ইঞ্জিন আমাদের নায়কের গতিবিধির দিক এবং গতি গণনা করে। উদাহরণস্বরূপ, যদি dx>0 হয়, আমাদের অক্ষর ডানদিকে চলে যায়, যদি dy>0 হয় - উপরের দিকে।

অডিও মডিউল

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

গ্রাফিক্স মডিউল

এই মডিউলটি ফোনের স্ক্রিনে গেমের পরিস্থিতি প্রদর্শনের জন্য দায়ী। অ্যান্ড্রয়েডে, স্ক্রিনে একটি চিত্র তৈরি করার বিভিন্ন উপায় রয়েছে। আপনি ভিউ থেকে প্রাপ্ত ক্যানভাসে সরাসরি আঁকতে পারেন, অথবা একটি পৃথক গ্রাফিক্স বাফার ব্যবহার করতে পারেন এবং তারপর এটি ভিউতে পাস করতে পারেন, অথবা আপনি OpenGL লাইব্রেরির ক্ষমতা ব্যবহার করতে পারেন। এটি একটি গেম বিকাশ করার সময় ক্রমাগত FPS পরিমাপ করার জন্য দরকারী - প্রতি সেকেন্ডে ফ্রেমের সংখ্যা যা আপনার গ্রাফিক্স ইঞ্জিন. 30 FPS মান মানে হল এক সেকেন্ডে আমাদের প্রোগ্রাম 30 বার স্ক্রীন আপডেট করতে পারে। সামনের দিকে তাকিয়ে, আমি বলব যে একটি মোবাইল ডিভাইসের জন্য 30 FPS একটি শালীন চিত্রের চেয়ে বেশি।

ভবিষ্যতের অ্যান্ড্রয়েড গেমের জন্য একটি টেমপ্লেট প্রকল্প তৈরি করা হচ্ছে

আমি এখানে বিস্তারিতভাবে প্রক্রিয়া বর্ণনা করব না। অ্যান্ড্রয়েড ইনস্টলেশন SDK এবং Eclipse, গল্পের সুযোগের বাইরে আমি প্রাথমিক ধাপগুলি ছেড়ে দেব অ্যান্ড্রয়েড তৈরি করাপ্রকল্প ইন্টারনেটে এই বিষয়ে প্রচুর পাঠ এবং নিবন্ধ রয়েছে।

সৃষ্টি নতুন প্রকল্প. প্রকল্পের নাম ক্ষেত্রে, লিখুন Droidz. লক্ষ্য প্ল্যাটফর্ম হিসাবে Android 2.2 বা উচ্চতর নির্বাচন করুন৷ প্যাকেজের নামে - " en.mobilab.gamesample"। কার্যকলাপ তৈরি করুন বাক্সটি চেক করতে ভুলবেন না। প্রধান কার্যকলাপের নামের জন্য, লিখুন DroidzActivity.

src/ru.mobilab.gamesample/DroidzActivity.java ফাইলটি খুলুন

android.app.Activity আমদানি করুন;
android.os.Bundle আমদানি করুন;

পাবলিক ক্লাস DroidzActivity কার্যকলাপ প্রসারিত করে (
/** যখন কার্যকলাপটি প্রথম তৈরি করা হয় তখন বলা হয়। */
@অগ্রাহ্য করা
সর্বজনীন শূন্যতা onCreate(বান্ডেল সংরক্ষিত ইনস্ট্যান্সস্টেট) (
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}

onCreate পদ্ধতি বলা হয় যখন অ্যাপ্লিকেশন স্টার্টআপের সময় একটি কার্যকলাপ তৈরি করা হয়। এই পদ্ধতিটি প্রোগ্রামের এন্ট্রি পয়েন্ট হিসাবে বিবেচনা করা যেতে পারে। R.java ক্লাস স্বয়ংক্রিয়ভাবে Eclipse দ্বারা তৈরি হয় এবং এতে সম্পদের লিঙ্ক থাকে। প্রতিবার আপনি Eclipse-এ রিসোর্স পরিবর্তন করলে, R ক্লাস পুনর্নির্মাণ করা হয়।

প্রধান খেলা লুপ

যেকোনো গেমের একটি লুপ থাকতে হবে যা ব্যবহারকারীর কমান্ড রেকর্ড করবে, সেগুলিকে প্রক্রিয়া করবে, গেম অবজেক্টের অবস্থা অনুযায়ী সেগুলি পরিবর্তন করবে, স্ক্রিনে একটি নতুন ফ্রেম প্রদর্শন করবে এবং শব্দ বাজবে৷ আমরা ইতিমধ্যে তৈরি করেছি সহজতম প্রকল্পঅ্যান্ড্রয়েডের জন্য। এখন একটি গেম লুপ বাস্তবায়ন তৈরি করা যাক।

আপনার মনে আছে, অ্যান্ড্রয়েডে সবকিছুই একটি ক্রিয়াকলাপের মধ্যে ঘটে। কার্যকলাপ একটি দৃশ্য তৈরি করে - একটি বস্তু যেখানে সমস্ত মজা হয়। এটির মাধ্যমেই আমরা পর্দার স্পর্শ সম্পর্কে তথ্য পেতে পারি এবং এখানে আমরা পর্দায় একটি ছবি প্রদর্শন করতে পারি।

DroidzActivity.java ফাইলটি ওপেন করা যাক। ক্লাস কনস্ট্রাক্টরে আপনি লাইনটি দেখতে পাবেন

SetContentView(R.layout.main);

এই লাইনটি কার্যকলাপের জন্য বর্তমান ভিউ অবজেক্ট নির্বাচন করে। আসুন একটি নতুন ভিউ অবজেক্ট তৈরি করি। অধিকাংশ একটি সহজ উপায়েএকটি ভিউ পাওয়া - SurfaceView এর উপর ভিত্তি করে আপনার নিজস্ব ক্লাস তৈরি করুন। আমাদের ক্লাসে, আমরা সারফেসহোল্ডার. কলব্যাক ইন্টারফেস প্রয়োগ করি যাতে সারফেস পরিবর্তনের অ্যাক্সেস দ্রুত হয়, যেমন যখন ডিভাইসের অভিযোজন পরিবর্তন হয় তখন এটি ধ্বংস হয়ে যায়।

MainGamePanel.java

প্যাকেজ ru.mobilab.gamesample;






সারফেসহোল্ডার। কলব্যাক(


সুপার(প্রসঙ্গ);
// বিপরীত ফাংশন ধারণকারী হিসাবে এই ক্লাস যোগ করুন
// ইভেন্টগুলির সাথে যোগাযোগ করতে কল করুন
// গেমপ্যানেলকে ফোকাসযোগ্য করুন যাতে এটি বার্তাগুলি পরিচালনা করতে পারে
setFocusable(সত্য);
}

@অগ্রাহ্য করা
}

@অগ্রাহ্য করা
}

@অগ্রাহ্য করা
}

@অগ্রাহ্য করা

}

@অগ্রাহ্য করা
}
}

উপরের তালিকাটি ক্লাস টেমপ্লেটটি দেখায় যা আমাদের বাস্তবায়ন করতে হবে। আসুন কনস্ট্রাক্টরের বিষয়বস্তুগুলি ঘনিষ্ঠভাবে দেখে নেওয়া যাক। লাইন

GetHolder().addCallback(এটি);

পৃষ্ঠের জন্য একটি ইভেন্ট হ্যান্ডলার হিসাবে বর্তমান ক্লাস (MainGamePanel) সেট করে।

সেটফোকাসেবল (সত্য);

এই লাইন আমাদের ক্লাস ফোকাসযোগ্য করে তোলে. এর মানে হল যে এটি ফোকাস পেতে পারে, এবং সেইজন্য ইভেন্ট।

আসুন একটি থ্রেড তৈরি করি যার মধ্যে আমাদের গেম লুপটি বাস্তবায়িত হবে। একটি গেমকে কয়েকটি সমান্তরাল থ্রেডে ভাগ করা আধুনিক গেম ডেভেলপমেন্টে একটি সাধারণ অভ্যাস। আসুন আমাদের থ্রেডের জন্য একটি ক্লাস তৈরি করি: MainThread.java

প্যাকেজ ru.mobilab.gamesample;

পাবলিক ক্লাস মেইনথ্রেড থ্রেড প্রসারিত করে (

//পতাকা ইঙ্গিত করে যে গেমটি চলছে।

ব্যক্তিগত বুলিয়ান চলমান;
পাবলিক ভ্যাড সেট রানিং (বুলিয়ান রানিং) (
this.running = চলমান;
}

@অগ্রাহ্য করা
সর্বজনীন শূন্য রান() (
চলাকালে) (
// গেম অবজেক্টের অবস্থা আপডেট করুন
// স্ক্রিনে গ্রাফিক্স প্রদর্শন করুন
}
}
}

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

আমরা থ্রেড ক্লাস তৈরি করার পরে, আমাদের এটি চালাতে হবে। স্ক্রীন লোড হলে এটি চালাই। এর MainGamePanel ক্লাস পরিবর্তন করা যাক

প্যাকেজ ru.mobilab.gamesample;

android.content.Context আমদানি করুন;
android.graphics.Canvas আমদানি করুন;
android.view.MotionEvent আমদানি করুন;
android.view.SurfaceHolder আমদানি করুন;
android.view.SurfaceView আমদানি করুন;

পাবলিক ক্লাস MainGamePanel SurfaceView ইমপ্লিমেন্ট প্রসারিত করে
সারফেসহোল্ডার। কলব্যাক(

প্রাইভেট মেইন থ্রেড থ্রেড;

পাবলিক মেইনগেমপ্যানেল (প্রসঙ্গ প্রসঙ্গ) (
সুপার(প্রসঙ্গ);
getHolder().addCallback(এটি);

// গেম লুপের জন্য একটি থ্রেড তৈরি করুন
থ্রেড = নতুন মেইন থ্রেড();

সেটফোকাসেবল (সত্য);
}

@অগ্রাহ্য করা
সর্বজনীন অকার্যকর পৃষ্ঠ পরিবর্তিত (সারফেসহোল্ডার ধারক, int বিন্যাস, int প্রস্থ, int উচ্চতা) (
}

@অগ্রাহ্য করা
সর্বজনীন অকার্যকর পৃষ্ঠ তৈরি (সারফেসহোল্ডার ধারক) (
thread.setRunning(সত্য);
thread.start();
}

@অগ্রাহ্য করা
সর্বজনীন অকার্যকর পৃষ্ঠ ধ্বংস (সারফেস হোল্ডার ধারক) (
// থ্রেডটি বন্ধ করে অপেক্ষা করার জন্য একটি কমান্ড পাঠান
// প্রবাহ বন্ধ না হওয়া পর্যন্ত।
বুলিয়ান পুনরায় চেষ্টা = সত্য;
যখন (পুনরায় চেষ্টা করুন) (
চেষ্টা করুন (
thread.join();
পুনরায় চেষ্টা = মিথ্যা;
) ধরা (বিঘ্নিত ব্যতিক্রম ই) (
// আবার থ্রেড বন্ধ করার চেষ্টা করছে
}
}
}

@অগ্রাহ্য করা
পাবলিক বুলিয়ান অন টাচ ইভেন্ট(মোশন ইভেন্ট) (
রিটার্ন super.onTouchEvent(ইভেন্ট);
}

@অগ্রাহ্য করা
সুরক্ষিত শূন্য অন ড্র (ক্যানভাস ক্যানভাস) (
}
}

আমরা একটি থ্রেড বস্তু ঘোষণা

প্রাইভেট মেইন থ্রেড থ্রেড;

এবং কনস্ট্রাক্টরে এটি তৈরি করেছে

থ্রেড = new MainThread();

SurfaceCreated পদ্ধতিতে আমরা চলমান পতাকাটিকে সত্যে সেট করেছি এবং থ্রেড শুরু করেছি। এই সময়ের মধ্যে, থ্রেড বস্তুটি ইতিমধ্যেই সফলভাবে তৈরি করা হয়েছে এবং আমরা ভয় ছাড়াই এটি চালু করতে পারি।

সারফেস বন্ধ করার আগে SurfaceDestroyed পদ্ধতি বলা হয়। এখানে শুধুমাত্র চলমান পতাকা অপসারণ করা যথেষ্ট নয়। আমাদের নিশ্চিত করতে হবে যে স্ট্রীমটি আসলে বন্ধ হয়ে গেছে। আমরা কেবল থ্রেডটি ব্লক করি এবং এটি মারা না যাওয়া পর্যন্ত অপেক্ষা করি।

পর্দার সাথে মিথস্ক্রিয়া যোগ করা হচ্ছে

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

ব্যক্তিগত সারফেসহোল্ডার সারফেস হোল্ডার;
ব্যক্তিগত মেইনগেমপ্যানেল গেমপ্যানেল;

সর্বজনীন মেইনথ্রেড (সারফেসহোল্ডার সারফেসহোল্ডার, মেইনগেমপ্যানেল গেমপ্যানেল) (
সুপার();
this.surfaceHolder = সারফেস হোল্ডার;
this.gamePanel = গেমপ্যানেল;
}

এইভাবে, আমরা কনস্ট্রাক্টর প্যারামিটার থেকে সংশ্লিষ্ট মানগুলি নিয়ে গেমপ্যানেল এবং সারফেসহোল্ডার ভেরিয়েবলগুলিকে সংজ্ঞায়িত করেছি। আমাদের এই মানগুলি মনে রাখতে হবে যাতে আমরা অঙ্কন করার সময় পৃষ্ঠটি লক করতে পারি এবং এটি শুধুমাত্র সারফেসহোল্ডারের মাধ্যমে করা যেতে পারে।

কন্সট্রাক্টরে নতুন ঘোষিত প্যারামিটার যোগ করতে MainGamePanel ক্লাসে লাইন পরিবর্তন করুন

থ্রেড = new MainThread(getHolder(), this);

আমরা বর্তমান হ্যান্ডলার এবং প্যানেলটি নতুন কনস্ট্রাক্টরের কাছে প্রেরণ করি। এটি আমাদের থ্রেড থেকে এটি অ্যাক্সেস করার অনুমতি দেবে। গেমপ্যানেলে আমরা একটি আপডেট পদ্ধতি তৈরি করব এবং এটিকে ফ্লো থেকে স্যুইচ করব, কিন্তু আপাতত আমরা সবকিছু যেমন আছে রেখে দেব।

লগিং

নীচে আমরা অক্জিলিয়ারী কোড লিখব যা লগিং সঞ্চালন করে - আমাদের প্রোগ্রামের অবস্থাকে একটি বিশেষ ফাইলে প্রতিফলিত করে পাঠ্য সহ বিশেষ ডিবাগিং লাইন রেকর্ড করা, যা আপনি তখন দেখতে এবং প্রোগ্রামটিতে কী ঘটছে তা বোঝার চেষ্টা করতে পারেন। মেইন থ্রেড ক্লাসে TAG ধ্রুবক যোগ করা যাক। প্রতিটি ক্লাসের TAG নামক নিজস্ব ধ্রুবক থাকবে, যাতে সংশ্লিষ্ট শ্রেণীর নাম থাকবে। এই লাইব্রেরির মধ্যে আমরা অ্যান্ড্রয়েড লগিং ফ্রেমওয়ার্ক ব্যবহার করব, প্রতিটি লগে দুটি প্যারামিটার থাকতে হবে। প্রথম প্যারামিটারটি অবস্থান নির্ধারণ করে যেখান থেকে লগ লেখা হয়েছে। এই উদ্দেশ্যেই আমরা TAG ধ্রুবক তৈরি করেছি। দ্বিতীয় পরামিতি হল প্রকৃত বার্তা যা আমরা লগে লিখতে চাই। প্রথম প্যারামিটার হিসাবে ক্লাসের নাম ব্যবহার করা জাভা প্রোগ্রামারদের মধ্যে একটি মোটামুটি সাধারণ অভ্যাস।

প্রোগ্রাম সম্পাদনের সময় রেকর্ড করা লগগুলি দেখতে, আপনাকে মেনুটি নির্বাচন করতে হবে
উইন্ডোজ -> দৃশ্য দেখান -> অন্যান্য…
এবং তারপরে যে ডায়ালগ খোলে
অ্যান্ড্রয়েড -> লগক্যাট
যে উইন্ডোটি খোলে, আপনি কেবল লগ দেখতে পারবেন না, ফিল্টার এবং অনুসন্ধানও করতে পারবেন।

এর আমাদের কোড ফিরে যান. আসুন MainThread.java এ পরিবর্তন করি

প্যাকেজ en. mobilab গেমসঅ্যাম্প; অ্যান্ড্রয়েড আমদানি করুন। ব্যবহার লগ; অ্যান্ড্রয়েড আমদানি করুন। দেখুন সারফেসহোল্ডার; পাবলিক ক্লাস MainThreadextends থ্রেড ( ব্যক্তিগত স্ট্যাটিক ফাইনাল স্ট্রিং TAG= MainThread। ক্লাস . getSimpleName() ; প্রাইভেট সারফেসহোল্ডার সারফেসহোল্ডার; প্রাইভেট মেইনগেমপ্যানেল গেমপ্যানেল; প্রাইভেট বুলিয়ান রানিং; পাবলিক ভ্যাইড সেট রানিং (বুলিয়ান রানিং) ( এই। রানিং = রানিং; সারফেসহোল্ডার, মেইনগেমপ্যানেল গেমপ্যানেল) ( সুপার() ; এই। সার্ফেসহোল্ডার = সার্ফেসহোল্ডার; এই। গেমপ্যানেল = গেমপ্যানেল; ) @ ওভাররাইড পাবলিক ভ্যায়েড রান() (লং টিককাউন্ট = 0L; লগ। d(TAG, "গেম লুপ শুরু করা" ); যখন (চলমান) ( টিককাউন্ট ++; // গেমের অবস্থা এখানে আপডেট করা হবে // এবং প্রদর্শনের জন্য একটি ফ্রেম তৈরি করুন) লগ. d(TAG, "গেম লুপ চালানো হয়েছে" + টিককাউন্ট+ " বার" ); ))

আপনি দেখতে পাচ্ছেন, আমরা একটি TAG সংজ্ঞায়িত করেছি এবং রান পদ্ধতির ভিতরে লগ কমান্ডকে বলেছি, যা লগ ফাইলে একটি সংশ্লিষ্ট এন্ট্রি করে। আমরা টিককাউন্ট ভেরিয়েবলের মান লগ করি, যা আসলে একটি গেম লুপ কাউন্টার এবং প্রোগ্রামটি চলাকালীন কতবার গেম লুপ চালানো হয়েছে তা দেখায়।

আসুন MainGamePanel.java ফাইলে যান এবং onTouchEvent পদ্ধতিটি সন্ধান করি, যা স্ক্রিন টাচ হ্যান্ডলার।

পাবলিক বুলিয়ান অন টাচইভেন্ট(মোশন ইভেন্ট ইভেন্ট) ( যদি (ইভেন্ট। getAction() == মোশন ইভেন্ট। ACTION_DOWN) ( যদি (ইভেন্ট। getY() > getHeight() - 50 ) ( থ্রেড। setRunning(false) ; ((ক্রিয়াকলাপ) getContext( ) ফিনিশ () ) অন্যথায় ( লগ।

প্রথমে আমরা একটি স্ক্রীন টাচ ইভেন্ট ঘটেছে কিনা তা পরীক্ষা করি (MotionEvent.ACTION_DOWN)। যদি এটি ঘটে, আমরা y স্থানাঙ্কটি পরীক্ষা করি এবং যদি এটি স্ক্রিনের নীচে থাকে (নীচ থেকে 50 পিক্সেল), আমরা থ্রেডটিকে বন্ধ করার জন্য একটি কমান্ড পাঠাই (চলমান ভেরিয়েবলটিকে মিথ্যাতে সেট করে) এবং তারপর ফিনিশকে কল করি( ) মেথড মেইন অ্যাক্টিভিটি, যা আমাদের পুরো প্রোগ্রাম বন্ধ করে দেয়।

মন্তব্য করুন। পর্দার স্থানাঙ্ক সিস্টেমের উৎপত্তি উপরের বাম কোণে। y-অক্ষ নিচে, x-অক্ষ ঠিক আছে। স্ক্রীনের প্রস্থ এবং উচ্চতা যথাক্রমে getWidth() এবং getHeight() পদ্ধতি ব্যবহার করে প্রাপ্ত করা যেতে পারে।

লগে লিখতে কমান্ড যোগ করে DroidzActivity.java পরিবর্তন করি

প্যাকেজ en. mobilab গেমসঅ্যাম্প; অ্যান্ড্রয়েড আমদানি করুন। অ্যাপ কার্যকলাপ; অ্যান্ড্রয়েড আমদানি করুন। os পাঁজা; অ্যান্ড্রয়েড আমদানি করুন। ব্যবহার লগ; অ্যান্ড্রয়েড আমদানি করুন। দেখুন জানলা;অ্যান্ড্রয়েড আমদানি করুন। দেখুন উইন্ডো ম্যানেজার; পাবলিক ক্লাস DroidzActivity এক্সটেনডস অ্যাক্টিভিটি( /** যখন একটি কার্যকলাপ তৈরি করা হয় তখন বলা হয়। */ব্যক্তিগত স্ট্যাটিক চূড়ান্ত স্ট্রিং TAG= DroidzActivity. ক্লাস getSimpleName(); @Override public void onCreate(Bundle savedInstanceState) ( super. onCreate(savedInstanceState); // শিরোনাম বার নিষ্ক্রিয় করার অনুরোধ requestWindowFeature(উইন্ডো। FEATURE_NO_TITLE) ; // অ্যাপ্লিকেশনটিকে পূর্ণ স্ক্রীন মোডে স্যুইচ করুন getWindow()। setFlags(WindowManager. LayoutParams. FLAG_FULLSCREEN, WindowManager. LayoutParams. FLAG_FULLSCREEN) ;

// ভিউ হিসাবে MainGamePanel সেট করুন

setContentView(নতুন MainGamePanel(এই) ); লগ d(TAG, "যোগ করা হয়েছে" ); ) @ ওভাররাইড সুরক্ষিত শূন্যতা onDestroy() ( লগ। d(TAG, "ধ্বংস হচ্ছে..." ) ; super. onDestroy() ; ) @ ওভাররাইড সুরক্ষিত শূন্যতা অনস্টপ() ( লগ . d(TAG, "স্টপিং..." ); super.onStop(); অ্যাপ্লিকেশন চালু করা যাক. লঞ্চ করার পরে আপনি একটি কালো পর্দা দেখতে হবে. স্ক্রিনের শীর্ষে কয়েকবার এবং তারপর নীচে ক্লিক করুন। প্রোগ্রাম বন্ধ হবে। এটা লগ চেক করার সময়.লগটি দেখে আপনি পদ্ধতিগুলি কোন ক্রমে চালানো হয় তার একটি পরিষ্কার ধারণা পাবেন। আপনি প্রোগ্রামটি চলাকালীন গেম লুপটি কতবার কার্যকর করা হয়েছে তাও দেখতে পারেন। এই পরিসংখ্যান কিছুই মানে না, পরের বার আমরা আরো লগ করা হবে

সারসংক্ষেপ। আমরা একটি পূর্ণ স্ক্রীন অ্যাপ্লিকেশন তৈরি করেছি। আমরা একটি ক্লাস লিখেছি যা একটি পৃথক থ্রেডে চলে এবং এতে গেম ইঞ্জিন থাকবে। আমরা স্ক্রীন স্পর্শ প্রক্রিয়াকরণের জন্য সবচেয়ে সহজ পদ্ধতি লিখেছি এবং সঠিকভাবে অ্যাপ্লিকেশন বন্ধ করেছি।

পরের বার আমরা আঁকার দিকে এগিয়ে যাব। এই টিউটোরিয়ালের সোর্স কোড ডাউনলোড করা যেতে পারে।

অনুবাদ এবং অভিযোজন: আলেকজান্ডার লেডকভ

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

ধারণা বিকাশ

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

একটি গেম তৈরি করা একটু বেশি কঠিন, যেহেতু অ্যাপ স্টোরটি সমস্ত ঘরানার বিভিন্ন গেম দিয়ে পূর্ণ। সত্যিই অনন্য এবং আকর্ষণীয় কিছু তৈরি করা কঠিন, তবে আপনি এটি চেষ্টা না করলে আপনি কখনই জানতে পারবেন না। শুরু করার জন্য, আপনি কাগজে একটি ধারণা আঁকতে পারেন। সমস্ত বিবরণ কাজ, হাইলাইট মুখ্য সুবিধা, একটি সহজ এবং বোধগম্য গেম তৈরি করার চেষ্টা করুন যা ব্যবহারকারীকে আগ্রহী করবে।

সম্ভাব্য প্রতিযোগীদের গবেষণা করা একটি কার্যকর পদক্ষেপ। দোকান ব্রাউজ করুন গুগল অ্যাপ্লিকেশনখেলা, অনুসন্ধান যখন অনুরূপ গেম. কেন এই গেমটি এত জনপ্রিয় এবং এটি সম্পর্কে কী উন্নত করা যেতে পারে তা বোঝার চেষ্টা করুন। এই পর্যবেক্ষণের উপর ভিত্তি করে, আপনি আপনার নিজস্ব প্রকল্প তৈরি করতে পারেন। কিন্তু কোনো অবস্থাতেই ইন্টারফেস উপাদান বা অন্য কিছু কপি করবেন না। মৌলিকতা এবং স্বতন্ত্রতা একটি গুরুত্বপূর্ণ ভূমিকা পালন করে এবং ব্যবহারকারীর প্রথম ছাপকে প্রভাবিত করে।

একটি অবজেক্ট মডেল এবং স্পেসিফিকেশন তৈরি করা

আপনি প্রোগ্রামিং শুরু করার আগে, আপনার সমস্যার একটি নির্দিষ্ট তালিকা সমাধান করা উচিত। এটা অন্তর্ভুক্ত:

  • অবজেক্ট মডেল।
  • কার্যকরী স্পেসিফিকেশন।
  • ইন্টারফেস এবং বিষয়বস্তু।

অবজেক্ট মডেল হল বিস্তারিত বিবরণগেমের প্রতিটি বস্তু। এটি নিজেই খেলোয়াড় হতে পারে, যেকোনো বস্তু (অস্ত্র, বর্ম, ইত্যাদি), অনন্য বৈশিষ্ট্য, পার্শ্ববর্তী বিশ্বের বস্তু।

কার্যকরী স্পেসিফিকেশনে গেমটি কীভাবে কাজ করবে তা বর্ণনা করে এমন সবকিছুই অন্তর্ভুক্ত। এই সম্ভাব্য কর্মপ্লেয়ার এবং নন-প্লেয়েবল ক্যারেক্টার (এনপিসি), একটি অস্ত্র কী ক্ষতি করে বা কীভাবে বর্ম ব্যবহার করা হয়। বিকাশকারীকে গেমের প্রতিটি অবজেক্টের ফাংশনগুলি কাজ করতে হবে, এটি সমস্ত ধরণের ভোগ্য সামগ্রীর ক্ষেত্রেও প্রযোজ্য (প্রাথমিক চিকিৎসা কিট, কার্তুজ)।

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

কীগুলির বিন্যাস ইন্টারফেসের ক্ষেত্রেও প্রযোজ্য। ফোনের টাচ স্ক্রিন, একটি নিয়ম হিসাবে, 5 ইঞ্চি পর্যন্ত একটি তির্যক থাকে, তাই সমস্ত নিয়ন্ত্রণ বোতামগুলি কম্প্যাক্টভাবে স্থাপন করা গুরুত্বপূর্ণ, কিন্তু একই সময়ে সুবিধাজনকভাবে।

বিষয়বস্তু হল খেলার টেক্সট ফিলিং। এগুলি হল মেনু আইটেম, সেটিংস পাঠ্য, অক্ষর সংলাপ, নির্দিষ্ট আইটেমের বিবরণ এবং আরও অনেক কিছু। এটি সমস্ত বিকাশকারীর কল্পনার উপর নির্ভর করে। আপনি তৈরি করতে পারেন আকর্ষণীয় খেলা, যাতে ন্যূনতম পাঠ্য সামগ্রী থাকবে৷

এখানে আপনার কাছে দুটি বিকল্প রয়েছে: সম্পূর্ণরূপে স্ক্র্যাচ থেকে বিকাশ শুরু করুন, বিশুদ্ধ প্রোগ্রামিং ব্যবহার করে, অথবা একটি বিশেষ কনস্ট্রাক্টর ব্যবহার করুন। এটি আপনাকে রেডিমেড উপাদানগুলি ব্যবহার করতে দেয় এবং একটি সাধারণ ইন্টারফেস রয়েছে, তাই এমনকি উন্নত প্রোগ্রামিং দক্ষতা ছাড়াই আপনি একটি গেম তৈরি করতে পারেন।

আপনি যদি প্রথমটি বেছে নেন তবে অ্যান্ড্রয়েডের জন্য একটি গেম তৈরি করার আগে আপনাকে আপনার কম্পিউটারে স্মার্টফোনের জন্য ড্রাইভারগুলি ইনস্টল করতে হবে এবং তারপরে বিকাশের পরিবেশ ইনস্টল করতে হবে। জন্য প্রোগ্রাম তৈরি করতে অপারেটিং সিস্টেমঅ্যান্ড্রয়েড অ্যান্ড্রয়েড স্টুডিও ব্যবহার করে। এই উন্নয়ন পরিবেশ Google দ্বারা তৈরি করা হয়েছে, এবং প্রতিটি স্বাদের জন্য অ্যাপ্লিকেশন এবং গেম তৈরি করার জন্য যথেষ্ট সুযোগ প্রদান করে৷

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

আপনি যদি প্রোগ্রামিংয়ে ভালো না হন, তাহলে অ্যাপ বিল্ডার ব্যবহার করে দেখুন। একটি ডিজাইনার ব্যবহার করে গেমের বিকাশ একটি বিশেষ সম্পাদক ব্যবহার করে স্তর, অক্ষর এবং অন্যান্য উপাদান তৈরিতে নেমে আসে। অনেক ডিজাইনার WYSIWYG নীতির উপর ভিত্তি করে - "আপনি যা দেখেন তাই আপনি পান।" ব্যবহারকারী একটি বিশেষ সম্পাদকে স্থাপন করে এবং সেটিংস/বৈশিষ্ট্য পরিবর্তন করে স্তর, অক্ষর এবং অন্যান্য উপাদান বিকাশ করতে পারে। এটা স্ক্র্যাচ থেকে একটি গেম প্রোগ্রামিং তুলনায় অনেক সহজ.

যাইহোক, গেমের ক্ষমতা ডিজাইনারের কার্যকারিতা দ্বারা সীমিত হবে, তাই আপনার পছন্দটি সাবধানে করা উচিত। ইন্টারনেটে পেইড এবং ফ্রি কনস্ট্রাক্টরদের জন্য বেশ কয়েকটি বিকল্প রয়েছে।

জনপ্রিয়তার প্রথম স্থানটি কনস্ট্রাক্ট 2 দ্বারা দখল করা হয়েছে। একটি বিনামূল্যের প্রাথমিক সংস্করণ রয়েছে, যেটি যে কোনও ঘরানার একটি গেম তৈরি করার জন্য ব্যাপক কার্যকারিতা রয়েছে। প্রোগ্রামটি আপনাকে শুধুমাত্র অ্যান্ড্রয়েড অপারেটিং সিস্টেমের জন্য নয়, আইওএস এবং এমনকি ব্রাউজারের জন্যও একটি গেম বিকাশ করতে দেয় (HTML5 ব্যবহার করা হয়)। এমনকি নতুনরাও সহজেই প্রোগ্রামটি আয়ত্ত করতে পারে। কার্যকারিতা আপনার জন্য যথেষ্ট না হলে, আপনি কিনতে পারেন পূর্ণ সংস্করণ$129 এর জন্য।

অত্যন্ত জনপ্রিয় এক হল Clickteam ফিউশন নির্মাতা। এটির একটি সাধারণ ইন্টারফেস রয়েছে, বিনামূল্যে ব্রাউজার অ্যাপ্লিকেশন এবং বিভিন্ন অনলাইন গেম তৈরি করার ক্ষমতা, হার্ডওয়্যার ত্বরণ সমর্থন করে এবং বিভিন্ন প্ল্যাটফর্মের সাথে কাজ করে (অ্যান্ড্রয়েড সহ)।

প্রোগ্রামটির একটি দৃশ্যত পুরানো ইন্টারফেস রয়েছে, যার শুধুমাত্র 8টি উইন্ডো রয়েছে। কিন্তু এটি ব্যবহার সহজতর উন্নত. এই প্রোগ্রামে আপনি প্রায় যেকোনো 2D গেম তৈরি করতে পারেন: পাজল, কার্ড গেম, অনুসন্ধান এবং আরও অনেক কিছু। আপনি মাত্র 100 ডলারে সম্পূর্ণ সংস্করণটি কিনতে পারেন।

এই টিউটোরিয়ালটি প্রাথমিকভাবে যারা অ্যান্ড্রয়েড ডেভেলপমেন্টে নতুন তাদের জন্য তৈরি, তবে এটি আরও কার্যকর হতে পারে। অভিজ্ঞ ডেভেলপার. এখানে আমরা আপনাকে বলি যে কীভাবে কোনও গেম ইঞ্জিন ব্যবহার না করে অ্যান্ড্রয়েডে একটি সাধারণ 2D গেম তৈরি করবেন। আমি এর জন্য অ্যান্ড্রয়েড স্টুডিও ব্যবহার করেছি, তবে অন্য কোনও উপযুক্তভাবে কনফিগার করা উন্নয়ন পরিবেশ ব্যবহার করা যেতে পারে।

ধাপ 1. একটি গেম আইডিয়া নিয়ে আসুন
উদাহরণস্বরূপ, আসুন একটি মোটামুটি সহজ ধারণা নেওয়া যাক:

পর্দার নীচে - মহাকাশযান. এটি সংশ্লিষ্ট বোতাম টিপে বাম এবং ডানে যেতে পারে। গ্রহাণুগুলি উপরে থেকে উল্লম্বভাবে নীচের দিকে সরে যায়। এগুলি স্ক্রিনের পুরো প্রস্থ জুড়ে উপস্থিত হয় এবং বিভিন্ন গতিতে চলে। জাহাজটিকে যতক্ষণ সম্ভব উল্কাপিন্ডকে ফাঁকি দিতে হবে। যদি একটি উল্কা এটি আঘাত করে, এটি খেলা শেষ.


ধাপ 2. একটি প্রকল্প তৈরি করুন
অ্যান্ড্রয়েড স্টুডিওতে, উপরের মেনুতে, ফাইল → নতুন → নতুন প্রকল্প নির্বাচন করুন।

এখানে আমরা অ্যাপ্লিকেশনের নাম, ডোমেইন এবং পাথ লিখি। Next ক্লিক করুন।

এখানে আপনি অ্যান্ড্রয়েড সংস্করণ প্রবেশ করতে পারেন. আপনি একটি Android ঘড়ি এবং টিভিও চয়ন করতে পারেন৷ কিন্তু আমি নিশ্চিত নই যে আমাদের অ্যাপ্লিকেশনটি এই সমস্ত কিছুতে কাজ করবে। তাই স্ক্রিনশটের মতো সবকিছু লিখলে ভালো হয়। Next ক্লিক করুন।

এখানে আমাদের অবশ্যই Empty Activity নির্বাচন করতে হবে। এবং Next ক্লিক করুন।

এখানে আমরা সবকিছু যেমন আছে তেমনি রেখে ফিনিশ এ ক্লিক করি। তাই প্রকল্পটি তৈরি করা হয়েছে। চলুন তৃতীয় ধাপে যাওয়া যাক।

ধাপ 3. ছবি যোগ করুন

ধাপ 5. MainActivity ক্লাস সম্পাদনা করুন

প্রথমত, ক্লাসের সংজ্ঞাতে View.OnTouchListener প্রয়োগ করুন। ক্লাস সংজ্ঞা এখন এই মত হবে:

পাবলিক ক্লাস MainActivity প্রসারিত করে AppCompatActivity প্রয়োগ করে View.OnTouchListener (
ক্লাসে আমাদের প্রয়োজনীয় স্ট্যাটিক ভেরিয়েবল (ক্লাস ভেরিয়েবল) যোগ করা যাক:

পাবলিক স্ট্যাটিক বুলিয়ান isLeftPressed = false; // বাম বোতাম চাপা পাবলিক স্ট্যাটিক বুলিয়ান isRightPressed = মিথ্যা; // ডান বোতাম টিপুন
পদ্ধতিতে অনক্রিয়েট (বান্ডেল সংরক্ষিত ইনস্ট্যান্সস্টেট) (
লাইন যোগ করুন:

গেমভিউ গেমভিউ = নতুন গেমভিউ(এটি); // create gameView LinearLayout gameLayout = (লিনিয়ারলেআউট) findViewById(R.id.gameLayout); // gameLayout gameLayout.addView(gameView) খুঁজুন; // এবং এতে গেমভিউ বোতাম যোগ করুন leftButton = (বোতাম) findViewById(R.id.leftButton); // বোতাম খুঁজুন বাটন রাইটবাটন = (বোতাম) FindViewById(R.id.rightButton); leftButton.setOnTouchListener(এটি); // এবং এই ক্লাসটিকে শ্রোতা হিসাবে যুক্ত করুন (চাপ দিলে onTouch কাজ করবে) rightButton.setOnTouchListener(এটি);
ক্লাস লিনিয়ারলেআউট, বোতাম, ইত্যাদি। লাল রঙে হাইলাইট করা হয়েছে কারণ সেগুলি এখনও আমদানিতে যোগ করা হয়নি৷
আমদানিতে লাল হাইলাইটিং যোগ করতে এবং সরাতে, আপনাকে প্রতিটির জন্য Alt+Enter চাপতে হবে।
গেমভিউ লাল রঙে হাইলাইট করা হবে কারণ এই ক্লাসটি এখনও বিদ্যমান নেই। আমরা পরে এটি তৈরি করব।

এখন আমরা পদ্ধতি যোগ করি:

পাবলিক বুলিয়ান অন টাচ(ভিউ বোতাম, মোশন ইভেন্ট মোশন) ( সুইচ(button.getId()) ( // নির্ধারণ করুন কোন বোতামের ক্ষেত্রে R.id.leftButton: সুইচ করুন (motion.getAction()) ( // এটি চাপা বা প্রকাশ করা হয়েছে কিনা তা নির্ধারণ করুন case MotionEvent ACTION_DOWN: isLeftPressed = break; case R.id.rightButton: switch (motion.getAction() ACTION_DOWN: isRightPressed = break; ACTION_UP: isRightPressed;
যদি কেউ বিভ্রান্ত হয়, তাহলে মেইনঅ্যাক্টিভিটি ক্লাসের ফলস্বরূপ এটি দেখতে হবে:

প্যাকেজ com.spaceavoider.spaceavoider; android.support.v7.app.AppCompatActivity আমদানি করুন; android.os.Bundle আমদানি করুন; android.view.MotionEvent আমদানি করুন; android.view.View আমদানি করুন; android.widget.Button আমদানি করুন; android.widget.LinearLayout আমদানি করুন; পাবলিক ক্লাস মেইনঅ্যাক্টিভিটি AppCompatActivity প্রসারিত করে View.OnTouchListener প্রয়োগ করে ( পাবলিক স্ট্যাটিক বুলিয়ান isLeftPressed = false; // বাম বোতাম চাপা হয় পাবলিক স্ট্যাটিক বুলিয়ান isRightPressed = false; // ডান বোতামটি চাপা হয় @Override protected void onCreate(BState) সংরক্ষণ করুন savedInstanceState) ; setContentView(R.layout.activity_main); গেমভিউ (এই); ; / এবং এতে যোগ করুন gameViewById (R.id.leftButton) বাটন খুঁজুন (Button) leftButton.setOnTouchListener; এই ক্লাসটি শ্রোতা হিসাবে (চাপলে, অনটাচ কাজ করবে) rightButton.setOnTouchListener(এটি); leftButton : স্যুইচ করুন (motion.getAction()) ( // টেপা বা রিলিজ কেস MotionEvent.ACTION_DOWN: isLeftPressed = true; বিরতি case MotionEvent.ACTION_UP: isLeftPressed = মিথ্যা; বিরতি ) বিরতি; case R.id.rightButton: স্যুইচ (motion.getAction()) ( // এটি চাপা বা মুক্তি কেস MotionEvent.ACTION_DOWN: isRightPressed = true; break; case MotionEvent.ACTION_UP: isRightPressed = মিথ্যা; বিরতি; ) বিরতি; ) সত্য ফিরে; ))
সুতরাং, MainActivity ক্লাস প্রস্তুত! এটি এখনও তৈরি হয়নি গেমভিউ ক্লাস শুরু করে। এবং বাম বোতাম টিপলে, স্ট্যাটিক ভেরিয়েবল isLeftPressed = true, এবং ডান বোতাম টিপলে isRightPressed = true। যে মূলত তিনি সব.

প্রথমে, আসুন নিশ্চিত করি যে স্পেসশিপটি স্ক্রিনে প্রদর্শিত হয় এবং যখন নিয়ন্ত্রণ বোতামগুলি চাপা হয় তখন এটি সরে যায়। আমরা পরে জন্য গ্রহাণু ছেড়ে দেব.

ধাপ 6. গেমভিউ ক্লাস তৈরি করুন

এখন অবশেষে সেই অনুপস্থিত GameView ক্লাস তৈরি করা যাক। চল শুরু করা যাক। ক্লাস ডেফিনেশনে রানযোগ্য সারফেসভিউ ইমপ্লিমেন্ট এক্সটেনড যোগ করি। মোবাইল ডিভাইসের বিভিন্ন স্ক্রীন রেজোলিউশন আছে। এটি 480x800 রেজোলিউশন সহ একটি পুরানো ছোট ফোন বা 1800x2560 রেজোলিউশন সহ একটি বড় ট্যাবলেট হতে পারে। সমস্ত ডিভাইসে গেমটিকে একই রকম দেখাতে, আমি স্ক্রীনটিকে অনুভূমিকভাবে 20টি অংশে এবং 28টি উল্লম্বভাবে ভাগ করেছি। আমি পরিমাপের ফলস্বরূপ একককে একক বলেছি। আপনি অন্যান্য সংখ্যা চয়ন করতে পারেন. প্রধান জিনিস হল যে তাদের মধ্যে সম্পর্ক প্রায় সংরক্ষিত হয়, অন্যথায় চিত্রটি দীর্ঘায়িত বা সংকুচিত হবে।

পাবলিক স্ট্যাটিক int maxX = 20; // অনুভূমিক আকার পাবলিক স্ট্যাটিক int maxY = 28; // উল্লম্ব আকার পাবলিক স্ট্যাটিক ফ্লোট ইউনিটW = 0; // পিক্সেল প্রতি ইউনিট অনুভূমিকভাবে পাবলিক স্ট্যাটিক ফ্লোট ইউনিটএইচ = 0; // পিক্সেল প্রতি ইউনিট উল্লম্বভাবে
আমরা unitW এবং unitW পরে গণনা করব। আমাদের অন্যান্য ভেরিয়েবলেরও প্রয়োজন হবে:

ব্যক্তিগত বুলিয়ান firstTime = true; ব্যক্তিগত বুলিয়ান গেম রানিং = সত্য; ব্যক্তিগত জাহাজ জাহাজ; ব্যক্তিগত থ্রেড গেম থ্রেড = নাল; ব্যক্তিগত পেইন্ট পেইন্ট; ব্যক্তিগত ক্যানভাস ক্যানভাস; ব্যক্তিগত সারফেসহোল্ডার সারফেসহোল্ডার;
কনস্ট্রাক্টর এই মত হবে:

পাবলিক গেমভিউ(প্রসঙ্গ প্রসঙ্গ) ( সুপার(প্রসঙ্গ); //অবজেক্ট আঁকার জন্য সারফেসহোল্ডার = গেটহোল্ডার(); পেইন্ট = নতুন পেইন্ট(); // থ্রেড শুরু করুন gameThread = নতুন থ্রেড(এটি); gameThread.start(); )
run() পদ্ধতিতে একটি অসীম লুপ থাকবে। লুপের শুরুতে, আপডেট() পদ্ধতিটি কার্যকর করা হয়
যা জাহাজের নতুন স্থানাঙ্ক গণনা করবে। তারপর draw() পদ্ধতিটি স্ক্রিনে জাহাজটি আঁকে। এবং শেষে, নিয়ন্ত্রণ() পদ্ধতি 17 মিলিসেকেন্ডের জন্য বিরতি দেবে। 17 মিলিসেকেন্ড পরে, রান() আবার চালানো হবে। এবং তাই পরিবর্তনশীল gameRunning == সত্য পর্যন্ত. এই পদ্ধতিগুলি হল:

@ওভাররাইড পাবলিক ভ্যায়েড রান() ( যখন (গেম রানিং) (আপডেট(); ড্র(); কন্ট্রোল(); ) ) প্রাইভেট ভ্যায়েড আপডেট() ( if(!firstTime) ( ship.update(); ) ) প্রাইভেট ভ্যায়েড ড্র () ( যদি (surfaceHolder.getSurface().isValid()) ( //পৃষ্ঠটি বৈধ কিনা তা পরীক্ষা করুন if(firstTime)( // প্রথম লঞ্চের প্রথম টাইম = false; unitW = surfaceHolder.getSurfaceFrame().width() /maxX ; // ইউনিটে পিক্সেলের সংখ্যা গণনা করুন ;। // 17 মিলিসেকেন্ডের জন্য বিরতি দিয়ে চেষ্টা করুন ( gameThread.sleep(17); ) ক্যাচ (InterruptedException e) ( e.printStackTrace(); ) )
আপনি যখন প্রথম শুরু করবেন তখন শুরুতে মনোযোগ দিন। সেখানে আমরা ইউনিটে পিক্সেল সংখ্যা গণনা করি এবং জাহাজ যোগ করি। আমরা এখনো জাহাজ তৈরি করিনি। তবে প্রথমে আমরা এর প্যারেন্ট ক্লাস তৈরি করব।

ধাপ 7. SpaceBody ক্লাস তৈরি করুন

এটি জাহাজ এবং গ্রহাণু ক্লাসের মূল হবে। এটিতে এই দুটি শ্রেণীর সাধারণ ভেরিয়েবল এবং পদ্ধতি থাকবে। ভেরিয়েবল যোগ করা হচ্ছে:

সুরক্ষিত ফ্লোট এক্স; // স্থানাঙ্ক সুরক্ষিত ফ্লোট y; সুরক্ষিত ভাসা আকার; // আকার সুরক্ষিত ফ্লোট গতি; // গতি সুরক্ষিত int bitmapId; // ছবি আইডি সুরক্ষিত বিটম্যাপ বিটম্যাপ; // ছবি
এবং পদ্ধতি

void init(প্রসঙ্গ প্রসঙ্গ) ( // চিত্রটিকে প্রয়োজনীয় আকারে সংকুচিত করুন Bitmap cBitmap = BitmapFactory.decodeResource(context.getResources(), bitmapId); bitmap = Bitmap.createScaledBitmap(cBitmap, (int)(unitW *) গেম দেখুন। , ( int)(size * GameView.unitH), মিথ্যা; ছবি canvas.drawBitmap (বিটম্যাপ, x*GameView.unitW, y*GameView.unitH, পেইন্ট);
ধাপ 8. শিপ ক্লাস তৈরি করুন

এখন শিপ ক্লাস তৈরি করা যাক। এটি স্পেসবডি ক্লাসের উত্তরাধিকারসূত্রে প্রাপ্ত হয়, তাই আমরা শ্রেণী সংজ্ঞায় স্পেসবডির প্রসারিত যোগ করব।

আসুন একটি কন্সট্রাক্টর লিখি:

পাবলিক শিপ(প্রসঙ্গ প্রসঙ্গ) ( bitmapId = R.drawable.ship; // প্রাথমিক প্যারামিটার আকার = 5; x=7; y=GameView.maxY - আকার - 1; গতি = (ফ্লোট) 0.2; init(প্রসঙ্গ) ; // জাহাজ শুরু করুন)
এবং আপডেট() পদ্ধতি ওভাররাইড করুন

@ওভাররাইড পাবলিক ভ্যায়েড আপডেট() ( // বোতামটি চাপা হলে জাহাজটি সরান<= GameView.maxX - 5){ x += speed; } }
এই সঙ্গে, মহাকাশযান প্রস্তুত! আমরা সবকিছু কম্পাইল করে রান করি। একটি স্পেসশিপ পর্দায় উপস্থিত হওয়া উচিত। আপনি বোতাম টিপুন যখন এটি বাম এবং ডান সরানো উচিত. এখন আমরা উপরে থেকে পড়া গ্রহাণু যোগ করি। আপনি যদি একটি জাহাজের সাথে সংঘর্ষ করেন, গেমটি শেষ হয়।

ধাপ 9. গ্রহাণু শ্রেণী তৈরি করুন

এর গ্রহাণু শ্রেণী যোগ করা যাক. এটি স্পেসবডি ক্লাসের উত্তরাধিকারসূত্রে প্রাপ্ত হয়, তাই আমরা ক্লাসের সংজ্ঞায় স্পেসবডির প্রসারিত যোগ করব।

আমাদের প্রয়োজনীয় ভেরিয়েবল যোগ করা যাক:

ব্যক্তিগত int ব্যাসার্ধ = 2; // ব্যাসার্ধ ব্যক্তিগত ফ্লোট মিনস্পীড = (ফ্লোট) 0.1; // সর্বনিম্ন গতি ব্যক্তিগত ফ্লোট ম্যাক্সস্পিড = (ফ্লোট) 0.5; // সর্বোচ্চ গতি
গ্রহাণুটি স্ক্রিনের শীর্ষে একটি এলোমেলো বিন্দুতে উপস্থিত হওয়া উচিত এবং একটি এলোমেলো গতিতে নীচে উড়ে যাওয়া উচিত। এটি করার জন্য, এর কনস্ট্রাক্টরে একটি র্যান্ডম নম্বর জেনারেটর ব্যবহার করে x এবং গতি নির্দিষ্ট করা হয়।

সর্বজনীন গ্রহাণু (প্রসঙ্গ প্রসঙ্গ) ( র্যান্ডম র্যান্ডম = নতুন র্যান্ডম(); bitmapId = R.drawable.asteroid; y=0; x = random.nextInt(GameView.maxX) - ব্যাসার্ধ; আকার = ব্যাসার্ধ*2; গতি = মিনস্পিড ​+ (maxSpeed ​​- minSpeed) * random.nextFloat();
গ্রহাণুটিকে একটি নির্দিষ্ট গতিতে উল্লম্বভাবে নীচের দিকে যেতে হবে। অতএব, update() পদ্ধতিতে আমরা x স্থানাঙ্কে গতি যোগ করি।

@ওভাররাইড পাবলিক ভ্যায়েড আপডেট() ( y += গতি; )
একটি গ্রহাণু জাহাজের সাথে সংঘর্ষ হয়েছে কিনা তা নির্ধারণ করার জন্য আমাদের একটি পদ্ধতিরও প্রয়োজন হবে।

পাবলিক বুলিয়ান isCollision(float shipX, float shipY, float shipSize) ( রিটার্ন!(((x+আকার))< shipX)||(x >(শিপএক্স+শিপ সাইজ))||((y+সাইজ)< shipY)||(y >(shipY+shipSize))); )
এর এটা ঘনিষ্ঠভাবে কটাক্ষপাত করা যাক. সরলতার জন্য, আমরা জাহাজ এবং গ্রহাণুকে বর্গাকার হিসাবে বিবেচনা করি। এখানে আমি উল্টোদিক থেকে গিয়েছিলাম। অর্থাৎ, আমি নির্ধারণ করি কখন বর্গগুলো ছেদ করবে না।

((x+আকার)< shipX) - корабль слева от астероида.
(x > (shipX+shipSize)) - গ্রহাণুর ডানদিকের জাহাজ।
((y+আকার)< shipY) - корабль сверху астероида.
(y > (shipY+shipSize)) - গ্রহাণুর নিচ থেকে জাহাজ।

এই চারটি ভাবের মধ্যে || (বা)। অর্থাৎ, যদি অন্তত একটি অভিব্যক্তি সত্য হয় (যার অর্থ বর্গগুলি ছেদ করে না), ফলাফলগুলিও সত্য।

আমি চিহ্ন দিয়ে এই সম্পূর্ণ অভিব্যক্তিটি উল্টে দিই! ফলস্বরূপ, যখন বর্গগুলি ছেদ করে তখন পদ্ধতিটি সত্য হয়। যা আমাদের প্রয়োজন ঠিক কি.

আপনি আরও জটিল পরিসংখ্যানের ছেদ নির্ধারণ সম্পর্কে পড়তে পারেন।

ধাপ 10. গেমভিউতে গ্রহাণু যোগ করুন

গেমভিউতে ভেরিয়েবল যোগ করুন:

ব্যক্তিগত অ্যারেলিস্ট গ্রহাণু = নতুন অ্যারেলিস্ট<>(); // গ্রহাণু এখানে সংরক্ষণ করা হবে ব্যক্তিগত চূড়ান্ত int ASTEROID_INTERVAL = 50; // সময় যার পরে গ্রহাণুগুলি প্রদর্শিত হয় (পুনরাবৃত্তিতে) ব্যক্তিগত int currentTime = 0;
আমরা 2টি পদ্ধতিও যোগ করি:

প্রাইভেট ভ্যায়েড চেক কোলিশন())( // সমস্ত গ্রহাণুর মধ্য দিয়ে যান এবং তাদের মধ্যে একটি (গ্রহাণু গ্রহাণু: গ্রহাণু) এর জন্য জাহাজটিকে স্পর্শ করে কিনা তা পরীক্ষা করুন ( if(asteroid.isCollision(ship.x, ship.y, ship.size)) ( // প্লেয়ার হারিয়েছে গেম রানিং = মিথ্যা; // খেলা বন্ধ করুন // TODO যোগ করুন বিস্ফোরণ অ্যানিমেশন) = নতুন গ্রহাণু (getContext() );
এবং run() পদ্ধতিতে আমরা control() কলের আগে এই মেথডগুলিতে কল যোগ করি।

@Override public void run() ( while (gameRunning) ( update(); draw(); checkCollision(); checkIfNewAsteroid(); control(); ) )
এর পরে, আপডেট() পদ্ধতিতে, আমরা একটি লুপ যোগ করি যা সমস্ত গ্রহাণুর মাধ্যমে পুনরাবৃত্তি করে এবং তাদের উপর আপডেট() পদ্ধতিকে কল করে।

ব্যক্তিগত অকার্যকর আপডেট() ( if(!firstTime) ( ship.update(); এর জন্য (Asteroid Asteroid: Asteroids) ( asteroid.update(); ) )
আমরা draw() পদ্ধতিতে একই লুপ যোগ করি।

Private void draw() ( if (surfaceHolder.getSurface().isValid()) ( //পৃষ্ঠটি বৈধ কিনা তা পরীক্ষা করে দেখুন if(firstTime)( // প্রথম লঞ্চের প্রাথমিককরণ firstTime = false; unitW = surfaceHolder.getSurfaceFrame()। width( )/maxX; // ইউনিটে পিক্সেলের সংখ্যা গণনা করুন = সার্ফেসহোল্ডার। lockCanvas(); canvas.drawColor(Color.BLACK) বন্ধ করুন। asteroid.drow(পেইন্ট, ক্যানভাস);
এখানেই শেষ! সহজতম 2D গেমটি প্রস্তুত। চলুন কম্পাইল, রান এবং দেখুন কি হয়!
যদি কেউ বিভ্রান্ত হয় বা কিছু কাজ না করে, আপনি উৎসটি ডাউনলোড করতে পারেন।

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

এখানেই শেষ। পর্যালোচনা, প্রশ্ন, বিষয়গুলি লিখুন যা আপনি চালিয়ে যেতে আগ্রহী।

বন্ধুদের সাথে শেয়ার করুন বা নিজের জন্য সংরক্ষণ করুন:

লোড হচ্ছে...