পাওয়ার খরচ অপ্টিমাইজ করার জন্য অ্যান্ড্রয়েড ১৫ গেমের জন্য ডিফল্টভাবে ৬০ হার্টজ রিফ্রেশ রেট সেট করে। ১২০ এফপিএস-এর মতো উচ্চতর ফ্রেম রেট পেতে হলে, এখন আপনাকে ফ্রেম রেট এপিআই (Frame Rate API) অথবা সোয়াপি (Swappy) লাইব্রেরি ব্যবহার করে স্পষ্টভাবে তার জন্য অনুরোধ করতে হবে।
তবে, ব্যাটারির স্তর বা ডিভাইসের তাপমাত্রার মতো বিষয়ের উপর ভিত্তি করে সিস্টেম এই অনুরোধটি অগ্রাহ্য করতে পারে। যদিও উচ্চতর রিফ্রেশ রেট ভিজ্যুয়াল মসৃণতা বাড়ায়, তবে এগুলোর জন্য বেশি শক্তির প্রয়োজন হয় এবং অতিরিক্ত তাপ উৎপন্ন হয়। তাই, ব্যবহারকারীদের তাদের পছন্দের রিফ্রেশ রেট বেছে নেওয়ার সুযোগ দেওয়া এবং একটি ভারসাম্যপূর্ণ ব্যবহারকারীর অভিজ্ঞতা নিশ্চিত করতে পারফরম্যান্স সতর্কতার সাথে পর্যবেক্ষণ করা অত্যন্ত গুরুত্বপূর্ণ।
setFrameRate() API ব্যবহার করুন
setFrameRate() এপিআই গেম ডেভেলপারদের একটি নির্দিষ্ট ডিসপ্লে রিফ্রেশ রেট ব্যবহার করার সুযোগ দেয়। এটি করার জন্য দুটি ধাপ রয়েছে:
- ডিভাইস এবং অ্যান্ড্রয়েড সংস্করণের সামঞ্জস্য যাচাই করুন।
-
setFrameRate()ব্যবহার করে উচ্চ FPS-এর জন্য অনুরোধ করুন।
ডিভাইস এবং অ্যান্ড্রয়েড সংস্করণের সামঞ্জস্যতা যাচাই করুন:
ডিভাইসটি 90Hz, 120Hz বা অন্য কোনো রিফ্রেশ রেট সমর্থন করে কিনা তা জানতে Display.getSupportedModes() মেথডটি ব্যবহার করুন। যদি ডিভাইসটি 60Hz-এ সীমাবদ্ধ থাকে, তবে এই সীমা অতিক্রম করা সম্ভব নয়।
কোটলিন
val display = windowManager.defaultDisplay
val supportedModes = display.supportedModes
for (mode in supportedModes) {
Log.d("DisplayInfo", "Supported mode: ${mode.physicalWidth}x${mode.physicalHeight}, ${mode.refreshRate}Hz")
}
উচ্চ এফপিএস অনুরোধ করুন
আপনার রেন্ডারিং লুপ শুরু হওয়ার সময়, গেম উইন্ডো ইনিশিয়ালাইজেশনের সময়, অথবা যখন টার্গেট FPS-এর ডিসপ্লে রিফ্রেশ রেট পরিবর্তন করার প্রয়োজন হয়, তখন setFrameRate() কল করুন।
আপনি উচ্চতর রেটের জন্য অনুরোধ করলেও, পাওয়ার সেভিং মোড বা থার্মাল থ্রটলিং-এর মতো কারণগুলির জন্য সিস্টেম রিফ্রেশ রেট ৬০Hz-এ সীমাবদ্ধ করে দিতে পারে। যদি আপনার গেমের রেন্ডারিং পারফরম্যান্স লক্ষ্যমাত্রার FPS-এ না পৌঁছায়, তবে উচ্চতর রিফ্রেশ রেটের জন্য অনুরোধ করলে অপ্রয়োজনীয় বিদ্যুৎ খরচ হতে পারে এবং ডিভাইসের তাপমাত্রা বেড়ে যেতে পারে।
নিম্নলিখিত কোড স্নিপেটটিতে দেখানো হয়েছে কিভাবে setFrameRate() API ব্যবহার করে অতিরিক্ত উচ্চ রিফ্রেশ রেট এড়ানো যায়।
কোটলিন
val targetFps = 120f
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
window.setFrameRate(
targetFps,
Window.FrameRateCompatibility.FRAME_RATE_COMPATIBILITY_FIXED_SOURCE,
0
)
}
আরও বিস্তারিত তথ্যের জন্য ফ্রেমরেট পৃষ্ঠাটি দেখুন।
ফ্রেম পেসিং লাইব্রেরি ব্যবহার করুন
ফ্রেম পেসিং লাইব্রেরি , বা সোয়াপি (Swappy), হলো একটি ওপেন-সোর্স লাইব্রেরি যা C/C++ অ্যান্ড্রয়েড গেম ইঞ্জিনে VSync ম্যানেজমেন্ট এবং ফ্রেম শিডিউলিং সহজ করার জন্য ডিজাইন করা হয়েছে। এই টুলটি রিফ্রেশ রেট অপ্টিমাইজ করার প্রক্রিয়াকে সুবিন্যস্ত করে এবং setFrameRate() এর মতো ফাংশনালিটির উপর কার্যকরভাবে একটি উচ্চ-স্তরের অ্যাবস্ট্রাকশন লেয়ার হিসেবে কাজ করে। এছাড়াও, সোয়াপি এমন কিছু অতিরিক্ত ফিচার প্রদান করে যা আপনার গেমের সার্বিক মসৃণতা এবং পারফরম্যান্স বাড়াতে পারে।
Swappy পেজটিতে আরও বিস্তারিত তথ্য দেওয়া আছে।
সেরা ফলাফলের জন্য অতিরিক্ত পরামর্শ
নিম্নলিখিত বিভাগে কয়েকটি সেরা পরামর্শ তুলে ধরা হলো:
- গতিশীল ফ্রেম রেট পরিবর্তন।
- কর্মক্ষমতা পর্যবেক্ষণ।
- সর্বোচ্চ ডিসপ্লে রিফ্রেশ রেটের উপর ভিত্তি করে এফপিএস বিকল্প প্রদান করুন।
ডাইনামিক ফ্রেম রেট সুইচিং
পারফরম্যান্স এবং বিদ্যুৎ খরচ উভয়ই অপ্টিমাইজ করতে, আপনার গেমে ডাইনামিক ফ্রেম রেট সুইচিং প্রয়োগ করার কথা বিবেচনা করুন। এই কৌশলটি আপনাকে ভারী কাজের দৃশ্যগুলিতে মসৃণ গেমপ্লের জন্য 120Hz-এর মতো উচ্চ রিফ্রেশ রেট এবং কম চাপের মুহূর্তে বা যখন ব্যাটারি লাইফ একটি উদ্বেগের বিষয় হয় অথবা 60FPS-এর নিচে লক্ষ্য থাকে, তখন 60Hz-এর মতো নিম্ন রেটের মধ্যে নির্বিঘ্নে পরিবর্তন করতে দেয়। ক্রমাগত 120Hz-এ চলার ফলে অতিরিক্ত তাপ উৎপন্ন হতে পারে এবং দ্রুত ব্যাটারি শেষ হয়ে যেতে পারে, যা ব্যবহারকারীর জন্য একটি নেতিবাচক অভিজ্ঞতা তৈরি করতে পারে। বর্তমান রেন্ডারিং লোড এবং ডিভাইসের অবস্থার উপর ভিত্তি করে বুদ্ধিমত্তার সাথে রিফ্রেশ রেট সামঞ্জস্য করার মাধ্যমে, আপনি ভিজ্যুয়াল ফিডেলিটি এবং পাওয়ার এফিসিয়েন্সির মধ্যে একটি ভারসাম্য বজায় রাখতে পারেন।
কর্মক্ষমতা পর্যবেক্ষণ
উচ্চতর রিফ্রেশ রেটে আপনার গেমটি যেন সর্বোত্তমভাবে চলে, তা নিশ্চিত করতে ফ্রেম কাউন্টার বা পারফরম্যান্স ওভারলের মতো পারফরম্যান্স মনিটরিং টুল যুক্ত করুন। এই টুলগুলো আপনার গেমের প্রকৃত ফ্রেম রেট সম্পর্কে রিয়েল-টাইম ফিডব্যাক দেয়, যার ফলে আপনি ধারাবাহিকভাবে লক্ষ্যমাত্রা ১২০ FPS অর্জন করছেন কিনা তা যাচাই করতে পারেন।
যদি আপনার ফ্রেম রেট উল্লেখযোগ্যভাবে ওঠানামা করে, তবে নির্দিষ্ট ডিভাইসে অর্জনযোগ্য সর্বনিম্ন ফ্রেম রেটকে লক্ষ্য করার কথা বিবেচনা করুন। এর ফলে সর্বোচ্চ রিফ্রেশ রেট পাওয়ার চেষ্টার সময় যে পারফরম্যান্সের সমস্যা দেখা দিতে পারে, তা ছাড়াই একটি মসৃণ অভিজ্ঞতা পাওয়া সম্ভব।
সর্বোচ্চ ডিসপ্লে রিফ্রেশ রেটের উপর ভিত্তি করে এফপিএস বিকল্প প্রদান করুন।
আপনার গেমটি বর্তমান ডিভাইস দ্বারা সমর্থিত সর্বোচ্চ ডিসপ্লে রিফ্রেশ রেট, যেমন 60Hz, 90Hz বা 120Hz, শনাক্ত করবে এবং সেই অনুযায়ী FPS সেটিংস সীমিত করবে। উদাহরণস্বরূপ, যদি ডিভাইসটি কেবল 60Hz পর্যন্ত সমর্থন করে, তবে প্লেয়ারকে বিভ্রান্তি থেকে বাঁচাতে গেম সেটিংসে 60FPS-এর বেশি যেকোনো অপশন নিষ্ক্রিয় করে দেওয়া বাঞ্ছনীয়।