এই নির্দেশিকাটি একটি সাধারণ গেম বিকাশ চক্রের রূপরেখা দেয়। এই নির্দেশিকাটি পড়ার পরে, আপনি এটি একটি রেফারেন্স হিসাবে ব্যবহার করা সহায়ক বলে মনে করতে পারেন।
আপনি যখন ইউনিটির সাথে কাজ করেন, তখন বিকাশের জীবনচক্র তিনটি পর্যায় নিয়ে গঠিত:
- পরিকল্পনা এবং নকশা
- বিকাশ এবং পরীক্ষা
- প্রকাশ এবং বজায় রাখা
পরিকল্পনা এবং নকশা
পরিকল্পনা এবং ডিজাইনের পর্যায়ে, আপনি কীভাবে আপনার গেমটি তৈরি করবেন তা নির্ধারণ করেন। আপনি কীভাবে মোবাইলের জন্য বিকাশের চ্যালেঞ্জগুলি মোকাবেলা করবেন এবং বিকাশে ব্যবহার করার জন্য সরঞ্জাম এবং প্রক্রিয়াগুলি সনাক্ত করবেন তা নির্ধারণ করুন।
সমস্ত দলের সদস্যদের থেকে ইনপুট পান
আপনার শিল্প, প্রকৌশল, নকশা, অডিও এবং প্রযোজনা দলের সাথে কাজ করুন এবং বাস্তবায়নের কাজগুলি চিহ্নিত করতে এবং রেকর্ড করুন৷ যেমন:
- শিল্প দলগুলি অক্ষর এবং পরিবেশের জন্য সম্পদের টেক্সচার এবং জাল বাজেট তৈরি করতে পারে।
- ইঞ্জিনিয়ারিং প্রতিটি প্ল্যাটফর্মের বিরুদ্ধে প্রোফাইলিংয়ের জন্য মেমরি এবং কর্মক্ষমতা চেকপয়েন্ট নির্ধারণ করতে পারে।
- ডিজাইন গেম মেকানিক্সের পরিকল্পনা করতে পারে যা অভিজ্ঞতাকে সক্ষম করে।
- অডিও বিশেষজ্ঞরা UI, 2D এবং 3D স্থানিক শব্দগুলির মধ্যে শব্দের ধারাবাহিকতার জন্য প্রয়োজনীয়তাগুলি পর্যালোচনা করতে পারে।
- উত্পাদন লঞ্চের প্রয়োজনীয়তাগুলিকে যোগাযোগ করতে পারে এবং দলটিকে সারিবদ্ধ এবং অন-ট্র্যাক রাখতে পারে।
মোবাইলের জন্য ডিজাইন
মোবাইল প্ল্যাটফর্মের জন্য অ্যাপ্লিকেশন ডেভেলপমেন্ট নির্দিষ্ট বিবেচনার সাথে জড়িত, যেমন:
- পরিবর্তনশীল স্ক্রিন আকৃতির অনুপাত
- শক্তি খরচ
- থার্মাল এবং প্রসেসর থ্রটলিং
- স্পর্শ ইনপুট
- ক্রস-প্ল্যাটফর্ম উন্নয়ন
- গ্রাফিক এপিআই (ভুলকান বা ওপেনজিএল ইএস)
মোবাইলের জন্য ডিজাইন করার জন্য অনন্য বিবেচনার বিষয়ে বিশদ বিবরণের জন্য, ইউনিটি ফ্রম ইউনিটিতে অ্যান্ড্রয়েড ডেভেলপমেন্ট এবং গুগল প্লে একাডেমি দেখুন।
বিকাশ এবং পরীক্ষা
বিকাশ এবং পরীক্ষার পর্যায়ে, আপনি আপনার গেমটি তৈরি করেন এবং পরীক্ষা এবং প্রাক-লঞ্চ প্রস্তুতি করেন। লঞ্চের প্রয়োজনীয়তা পূরণের জন্য আপনাকে প্রস্তুত করতে আপনি Google Play-তে কিছু সীমিত অভ্যন্তরীণ পরীক্ষা করেন। আপনি প্লে অ্যাসেট ডেলিভারি এবং ইউনিটি অ্যাড্রেসেবল সিস্টেমের উপর ভিত্তি করে ইউনিটিতে আপনার স্থাপনার কৌশল পরিমার্জন করুন এবং সম্পদগুলি সংগঠিত করুন।
নিম্নলিখিত বিভাগগুলি ইউনিটি সরঞ্জাম এবং কৌশলগুলি বর্ণনা করে যা আপনাকে Android এর জন্য বিকাশে সহায়তা করার জন্য ডিজাইন করা হয়েছে৷
রেন্ডার
রেন্ডারিং হল পর্দায় আপনার ইউনিটি দৃশ্য থেকে 3D এবং 2D সম্পদ আঁকার প্রক্রিয়া। ইউনিটি ইঞ্জিন রেন্ডারিং পরিচালনা করার সময়, অ্যান্ড্রয়েড প্ল্যাটফর্মের জন্য কয়েকটি বিষয় বিবেচনা করা গুরুত্বপূর্ণ।
টেক্সচার
আপনার লক্ষ্য ডিভাইসের উপর ভিত্তি করে আপনার সবচেয়ে বড় টেক্সচার মাপের প্রয়োজন কিনা তা নির্ধারণ করুন। আপনি যখন প্রোফাইল মেমরি বরাদ্দ করেন , তখন লক্ষ্য টেক্সচারের আকার পরিবর্তনের সম্ভাব্য সঞ্চয় পর্যালোচনা করুন।
ফ্রেম সময়
অ্যান্ড্রয়েড ডিভাইসে অতিরিক্ত গরম হওয়া রোধ করতে, গড়ে 21 মিলিসেকেন্ডের কম ফ্রেম টাইম মান লক্ষ্য করুন৷ কখনও কখনও, যেমন লোডিং বা ছোট সিনেমার অভিজ্ঞতার সময়, আপনার ফ্রেমের সময় 21 মিলিসেকেন্ডের বেশি হতে পারে, তবে মূল গেমের অভিজ্ঞতার জন্য আপনাকে 21 মিলিসেকেন্ডের থ্রেশহোল্ডের নিচে থাকা উচিত।
মোবাইল প্ল্যাটফর্মে, আপনি ন্যূনতম লক্ষ্যে পৌঁছাতে না পারলে বাধ্যতামূলক VSync ফ্রেম রেটকে থ্রোটল করে। উদাহরণস্বরূপ, একটি 60Hz স্ক্রীন আপডেটে, আপনি যদি 60fps হিট না করেন, তাহলে আপনার গেমটি 30 এ থ্রোটল হয়ে যাবে; আপনি 30 হিট না হলে, আপনি 15 থ্রোটল করা হবে.
অনেক অ্যান্ড্রয়েড ডিভাইস 60Hz এবং 120Hz ডিসপ্লে রিফ্রেশ রেট সহ শিপিং করে। উচ্চ রেন্ডারিং হারের জন্য থার্মাল থ্রটলিং এবং ব্যাটারি ড্রেন ঝুঁকি না নিয়ে অনেক ছোট ফ্রেম টাইম (60Hz আপডেটের জন্য 10ms টার্গেট এবং 120Hz এর জন্য 5ms) লক্ষ্য করার সুবিধাগুলি ওজন করুন।
ইউনিটিতে আপনার গেমে একটি নির্দিষ্ট ফ্রেম রেট সেট করতে, Application.targetFrameRate ব্যবহার করুন।
Android ফ্রেম পেসিং লাইব্রেরি আপনাকে মসৃণভাবে রেন্ডার করতে সাহায্য করে যখন আপনার অ্যাপ্লিকেশনটি স্ক্রীন রিফ্রেশ হারের চাহিদার চেয়ে পরবর্তী ফ্রেমটি উপস্থাপন করতে বেশি সময় নেয়। ইউনিটি সংস্করণ 2021 এবং পরবর্তী সংস্করণগুলির জন্য, অ্যান্ড্রয়েড ফ্রেম পেসিং সক্ষম করলে তা লক্ষ্য ফ্রেম হারের জন্য সেরা ম্যাচের জন্য ডিসপ্লে রিফ্রেশ রেট সেট করে। এটি নিশ্চিত করে যে গেমটি অপ্রয়োজনীয় ডিসপ্লে আপডেটে ব্যাটারির শক্তি নষ্ট করে না।
লাইব্রেরি সক্ষম করতে, প্রজেক্ট সেটিংস > প্লেয়ারে , Android এর জন্য সেটিংসের অধীনে, অপ্টিমাইজড ফ্রেম পেসিং চেকবক্সটি চেক করুন৷
ভলকান এপিআই
Vulkan হল একটি ক্রস-প্ল্যাটফর্ম, উচ্চ-পারফরম্যান্স 3D গ্রাফিক্স API যার OpenGL ES-এর তুলনায় কম ওভারহেড রয়েছে। ঐক্য দুটি ভিন্ন উপায়ে ভলকান ব্যবহার করতে পারে।
অটো গ্রাফিক্স এপিআই
আপনি ভলকান এর সাথে অটো গ্রাফিক্স API ব্যবহার করতে পারেন, তবে আপনার ইনস্টল করা ইউনিটি সংস্করণের উপর নির্ভর করে এর বিভিন্ন আচরণ থাকতে পারে। আপনি প্রজেক্ট সেটিংস > প্লেয়ার > রেন্ডারিং- এ নেভিগেট করে এটি নির্বাচন করতে পারেন।
কোন ইউনিটি সংস্করণ ব্যবহার করতে হবে তা বেছে নেওয়ার সময় নিম্নলিখিত বিবেচনাগুলি মনে রাখবেন:
- ইউনিটি 2021.1 এবং পূর্ববর্তী সংস্করণগুলি অটো গ্রাফিক্স API সহ ভলকান সমর্থন করে না। ইউনিটি OpenGL ES 3.2 ব্যবহার করার চেষ্টা করে। ডিভাইসটি OpenGL ES 3.2 সমর্থন না করলে, Unity সেই ক্রমে OpenGL ES 3.1, 3.0, বা 2.0-এ ফিরে আসে৷
- ইউনিটি 2021.2 এবং পরবর্তী সংস্করণগুলি প্রথমে ভলকান ব্যবহার করে। ডিভাইসটি Vulkan সমর্থন না করলে, Unity আবার OpenGL ES 3.2, 3.1, 3.0, বা 2.0-এ ফিরে আসে।
ম্যানুয়াল গ্রাফিক্স API
বিকল্পভাবে, আপনি অটো গ্রাফিক্স API অক্ষম করে ম্যানুয়ালি Vulkan সক্ষম করতে পারেন। আপনি যদি ইউনিটি 2021.1 বা পূর্ববর্তী সংস্করণ ব্যবহার করেন তবে এটি ভলকান ব্যবহার করার একমাত্র উপায়।
যদি Vulkan এই তালিকায় OpenGL ES এর চেয়ে বেশি অর্ডার করা হয়, Unity প্রথমে Vulkan ব্যবহার করার চেষ্টা করে। যদি ডিভাইসটি Vulkan সমর্থন না করে, Unity OpenGL ES এর সাথে চলে। অ্যান্ড্রয়েডে ভলকান সম্পর্কে বিশদ তথ্যের জন্য ভলকান দিয়ে শুরু করুন দেখুন, যেমন আধুনিক গ্রাফিক্স এপিআই কীভাবে ব্যবহার করবেন এবং আপনার গেমের কার্যকারিতা অপ্টিমাইজ করবেন।
কল আঁকুন
স্ক্রিনে প্রদর্শিত সবকিছু এক বা একাধিক ড্র কলের সাথে যুক্ত। মোবাইল প্ল্যাটফর্মে, আপনি গ্রাফিক্স প্রসেসিং ইউনিটে (GPU) পাঠান এমন ড্র কলের সংখ্যা অপ্টিমাইজ করা এবং কমানো উচিত।
ট্র্যাফিক লাইটে সারিবদ্ধ গাড়ির মতো ড্র কলের কথা ভাবুন। আলো সবুজ হয়ে যাওয়ার পরে, আলো পরিবর্তনের আগে একটি নির্দিষ্ট সংখ্যক গাড়ি অতিক্রম করতে পারে। যখন আলো হলুদ হয়ে যায়, তখন আপনি আপনার আদর্শ টার্গেট ফ্রেম টাইমে (21 মিলিসেকেন্ড) পৌঁছেছেন এবং যখন আলো লাল হয়ে যায়, আপনি 33 মিলিসেকেন্ড ফ্রেমের সময়সীমাতে পৌঁছেছেন। অতীতের যেকোনো কিছু যা পরবর্তী রেন্ডার ফ্রেমকে প্রভাবিত করে, তাই ফলস্বরূপ ফ্রেমের হার আপনার লক্ষ্য 30fps থেকে কম।
আপনার গেমে ড্র কল পারফরম্যান্সকে কীভাবে উন্নত করবেন সে সম্পর্কে তথ্যের জন্য, ইউনিটি সাপোর্ট থেকে ব্যাচিং নিবন্ধটি দেখুন।
ছায়া
শ্যাডো কাস্টিং ড্র কলগুলি সর্বাধিক GPU-নিবিড় হতে পারে, এমনকি সাধারণ পরিবেশের জন্যও সর্বাধিক GPU সময় ব্যয় করে৷ শ্যাডো কাস্টিং ড্র কলের খরচ কমাতে, নরম ছায়ার পরিবর্তে শক্ত ব্যবহার করে পরীক্ষা করুন। লো-এন্ড ডিভাইসের জন্য GPU-তে এটি এখনও খুব ব্যয়বহুল হলে, হার্ড শ্যাডোর পরিবর্তে ব্লব শ্যাডো ব্যবহার করার কথা বিবেচনা করুন।
টেক্সচার
Android এ RGB এবং RGBA টেক্সচারের জন্য প্রস্তাবিত টেক্সচার কম্প্রেশন ফর্ম্যাট হল ASTC। ইউনিটিতে, আপনার অ্যান্ড্রয়েডে ন্যূনতম টেক্সচার কম্প্রেশন বিকল্পটি হল ETC2। আপনি ইউনিটি বিল্ড সেটিংসের অধীনে ASTC থেকে আপনার ব্যাকআপ হিসাবে ETC2 এ ফিরে যেতে পারেন।
ইউজার ইন্টারফেস এবং আকৃতির অনুপাত
আপনি ইউনিটি এডিটরে সরাসরি বিভিন্ন ডিভাইসের স্ক্রীন রেজোলিউশন, ওরিয়েন্টেশন এবং আকৃতির অনুপাতের পূর্বরূপ দেখতে ইউনিটি ডিভাইস সিমুলেটর টুল ব্যবহার করতে পারেন। আপনি গেম ভিউ এবং ডিভাইস সিমুলেটর ভিউ এর মধ্যে টগল করতে পারেন।
ইউনিটিতে ডিভাইস সিমুলেটর দিয়ে আপনার গেম সিমুলেট করুন-এ টুলটির একটি প্রিভিউ দেখুন! .
আপনি গিথুবের গেমস-নমুনা সংগ্রহস্থলে ট্রিভিয়াল কার্ট সোর্স কোডটি খুঁজে পেতে পারেন।
আপনি ড্রপ-ডাউন মেনুতে ডিভাইস বিকল্পগুলি নির্বাচন করে ডিভাইস সিমুলেটর ভিউতে UI ক্যানভাস উপাদানগুলির বিন্যাস এবং সঠিকতা দ্রুত যাচাই করতে পারেন:
ইউনিটির জন্য আরও UI অপ্টিমাইজেশন কৌশলগুলির জন্য, ইউনিটি থেকে নিম্নলিখিত টিউটোরিয়ালটি দেখুন: ইউনিটি UI অপ্টিমাইজ করা ।
পদার্থবিদ্যা
Nvidia PhysX ইঞ্জিনটি ইউনিটিতে অন্তর্নির্মিত। মোবাইলে ডিফল্ট সেটিংস ব্যয়বহুল হতে পারে, তাই নিম্নলিখিত বিবেচনাগুলি মনে রাখবেন:
- আপনার টার্গেট ফ্রেম রেট বিবেচনা করুন এবং সেই অনুযায়ী নির্দিষ্ট টাইমস্টেপ সেট করুন। ডিফল্ট 0.02ms বা 50Hz সেট করা আছে। একটি 30fps টার্গেটের জন্য আপনি এটিকে 0.03 বা উচ্চতর করতে পারেন।
- নির্দিষ্ট লেয়ার ধরনের গেম অবজেক্টের মধ্যে মিথস্ক্রিয়া নির্ধারণের জন্য জাল কোলাইডারকে সরলীকরণ এবং লেয়ার কোলিশন ম্যাট্রিক্স কমানোর কথা বিবেচনা করুন।
মোবাইল গেমগুলির জন্য পদার্থবিদ্যা সেটিংস এবং অপ্টিমাইজেশন সম্পর্কে তথ্যের জন্য, ইউনিটি থেকে অপ্টিমাইজ ইওর মোবাইল গেমস ইবুক দেখুন৷
প্রোফাইল
অ্যাপ বিকাশকারীরা প্রায়শই প্রোফাইলিং উপেক্ষা করে বা উপেক্ষা করে যতক্ষণ না অ্যাপ্লিকেশনটি একটি জটিল ব্যর্থতার পয়েন্টে পৌঁছায়। আপনার প্রক্রিয়ায় ডেডিকেটেড প্রোফাইলিং সময় নির্ধারণ করা এবং নিম্নলিখিত সেরা অনুশীলনগুলি ব্যবহার করা একটি ভাল ধারণা:
- বিকাশের সময় মূল পয়েন্টগুলি সনাক্ত করুন যখন আপনি প্রোফাইলিং সময় বরাদ্দ করতে পারেন, এটি এলোমেলোভাবে ফিট করার পরিবর্তে।
- ইউনিটি প্রোফাইল বিশ্লেষক ব্যবহার করার জন্য প্রোফাইল স্ন্যাপশটগুলি সংরক্ষণ করুন৷
- আপনার গেমটি বিকাশের বর্তমান পর্যায়ে কীভাবে পারফর্ম করে তার একটি সঠিক চিত্র পেতে লক্ষ্য ডিভাইসগুলিতে আপনার গেমটি প্রোফাইল করুন৷
- আপনার গেমের বিভিন্ন অংশ প্রোফাইল করুন।
- আপনার খেলোয়াড়রা কীভাবে গেম খেলে তা প্রোফাইল করুন। (আপনার গেমটি শুধুমাত্র তখনই প্রোফাইল করবেন না যখন এটি একটি নিষ্ক্রিয় অবস্থায় বা একটি বিরতি স্ক্রিনে বসে থাকে।)
- মোবাইল ডিভাইসগুলি গরম হলে আপনি যে থ্রোটলিং সমস্যাগুলির সম্মুখীন হতে পারেন তা খুঁজে পেতে সহায়তা করার জন্য গেমটি কিছুক্ষণ চলার পরে টেকসই মোডে প্রোফাইল৷
আপনি পৃথকভাবে বা সংমিশ্রণে নিম্নলিখিত প্রোফাইলিং সরঞ্জামগুলি ব্যবহার করতে পারেন।
ইউনিটি প্রোফাইলার ইউনিটি প্রোফাইলার হল একটি সম্পূর্ণ সমন্বিত কর্মক্ষমতা বিশ্লেষণের টুল যা ইউনিটি এডিটরে আপনার কোডের বিপরীতে চলতে পারে এবং ডেভেলপমেন্ট-মোড বিল্ডে চলমান আপনার স্বতন্ত্র অ্যান্ড্রয়েড ডিভাইসের সাথে সংযোগ করতে পারে।
অ্যান্ড্রয়েড জিপিইউ ইন্সপেক্টর অ্যান্ড্রয়েড জিপিইউ ইন্সপেক্টর ( এজিআই ) দিয়ে আপনি ফ্রেম-লেভেল ডিবাগিং করতে পারেন। এজিআই জিপিইউ, সিপিইউ, মেমরি, ব্যাটারি এবং জিপিইউ কাউন্টার সহ সিস্টেম পরিষেবাগুলিও বিশ্লেষণ করে।
ইউনিটিতে আপনার গেমের প্রোফাইলিং সম্পর্কে বিশদ বিবরণের জন্য, ইউনিটিতে প্রোফাইলিংয়ের ভিডিও ভূমিকা দেখুন বা ইউনিটি গেমগুলি প্রোফাইল করার চূড়ান্ত নির্দেশিকা পড়ুন, উভয়ই ইউনিটি থেকে।
মেমরি ব্যবস্থাপনা
অ্যান্ড্রয়েড প্রক্রিয়াগুলি লক্ষ্য ডিভাইসে উপলব্ধ মেমরি ভাগ করে। যখন টার্গেট টেস্টিং ডিভাইসে পর্যাপ্ত ফ্রি মেমরি রিসোর্স থাকে তখন আপনার মেমরি ব্যবহার প্রোফাইল করা উচিত। আপনার গেমের একটি সামঞ্জস্যপূর্ণ পয়েন্টে মেমরি পরীক্ষাগুলি সম্পাদন করুন যাতে আপনি সেশন এবং মেমরি ব্যবহারের প্রবণতাগুলি যথাযথভাবে তুলনা করতে পারেন।
আপনি যখন C# এ লেখা স্ক্রিপ্টে কাজ করেন, তখন স্ট্রিং, স্ট্রিং তুলনা এবং স্ট্রিং-সম্পর্কিত বস্তুর বরাদ্দ (যেমন গেম সেটিংসের জন্য JSON ফাইল) ব্যবহারে সতর্ক থাকুন। এগুলি ঘন ঘন মেমরি বরাদ্দ তৈরি করে এবং বিভক্তকরণে অবদান রাখতে পারে।
স্ট্রিং ম্যানিপুলেশনের বড় সিকোয়েন্সের জন্য StringBuilder ক্লাস ব্যবহার করার কথা বিবেচনা করুন, স্ট্রিংগুলির ইন-প্লেস কনক্যাটেনেশন (যেমন "এই" + "ইজ" + "এ" + "খারাপ" + "আইডিয়া" বনাম StringBuilder.Concat()
ফাংশন কল) .
স্ট্রিং সম্পর্কে আরও তথ্যের জন্য, ইউনিটি ডকুমেন্টেশনে স্ট্রিং এবং পাঠ্য দেখুন।
Preferential ScriptableObject
প্রকারের বিপরীতে TextAsset এবং JSON পাঠ্য সংস্থানগুলি মূল্যায়ন করুন। ScriptableObjects
দক্ষতার সাথে ক্রস-সিন ডেটা স্টোরেজ পরিচালনা করে এবং এডিটর-টু-প্লে টাইম পরিবর্তনের অনুমতি দেয়।
মোবাইল অপ্টিমাইজেশানের জন্য ডিফল্ট JSON হ্যান্ডেলের বিকল্পগুলি ব্যবহার করার বিষয়ে আলোচনার জন্য, হাচের নেটওয়ার্ক গেমগুলিতে লুকানো অপ্টিমাইজেশন নিবন্ধটি দেখুন৷
রানটাইমে আপনার মেমরি ব্যবহার কেমন হবে তা নির্ধারণ করতে মেমরি অ্যাডভাইস API ব্যবহার করুন। API উচ্চ, স্বাভাবিক এবং কম মেমরি ব্যবহারের জন্য একটি স্টপলাইট সূচক প্রকাশ করে। আপনি আপডেটের জন্য সূচকটিতে সদস্যতা নিতে পারেন বা বর্তমান অবস্থার জন্য সরাসরি পোল করতে পারেন। যখন আপনি একটি লাল সংকেত পান, তখন আপনার গেম অবজেক্ট পুল বা ক্যাশে হ্রাস করার কথা বিবেচনা করুন৷ লাইভ অপারেশন চলাকালীন আপনার গেম টেলিমেট্রিতে এই প্রসঙ্গটি অন্তর্ভুক্ত করুন এবং লঞ্চের পরে পারফরম্যান্স মেট্রিক্সের পর্যালোচনা করুন।
অ্যান্ড্রয়েড ডিভাইসে মেমরি সংস্থা এবং ইউনিটি এটির সাথে কীভাবে কাজ করে সে সম্পর্কে আরও গভীরভাবে ডুব দেওয়ার জন্য, অ্যান্ড্রয়েড মেমরি ব্যবহার বোঝার জন্য দেখুন (Google I/O '18 থেকে) । ভিডিওটি মেমরির সমস্যাগুলির ধরন এবং যখন কম মেমরি কিলার কার্যকর হয় তার মধ্য দিয়ে চলে।
আবর্জনা সংগ্রহ
একটি পরিচালিত মেমরি পরিবেশে আবর্জনা সংগ্রহ অব্যবহৃত মেমরির টুকরোগুলি পরিষ্কার করে যা একটি অ্যাপ্লিকেশনের জন্য পুনর্ব্যবহৃত করা যেতে পারে। মেমরি সম্পদের অপ্রয়োজনীয় বরাদ্দ এড়াতে আবর্জনা সংগ্রহের সর্বোত্তম অনুশীলনগুলি অনুসরণ করুন।
উদাহরণস্বরূপ, অন-ডিমান্ড বরাদ্দ ( GameObject.Instantiate
) ব্যবহার করার পরিবর্তে একটি গেম অবজেক্ট পুল তৈরি করুন। বড় পুলের জন্য, এন্ট্রি-লেভেল অ্যান্ড্রয়েড ডিভাইসে আপনার গেমের প্রতিক্রিয়াহীন হওয়ার ঝুঁকি কমাতে একাধিক ফ্রেমের উপর বরাদ্দ করার কথা বিবেচনা করুন।
একটি সাধারণ কোরোটিনের জন্য নিম্নলিখিত কোড স্নিপেটটি বিবেচনা করুন যা একটি মনো আচরণের শুরু থেকে আহ্বান করা হয়েছে:
// Option 1: Bad for memory management - causes allocation each iteration
IEnumerator UpdateEnemyTarget() {
while (enabled) {
yield return new WaitForSeconds(1.0f);
// Some intermittent function check
}
}
// Option 2: Better for memory management - allocation of yield instruction once, reused each iteration
private YieldInstruction waitForSecond = new WaitForSeconds(1.0f);
IEnumerator BetterUpdateEnemyTarget() {
while (enabled) {
yield return waitForSecond;
// Some other intermittent function
}
}
আপনি ডিফল্ট Start()
এবং Update()
স্টাব ফাংশনগুলি সরাতে MonoBehaviour টেমপ্লেট ফাইলটি সম্পাদনা করতে পারেন যাতে আপনি বিকাশের সাথে সাথে অসাবধানতাবশত খালি ফাংশনগুলি ছেড়ে না যান।
MonoBehaviour ইভেন্টগুলির সম্পাদনের আদেশের একটি সংক্ষিপ্ত বিবরণের জন্য, ইউনিটি ডকুমেন্টেশনে ইভেন্ট ফাংশনের জন্য কার্যকর করার আদেশ দেখুন। মেমরি ম্যানেজমেন্ট সম্পর্কে আরও জানতে, ইউনিটিতে মেমরি ম্যানেজমেন্ট কোর্সটি দেখুন।
মোবাইল গেম পারফরম্যান্স অপ্টিমাইজেশান টিপসের জন্য, আপনার মোবাইল গেমের পারফরম্যান্স অপ্টিমাইজ করুন দেখুন: ইউনিটির শীর্ষ প্রকৌশলীদের থেকে প্রোফাইলিং, মেমরি এবং কোড আর্কিটেকচারের টিপস৷
প্রিফ্যাব পুলিং
গেমপ্লে চলাকালীন সিপিইউ ফ্রেম টাইম স্পাইকগুলি প্রায় সম্পূর্ণরূপে প্রিফ্যাব ইনস্ট্যান্টেশনের কারণে ঘটে। স্টার্টআপ সিপিইউ স্পাইকগুলি কমাতে বা নির্মূল করতে গেমপ্লেতে প্রবেশ করার আগে প্রজেক্টাইল, স্পনযোগ্য শত্রু এবং ভিজ্যুয়াল ইফেক্টগুলির জন্য প্রি-ওয়ারিং অবজেক্ট পুলগুলি বিবেচনা করুন। আপনি আপনার দৃশ্যে লোডিং বা পরিচিতি সিকোয়েন্সের সময় একাধিক "সূচনা ফ্রেমে" অতিরিক্ত অপ্টিমাইজেশান ছড়িয়ে দিতে পারেন।
গেম অবজেক্ট পুলিং ম্যানেজমেন্ট সম্পর্কিত ইউনিটি অ্যাসেট স্টোরে আপনি অনেক থার্ড-পার্টি পুলিং অ্যাসেট খুঁজে পেতে পারেন। আপনি আপনার নিজের তৈরি করতে পারেন. ইউনিটি শিখতে অবজেক্ট পুলিং এর ভূমিকা দেখুন।
সম্পদ বিতরণ
Google Play-এ প্রথম নিয়োজিত হলে আপনার অ্যাপ্লিকেশন কতটা বড় হতে পারে তার সীমাবদ্ধতা রয়েছে৷ আপনার গেমের আকার এবং প্রকৃতির উপর নির্ভর করে, খেলোয়াড়দের আপনার ইচ্ছামত অভিজ্ঞতা পাওয়ার জন্য আপনার কিছু বা সমস্ত গেমের সংস্থান (চরিত্রের মডেল, পরিবেশ, UI উপাদান এবং আরও অনেক কিছু) প্রয়োজন হতে পারে।
আপনার গেমের ইনস্টল-টাইমে, দ্রুত ফলো করা বা অন-ডিমান্ডে প্রয়োজন এমন সম্পদগুলি পরিচালনা করতে আপনি Play Asset Delivery (PAD) পরিষেবা ব্যবহার করতে পারেন। ইউনিটি অ্যাসেট বান্ডেলগুলি PAD সমর্থন করার জন্য একত্রিত করা হয়েছে এবং কোন উপাদানগুলি সরবরাহ করা হয়েছে তা নির্দিষ্ট করতে আপনি টুলটি ব্যবহার করতে পারেন।
ঠিকানাযোগ্য
আপনি যদি Addressables নামকরণ সিস্টেম প্রস্তুত এবং পর্যালোচনা করেন তবে রানটাইমে গতিশীল সংস্থান - যেমন prefabs, টেক্সচার এবং সাউন্ড ফাইল - সেট আপ করা আর একটি জটিল কাজ নয়। আপনি কীভাবে আপনার সামগ্রী তৈরি করেন এবং লোড করেন তা থেকে আপনি কীভাবে আপনার সামগ্রী সাজান তা ঠিকানাযোগ্য সম্পদগুলিকে দ্বিগুণ করে। অ্যাড্রেসেবল সিস্টেম রিসোর্স ফোল্ডার এবং অ্যাসেট বান্ডেলগুলিকে প্রতিস্থাপন করে যাতে আপনি কীভাবে সম্পদের উল্লেখ করেন এবং রানটাইমে সেগুলি লোড করেন।
একটি উদাহরণের জন্য, GitHub এ Addressables প্যাকেজ ব্যবহার করে ডেমো প্রকল্প দেখুন। Addressables এর উন্নয়ন সম্পর্কে বিস্তারিত জানার জন্য, Unity Blog-এ Addressable Asset System দেখুন।
অ্যাড্রেসেবল অ্যাসেট লেআউটের সাথে, খুব কম বা অনেক বেশি অ্যাসেটকে সাধারণ বান্ডিলে বান্ডিল করার সুবিধা এবং অসুবিধা রয়েছে। Addressables-এর সাথে বিষয়বস্তু ব্যবস্থাপনা সম্পর্কে আরও জানতে, Addressables-এর সাহায্যে আপনার বিষয়বস্তু ব্যবস্থাপনা সরলীকরণ দেখুন।
আপনি একটি স্বতন্ত্র ডেমো সেট আপ করতে পারেন এবং Addressables সিস্টেমের সাথে আরামদায়ক পেতে অ্যাক্সেসের মোডগুলির সাথে পরীক্ষা করতে পারেন। এছাড়াও আপনি Unity 2019.3 এবং নতুনের জন্য ওপেন সোর্স প্রকল্প BuildLayout Explorer দেখতে পারেন এবং Addressables দ্বারা তৈরি করা buildlayout.txt
রিপোর্ট পরিদর্শন করতে পারেন।
চপ চপের সম্পদ, একটি ইউনিটি ওপেন প্রজেক্ট, সমস্ত লোডিং এবং আনলোড করার জন্য অ্যাড্রেসেবল সিস্টেম ব্যবহার করে প্যাকেজ করা হয়েছিল। ঠিকানাযোগ্য সম্পদ সহ প্যাকেজিং বিষয়বস্তু দেখুন | অ্যাড্রেসেবল বান্ডেলগুলি কনফিগার করার কাঠামো এবং সেটআপের ওয়াকথ্রু-এর জন্য প্রজেক্টস ডেভলগ খুলুন ।
চপ চপ প্রজেক্টে, ডিফল্টরূপে লোড করা একমাত্র দৃশ্য, ইনিশিয়ালাইজেশন সিন, প্রজেক্টের সম্পদের সরাসরি লিঙ্কের পরিবর্তে AssetReferences
ব্যবহার করার জন্য কনফিগার করা হয়েছিল (দৃশ্য, প্রিফ্যাব, এবং আরও)।
ইউনিটি ওপেন প্রজেক্টের সোর্স কোড: চপ চপ গিটহাবে উপলব্ধ। যদিও প্রকল্পটি আর বিকাশে নেই, গিট রেপো এবং ডকুমেন্টেশন এখনও উপলব্ধ।
তৃতীয় পক্ষের প্লাগইন
আপনি যদি থার্ড-পার্টি প্লাগইনগুলি ব্যবহার করেন, যেমন ইউনিটি অ্যাসেট স্টোরে, তাহলে নিশ্চিত করুন যে আপনি ফোল্ডারগুলি পর্যালোচনা করেছেন এবং সংস্থান ফোল্ডারগুলি থেকে অপ্রয়োজনীয় সম্পদগুলি সরিয়েছেন৷ বিল্ড প্রক্রিয়া চলাকালীন, ইউনিটি সমস্ত সম্পদ সংগ্রহ করে যা সম্পদ ফোল্ডারে অন্তর্ভুক্ত থাকে এবং রানটাইমে অ্যাক্সেসযোগ্য একটি একক বান্ডিলে প্যাকেজ করে। এটি চূড়ান্ত প্যাকেজে ফোলা যোগ করতে পারে এবং প্রায়শই প্রয়োজন হয় না।
দ্রুত সমস্ত সংস্থান ফোল্ডারগুলি সনাক্ত করতে, প্রকল্প প্যানেলে সংস্থানগুলি অনুসন্ধান করুন৷ তারপরে এটিতে কী রয়েছে এবং এটি আপনার গেমের জন্য প্রয়োজনীয় কিনা তা সনাক্ত করতে আপনি প্রতিটি নির্বাচন করতে পারেন।
প্রকাশ এবং বজায় রাখা
আপনি যখন আপনার মোবাইল গেমটি লঞ্চ করার জন্য প্রস্তুত হন, তখন সিদ্ধান্ত নিন আপনি কাকে রিলিজ করতে চান, কিভাবে আলফা এবং বিটা টেস্টিং করবেন এবং কিভাবে লঞ্চের পর কর্মক্ষমতা নিরীক্ষণ ও ট্র্যাক করবেন।
একটি সীমিত প্রকাশ থেকে প্রতিক্রিয়া বিশ্লেষণ
আপনি একটি সীমিত, লক্ষ্যযুক্ত দর্শকদের কাছে লঞ্চ করতে পারেন এবং বৃহত্তর-স্কেল বিটা পরীক্ষা করতে পারেন, বা সমস্ত বাজারে সম্পূর্ণ উপলব্ধতার জন্য আপনার গেম সক্রিয় করতে পারেন৷ একটি সীমিত প্রকাশের সাথে, আপনি একটি বৃহত্তর লাইভ দর্শক এবং ডিভাইসের সংগ্রহের উপর ভিত্তি করে আপনার অ্যাপ্লিকেশন কর্মক্ষমতা টিউন করতে পারেন।
উদাহরণস্বরূপ, আপনি আপনার অ্যাপ্লিকেশন পারফরম্যান্স এবং খেলোয়াড়দের প্রবণতা সম্পর্কে অন্তর্দৃষ্টি পেতে ইউনিটির জন্য অ্যান্ড্রয়েড পারফরম্যান্স টিউনার এবং ইউনিটির জন্য গুগল অ্যানালিটিক্স ব্যবহার করতে পারেন, যেখান থেকে আপনার ডেভেলপমেন্ট টিম আপডেটগুলি টিউন এবং পুশ করতে পারে৷ আপনি একই ধরনের জেনারে সিক্যুয়েল বা সম্পর্কিত গেমের পরিকল্পনা করতে আপনার বিশ্লেষণ ডেটা ব্যবহার করতে পারেন।
আলফা এবং বিটা পরীক্ষা
আপনি Google Play Console- এ আপনার অ্যাপ্লিকেশান প্রোফাইল সেট আপ করার পরে, আপনি সর্বজনীন আলফা এবং বিটা টেস্ট বিল্ড প্রস্তুত করতে পারেন এবং প্রাক-লঞ্চ পর্যালোচনার জন্য সীমিত দর্শকদের কাছে বিতরণ করতে পারেন৷ সীমিত শ্রোতাদের কাছে লঞ্চ করার মাধ্যমে, আপনি একটি বৃহত্তর ডিভাইসের সাথে যেকোন চূড়ান্ত সমস্যা সমাধান করতে পারেন এবং প্রাথমিক প্রতিক্রিয়া সংগ্রহ করতে পারেন যা আপনি বিশ্বব্যাপী প্রকাশে লাইভ হওয়ার আগে প্রতিক্রিয়া জানাতে পারেন।
আপনার ইউনিটি বিল্ডগুলি অ্যান্ড্রয়েড অ্যাপ বান্ডেলের মাধ্যমে বিতরণ করা হয়। তথ্যের জন্য, ম্যানুয়ালটি দেখুন: ইউনিটি থেকে Google Play-তে বিতরণ , যা APK ফাইল থেকে AAB ফর্ম্যাটে পরিবর্তনগুলিও বর্ণনা করে৷
মনিটর এবং ট্র্যাক
আপনার গেমের লাইভঅপস এবং ডিস্ট্রিবিউশন পর্বের সময়, আপনি Android Vitals ব্যবহার করতে পারেন এমন ডিভাইসে পারফরম্যান্সের সমস্যাগুলি ট্র্যাক করতে সাহায্য করতে যা আপনার ডেভেলপমেন্ট এবং পরীক্ষার সময় অ্যাক্সেস ছিল না। বিশদ বিবরণের জন্য, রিচ এবং ডিভাইস এবং অ্যান্ড্রয়েড ভাইটালগুলিতে গেমগুলির জন্য নতুন কী তা দেখুন৷
প্রায়শই বৃহত্তর উন্নয়ন দলগুলির অনন্য এবং কাস্টম গেম টেলিমেট্রি পাইপলাইন থাকে যা ডিভাইসের কর্মক্ষমতা সম্পর্কিত মেট্রিক্স প্রদান করে। ফ্রেম রেট, গ্রাফিক্যাল ফিডেলিটি, লোডিং টাইম এবং লোডিং পরিত্যাগ সম্পর্কিত ডায়াল-ইন মেট্রিক্সের জন্য অ্যান্ড্রয়েড পারফরম্যান্স টিউনার (এপিটি) এবং সংশ্লিষ্ট ইউনিটি প্লাগইন-এর সুবিধা নিতে ভুলবেন না। আপনার ইউনিটি গেমে অ্যান্ড্রয়েড পারফরম্যান্স টিউনারকে একীভূত করার ধাপে ধাপে নির্দেশিকা অনুসরণ করুন।
আপনি লাইভ যাওয়ার পরে আপনার গেমের জীবনচক্র থামবে না। নিরীক্ষণ, রক্ষণাবেক্ষণ, এবং কর্মক্ষমতা এবং প্রতিক্রিয়ার প্রতিক্রিয়া খুশি ব্যবহারকারীদের জন্য গুরুত্বপূর্ণ, ইতিবাচক পর্যালোচনা এবং সমস্ত বাজার জুড়ে আপনার গেমের চূড়ান্ত গ্রহণ।