অ্যান্ড্রয়েড ডিভাইসগুলি বিভিন্ন ফর্ম ফ্যাক্টর এবং স্ক্রীন আকারে উপলব্ধ। সাধারণ বিভাগগুলির মধ্যে রয়েছে:
- মোবাইল ফোন
- ট্যাবলেট
- টেলিভিশন এবং টেলিভিশন সেট-টপ বক্স
- ক্রোমের জন্য অ্যান্ড্রয়েড রানটাইম সহ ল্যাপটপ
এই বৈচিত্র্যের অর্থ হল আপনার গেমটি বিভিন্ন স্ক্রীন রেজোলিউশনের একটি পরিসরের মুখোমুখি হবে, প্রায়শই বিভিন্ন অনুপাতের সাথে। যেমন:
- 19:9 অনুপাত (2280x1080) সহ ল্যান্ডস্কেপ ওরিয়েন্টেশনে একটি ফোন
- 20:9 অনুপাত (3200x1400) সহ ল্যান্ডস্কেপ ওরিয়েন্টেশনে একটি ভিন্ন ফোন
- 16:9 আকৃতির অনুপাত সহ একটি 1080p HD টিভি (1920x1080)
- 4:3 অনুপাত সহ একটি ট্যাবলেট (2048x1536)
ডিভাইসের স্ক্রীন রেজোলিউশন এবং আকৃতির অনুপাত নির্বিশেষে সঠিক উপস্থাপনা নিশ্চিত করতে আপনার গেমের ডিজাইনে এই পার্থক্যগুলিকে বিবেচনায় নেওয়া উচিত।
ডিফোল্ড প্রজেকশন মোড
একটি ডিফোল্ড প্রকল্পের একটি কনফিগারযোগ্য বেস রেজোলিউশন রয়েছে। এই রেজোলিউশনটি প্রদর্শন বিভাগে প্রস্থ এবং উচ্চতা ক্ষেত্রগুলি ব্যবহার করে game.project
ফাইলে সেট করা হয়েছে।
![ডিফোল্ড প্রজেক্ট ডিসপ্লে সেটিংস](https://developer.android.com/static/images/games/engines/defold/Resolution_settings.png?authuser=4&hl=bn)
Defold-এর ডিফল্ট আচরণ হল বেস রেজোলিউশনে রেন্ডার করা এবং তারপরে প্রাপ্ত চিত্রটিকে লক্ষ্য ডিভাইসের প্রকৃত রেজোলিউশনে স্কেল করা। ডিফোল্ড এই মোডটিকে প্রসারিত অভিক্ষেপ হিসাবে উল্লেখ করে। স্ট্রেচ প্রজেকশন মূল আকৃতির অনুপাত সংরক্ষণ করে না। কিছু গেমের জন্য, এই ডিফল্টটি দৃশ্যত গ্রহণযোগ্য হতে পারে। স্ট্যান্ডার্ড ডিফোল্ড রেন্ডারিং স্ক্রিপ্টে দুটি অতিরিক্ত প্রজেকশন বিকল্প রয়েছে যা বেস অ্যাসপেক্ট রেশিও সংরক্ষণ করে: ফিক্সড ফিট প্রজেকশন এবং ফিক্সড প্রজেকশন ।
নিচের উদাহরণটি ডিফোল্ড এডিটরে প্রদর্শিত 480x272 এর বেস রেজোলিউশনের চারপাশে ডিজাইন করা একটি নমুনা প্রকল্প দেখায়।
এই উদাহরণে:
- একটি টাইলম্যাপ বস্তু বেস রেজোলিউশনের সীমানাগুলির চারপাশে একটি ফ্রেম আঁকতে ব্যবহৃত হয়।
- দুটি স্প্রাইট অবজেক্ট এবং একটি টেক্সট অবজেক্ট বেস রেজোলিউশনের সীমানার ভিতরে অবস্থিত।
- বেস রেজোলিউশনের সীমানার বাইরে যথাক্রমে উপরে, নীচে, বাম এবং ডানে চারটি স্প্রাইট অবজেক্ট রয়েছে।
![উদাহরণ প্রকল্প অবজেক্ট লেআউট](https://developer.android.com/static/images/games/engines/defold/Resolution_project.png?authuser=4&hl=bn)
960x544 এর ডিসপ্লে রেজোলিউশনে চালানো হলে, বেস রেজোলিউশনের ঠিক 2x, প্রকল্পটি নিম্নরূপ প্রদর্শিত হয়:
![ডিফল্ট স্ট্রেচ প্রজেকশন ব্যবহার করে 2x বেস রেজোলিউশনে উদাহরণ প্রকল্প](https://developer.android.com/static/images/games/engines/defold/Resolution_base.png?authuser=4&hl=bn)
প্রসারিত অভিক্ষেপ
নিম্নলিখিত উদাহরণগুলি ডিফল্ট স্ট্রেচ প্রজেকশন সহ উইন্ডোটির আকার পরিবর্তন করার ফলাফলগুলি দেখায়, যেখানে আকৃতির অনুপাত সংরক্ষিত হয় না:
![উদাহরণ প্রকল্প প্রসারিত অভিক্ষেপ ব্যবহার করে অনুভূমিকভাবে squashed](https://developer.android.com/static/images/games/engines/defold/Resolution_stretch_small.png?authuser=4&hl=bn)
![প্রসারিত অভিক্ষেপ ব্যবহার করে অনুভূমিকভাবে প্রসারিত উদাহরণ প্রকল্প](https://developer.android.com/static/images/games/engines/defold/Resolution_stretch_large.png?authuser=4&hl=bn)
ফিক্সড-ফিট প্রজেকশন
ফিক্সড-ফিট প্রজেকশন মোড বেস রেজোলিউশন আকৃতির অনুপাত বজায় রাখে। কারণ আকৃতির অনুপাত সংরক্ষিত আছে, অতিরিক্ত স্ক্রীন এলাকা থাকবে যা স্কেল করা বেস রেজোলিউশন দ্বারা আচ্ছাদিত হবে না। আকৃতির অনুপাতের পার্থক্যের প্রধান অক্ষের উপর নির্ভর করে, এই অতিরিক্ত ক্ষেত্রটি উপরে এবং নীচে বা বেস রেজোলিউশনের বাম এবং ডানদিকে বিদ্যমান। ফিক্সড-ফিট প্রজেকশন এই এলাকার জন্য অ্যাকাউন্টে বেস রেজোলিউশন পরিবর্তন করবে। এই পরিবর্তনের ফলে বেস রেজোলিউশন অঞ্চলের বাইরে গেমের দৃশ্যের অতিরিক্ত এলাকা রেন্ডার করা হচ্ছে। ফলস্বরূপ চিত্রটি তারপর ডিসপ্লে রেজোলিউশনে স্কেল করা হয়।
নিম্নলিখিত উদাহরণগুলি 480x272 এর বেস রেজোলিউশনের চেয়ে ভিন্ন আকৃতির অনুপাত সহ একটি ডিসপ্লে রেজোলিউশনে ফিক্সড-ফিট প্রজেকশন রেন্ডারিং প্রদর্শন করে:
![ফিক্সড-ফিট প্রজেকশন ব্যবহার করে একটি বিস্তৃত আকৃতির অনুপাতের উদাহরণ প্রকল্প](https://developer.android.com/static/images/games/engines/defold/Resolution_fixfit_letterbox.png?authuser=4&hl=bn)
![ফিক্সড-ফিট প্রজেকশন ব্যবহার করে লম্বা আকৃতির অনুপাতের উদাহরণ প্রকল্প](https://developer.android.com/static/images/games/engines/defold/Resolution_fixfit_pillarbox.png?authuser=4&hl=bn)
স্থির অভিক্ষেপ
স্থির প্রজেকশন মোড বেস রেজোলিউশন আকৃতির অনুপাত বজায় রাখে এবং একটি নির্দিষ্ট জুম ফ্যাক্টর দ্বারা বেস রেজোলিউশন স্কেল করে। ডিসপ্লে রেজোলিউশন এবং জুম ফ্যাক্টরের উপর নির্ভর করে, বেস রেজোলিউশন এলাকার একটি উপসেট বা সুপারসেট প্রদর্শিত হতে পারে।
নিম্নলিখিত উদাহরণগুলি যথাক্রমে 1x এবং 2x জুম ফ্যাক্টর সহ 644x408 এর স্ক্রীন রেজোলিউশন ব্যবহার করে স্থির প্রজেকশন মোড প্রদর্শন করে:
![স্থির অভিক্ষেপ ব্যবহার করে 1x জুম সহ 644x408 এ উদাহরণ প্রকল্প](https://developer.android.com/static/images/games/engines/defold/Resolution_fixed_1x.png?authuser=4&hl=bn)
![স্থির অভিক্ষেপ ব্যবহার করে 2x জুম সহ 644x408 এ উদাহরণ প্রকল্প](https://developer.android.com/static/images/games/engines/defold/Resolution_fixed_2x.png?authuser=4&hl=bn)
প্রজেকশন মোড পরিবর্তন করুন
রেন্ডারারকে উপযুক্ত বার্তা পাঠিয়ে রানটাইমে সক্রিয় প্রজেকশন মোডটি স্যুইচ করা যেতে পারে। এই বার্তাগুলি স্ট্যান্ডার্ড ডিফোল্ড মেসেজ সিস্টেম ব্যবহার করে পাঠানো হয়। সমস্ত প্রজেকশন মোড বার্তাগুলিতে কাছাকাছি এবং দূরে সমতল Z মানগুলি নির্দিষ্ট করা পরামিতিগুলি অন্তর্ভুক্ত করে।
-- Change to stretch projection mode
msg.post("@render:", "use_stretch_projection", { near = -1, far = 1 })
-- Change to fixed fit projection mode
msg.post("@render:", "use_fixed_fit_projection", { near = -1, far = 1 })
-- Change to fixed projection mode
msg.post("@render:", "use_fixed_projection", { near = -1, far = 1, zoom = 2 })
রেন্ডার স্ক্রিপ্ট ডিফোল্ড করুন
ডিফোল্ড রেন্ডারিং আচরণ একটি বিশেষ স্ক্রিপ্ট ফাইল দ্বারা নিয়ন্ত্রিত হয় যাকে রেন্ডার স্ক্রিপ্ট বলা হয়। অন্যান্য ডিফোল্ড ইঞ্জিন স্ক্রিপ্টের মতো, রেন্ডার স্ক্রিপ্টটি লুয়া প্রোগ্রামিং ভাষায় লেখা হয়। একটি ডিফল্ট রেন্ডার স্ক্রিপ্ট প্রকল্প তৈরিতে অন্তর্ভুক্ত করা হয়, তবে আপনি এটি একটি কাস্টম রেন্ডার স্ক্রিপ্ট দিয়ে প্রতিস্থাপন করতে পারেন।
প্রসারিত, ফিক্সড-ফিট এবং ফিক্সড প্রজেকশন মোড হল ডিফল্ট রেন্ডার স্ক্রিপ্টের বৈশিষ্ট্য। এই মোডগুলির মধ্যে একটি ব্যবহার করার সময়, রেন্ডার স্ক্রিপ্ট গেম অবজেক্ট রেন্ডার করার জন্য একটি 2D অর্থোগ্রাফিক প্রজেকশন ম্যাট্রিক্স তৈরি করে। এই ম্যাট্রিক্সের কনফিগারেশন ব্যবহৃত প্রজেকশন মোডের উপর নির্ভর করে ভিন্ন হয়।
প্রজেকশন ম্যাট্রিক্সের কনফিগারেশন প্রসারিত বা পরিবর্তন করতে আপনি একটি কাস্টম রেন্ডার স্ক্রিপ্ট ব্যবহার করতে পারেন। কার্যকারিতা ডিফল্ট স্ক্রিপ্ট দ্বারা সমর্থিত নয়, যেমন লেটারবক্স বা বিভিন্ন অনুপাতের জন্য পিলারবক্স, কাস্টম রেন্ডার স্ক্রিপ্টগুলির সাথেও প্রয়োগ করা যেতে পারে।
ওপেন সোর্স ডেভেলপাররা রেন্ডার স্ক্রিপ্ট এবং ক্যামেরা প্যাকেজ তৈরি করেছে যা ডিফল্ট ডিফোল্ড স্ক্রিপ্টের চেয়ে বেশি বৈশিষ্ট্য অফার করে। দুটি সাধারণভাবে ব্যবহৃত প্যাকেজ হল রেন্ডারক্যাম এবং ডিফোল্ড-অর্থোগ্রাফিক ।
ডিফোল্ড GUI সিস্টেম
ডিফোল্ড একটি GUI সিস্টেম অন্তর্ভুক্ত করে, যা GUI দৃশ্য ফাইলের ধারণার উপর ভিত্তি করে। GUI দৃশ্য ফাইলগুলিতে নোড নামক বস্তুগুলি অন্তর্ভুক্ত থাকে যা চিত্র বা পাঠ্যের মতো পৃথক UI উপাদানগুলিকে সংজ্ঞায়িত করে।
একটি ডিফোল্ড গেম অবজেক্টে একটি উপাদান হিসাবে GUI দৃশ্য ফাইল যোগ করা যেতে পারে। GUI দৃশ্য এবং তাদের অন্তর্ভুক্ত নোডগুলি আলাদাভাবে রেন্ডার করা হয় এবং সাধারণ গেম অবজেক্ট থেকে কিছুটা আলাদাভাবে কাজ করে। এই পার্থক্যগুলির কারণে, GUI দৃশ্যগুলির সাথে একাধিক ডিসপ্লে রেজোলিউশন সমর্থন করার জন্য GUI সিস্টেম স্থানাঙ্ক এবং GUI নোড পিভট এবং অ্যাঙ্কর সম্পর্কিত অতিরিক্ত বিবেচনা জড়িত।
GUI সিস্টেম স্থানাঙ্ক
সাধারন ডিফোল্ড গেম অবজেক্ট বিশ্ব স্পেসে তাদের স্থানাঙ্ক নির্দিষ্ট করে। একটি ক্যামেরা অবজেক্ট ওয়ার্ল্ড স্পেসকে স্ক্রীন স্পেসে অনুবাদ করে এবং ক্যামেরার বর্তমান ভার্চুয়াল ভিউয়ের মধ্যে পড়ে এমন গেম অবজেক্টগুলি প্রদর্শন করে। GUI সিস্টেম তার নিজস্ব আলাদা ক্যামেরা ব্যবহার করে। একটি GUI দৃশ্যের অন্তর্গত নোডগুলি বিশ্ব স্থান স্থানাঙ্কের পরিবর্তে স্ক্রীন স্পেস স্থানাঙ্ক ব্যবহার করে। যখন ডিসপ্লে রেজোলিউশন GUI নোডগুলি লেআউট করার জন্য ব্যবহৃত প্রজেক্ট বেস রেজোলিউশন থেকে আলাদা হয়, তখন এর ফলে স্ক্রীনের প্রান্ত বা প্যারেন্ট নোডের প্রান্তের তুলনায় নোডের মার্জিন আলাদা হতে পারে। ডিফোল্ডে ডিসপ্লে রেজোলিউশনের পার্থক্যের জন্য জিইউআই লেআউট সামঞ্জস্য করার জন্য একাধিক বিকল্প রয়েছে।
GUI নোড পিভট এবং অ্যাঙ্কর
GUI নোডগুলি X অ্যাঙ্কর এবং Y অ্যাঙ্কর বৈশিষ্ট্যগুলি ব্যবহার করে উল্লম্ব এবং/অথবা অনুভূমিক প্রান্তগুলিতে নোঙ্গর করা যেতে পারে।
- যদি একটি নোডের একটি প্যারেন্ট নোড থাকে, তাহলে অ্যাঙ্করটি প্যারেন্ট নোডের প্রান্তে থাকে।
- যদি একটি নোডের কোনো প্যারেন্ট নোড না থাকে, তাহলে অ্যাঙ্করটি পর্দার প্রান্তে থাকে।
নিম্নলিখিত দুটি GUI নোড সহ একটি নমুনা দৃশ্য চিত্রিত করে, নীচে-বাম এবং উপরের-ডান কোণে কন্ট্রোলার আইকন। উভয় নোডের X অ্যাঙ্কর এবং Y অ্যাঙ্কর None
এ সেট করা আছে:
![GUI উপাদান সহ একটি নমুনা দৃশ্য](https://developer.android.com/static/images/games/engines/defold/Resolution_gui_anchor_none.png?authuser=4&hl=bn)
যখন নোঙ্গর ছাড়াই ডিসপ্লেটির আকার পরিবর্তন করা হয়, তখন নিয়ামক আইকনগুলি বেস রেজোলিউশনের তুলনায় তাদের অবস্থান বজায় রাখে:
![জিইউআই উপাদানগুলির সাথে রিসাইজ করা নমুনা দৃশ্য যেখানে অ্যাঙ্কর কোনোটিতে সেট করা নেই](https://developer.android.com/static/images/games/engines/defold/Resolution_gui_anchor_none_stretch.png?authuser=4&hl=bn)
None
এ সেট করা আছে যখন নীচে-বাম নোডের Y অ্যাঙ্কর Bottom
সেট করা হয় এবং উপরের-ডান নোডের Y অ্যাঙ্কর Top
সেট করা হয়, তখন GUI নোডগুলি উপযুক্ত স্ক্রীন প্রান্তগুলিতে অ্যাঙ্কর করবে:
![জিইউআই উপাদানগুলির সাথে যে অ্যাঙ্করগুলি প্রান্তে সেট করা আছে সেগুলির সাথে পুনরায় আকার দেওয়া নমুনা দৃশ্য৷](https://developer.android.com/static/images/games/engines/defold/Resolution_gui_anchor_edge.png?authuser=4&hl=bn)
Edges
সেট করা আছে একটি GUI নোডের পিভট বৈশিষ্ট্য নোডের সীমা আয়তক্ষেত্রের বিন্দু নির্দিষ্ট করে যা এর স্ক্রীন-স্পেস স্থানাঙ্ক অবস্থান বৈশিষ্ট্যের সাথে মিলে যায়। GUI নোডগুলিকে Center
সেটিংয়ে ডিফল্ট করে, তার অবস্থান বিন্দুকে সীমা আয়তক্ষেত্রের সরাসরি কেন্দ্রে স্থাপন করে। অন্যান্য সম্ভাব্য পিভট সেটিংসের মধ্যে রয়েছে চারটি মূল দিক এবং চারটি কর্ণ। X অ্যাঙ্কর এবং Y অ্যাঙ্কর বৈশিষ্ট্যগুলির সাথে একত্রে ব্যবহার করা হলে পিভট বৈশিষ্ট্য মার্জিন স্পেসগুলির স্পেসিফিকেশনকে সহজ করতে পারে।
নিম্নলিখিত উদাহরণে, নীচে-বাম দিকে কন্ট্রোলার আইকন GUI নোডের অবস্থান 0,0
এবং পিভট Center
সেট করা হয়েছে।
![পিভট সহ একটি GUI নোড কেন্দ্রে সেট করা হয়েছে৷](https://developer.android.com/static/images/games/engines/defold/Resolution_pivot_center.png?authuser=4&hl=bn)
Center
সেট করা পিভট সহ একটি GUI নোড পিভটকে South West
পরিবর্তন করার ফলে নিম্নলিখিত সামঞ্জস্য হয়:
![পিভট সহ একটি GUI নোড দক্ষিণ পশ্চিমে সেট করা হয়েছে](https://developer.android.com/static/images/games/engines/defold/Resolution_pivot_southwest.png?authuser=4&hl=bn)
South West
সেট করা হয়েছেGUI নোড সামঞ্জস্য মোড
ডিসপ্লে রেজোলিউশন বেস প্রজেক্ট রেজোলিউশন থেকে ভিন্ন হলে GUI নোডের আকার পরিবর্তন করা হতে পারে। অ্যাডজাস্ট মোড বৈশিষ্ট্য নোড সামগ্রীর স্কেলিং আচরণ নিয়ন্ত্রণ করে। অ্যাডজাস্ট মোডে তিনটি সেটিংস রয়েছে: Fit
, Zoom
এবং Stretch
।
ফিট
Fit
সেটিং নোড বিষয়বস্তুর দিক অনুপাত সংরক্ষণ করে। নোডের রিসাইজ করা বাউন্ডস আয়তক্ষেত্রের প্রস্থ বা উচ্চতার সাথে মেলানোর জন্য বিষয়বস্তুটি স্কেল করা হয়েছে। বেছে নেওয়া অক্ষটি হল ছোট পার্থক্য সহ। এটি নিশ্চিত করে যে বিষয়বস্তুটি তার আসল আকৃতির অনুপাতের সীমা আয়তক্ষেত্রের ভিতরে ফিট করে।
জুম
Zoom
সেটিং নোড বিষয়বস্তুর দিক অনুপাতও সংরক্ষণ করে। Fit
সেটিং এর মত, Zoom
নোডের রিসাইজ করা বাউন্ড আয়তক্ষেত্রের প্রস্থ বা উচ্চতার সাথে মেলে বিষয়বস্তু স্কেল করে। Fit
বিপরীতে, Zoom
অক্ষটিকে ম্যাচের লক্ষ্য হিসাবে আসল আকার থেকে বড় পার্থক্যের সাথে ব্যবহার করে। এর মানে হল যে স্কেল করা বিষয়বস্তু সীমা আয়তক্ষেত্রকে ওভারফ্লো করতে পারে।
নিম্নলিখিতটি বিভিন্ন অ্যাডজাস্ট মোড সেটিংস সহ দুটি GUI নোডের একটি উদাহরণ দেখায়। নিচের-বাম কন্ট্রোলার আইকনে একটি অ্যাডজাস্ট মোড অফ Fit
রয়েছে, যেখানে উপরের-ডানদিকের কন্ট্রোলার আইকনে Zoom
অ্যাডজাস্ট মোড রয়েছে৷
![বিভিন্ন অ্যাডজাস্ট মোড সেটিংস সহ দুটি GUI নোড](https://developer.android.com/static/images/games/engines/defold/Resolution_adjust_mode_fit_zoom.png?authuser=4&hl=bn)
প্রসারিত
Stretch
সেটিং নোডের বিষয়বস্তুকে স্কেল করে যাতে নোডের রিসাইজ করা সীমা আয়তক্ষেত্রের সাথে ঠিক মেলে। আসল আকৃতির অনুপাত সংরক্ষিত নেই।
GUI লেআউট
GUI লেআউটগুলিকে বিভিন্ন স্ক্রীন রেজোলিউশনে অভিযোজিত করার জন্য ডিফোল্ডের একটি বিকল্প পদ্ধতি রয়েছে: লেআউটগুলি। ডিফল্ট GUI নোড বৈশিষ্ট্য ওভাররাইড করতে একটি GUI দৃশ্যে লেআউট যোগ করা যেতে পারে। একটি লেআউট একটি নির্দিষ্ট স্ক্রিন রেজোলিউশনের সাথে যুক্ত। যখন একাধিক লেআউট উপলব্ধ থাকে, তখন Defold লেআউটটি বেছে নেবে যা প্রকৃত স্ক্রীন রেজোলিউশনের সাথে সবচেয়ে ঘনিষ্ঠভাবে মেলে। একটি GUI নোড দ্বারা ব্যবহৃত ডিফল্ট অবস্থান, আকার, স্কেল বা গ্রাফিক সংস্থান সবই একটি লেআউট দ্বারা ওভাররাইড করা যেতে পারে।