গেমের পারফরম্যান্স বিশ্লেষণ ও অপ্টিমাইজ করুন

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

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

পারফরম্যান্স অপ্টিমাইজেশন প্রক্রিয়ায় নিম্নলিখিত ধাপগুলো অন্তর্ভুক্ত রয়েছে:

  1. সামগ্রিক গেম পারফরম্যান্স পরিমাপ করা। অস্বাভাবিকতা চিহ্নিত করতে প্রতিটি দৃশ্যের ভিত্তিতে পারফরম্যান্সের অবনতি পরিমাপ করা।

  2. সিপিইউ এবং জিপিইউ বাউন্ড চেক করুন। অন্তর্নিহিত কারণটি নির্ণয় করুন, সেটি সিপিইউ-বাউন্ড নাকি জিপিইউ-বাউন্ড।

    টুলসমূহ: আনরিয়েল ইনসাইট, ইউনিটি প্রোফাইলার, পারফেটটো এবং পারফরম্যান্স পরিমাপের টুলসমূহ।

  3. সিপিইউ অপ্টিমাইজেশন। চিহ্নিত পারফরম্যান্সের প্রতিবন্ধকতাগুলো সংশোধন করুন।

    টুলসমূহ: আনরিয়েল ইনসাইট, ইউনিটি প্রোফাইলার, পারফেটটো এবং সিম্পলপার্ফ।

  4. জিপিইউ অপ্টিমাইজেশন। চিহ্নিত পারফরম্যান্সের প্রতিবন্ধকতাগুলো সংশোধন করুন।

    টুলস: রেন্ডারডক, আর্ম মোবাইল স্টুডিও, এজিআই, ভেন্ডর-নির্দিষ্ট টুল।

  5. এ/বি টেস্টিং। বাস্তবায়িত অপটিমাইজেশনগুলোর কার্যকারিতা পুঙ্খানুপুঙ্খভাবে যাচাই করার জন্য এ/বি টেস্টিং পরিচালনা করুন।

    টুলসমূহ: আনরিয়েল ইনসাইট, ইউনিটি প্রোফাইলার, পারফেটটো, এবং পারফরম্যান্স পরিমাপের টুল, সিপিইউ বা জিপিইউ ফ্রিকোয়েন্সি লক, এবং রেন্ডারডক।

  6. এই পুনরাবৃত্তিমূলক প্রক্রিয়া (১-৫) ততক্ষণ পর্যন্ত বজায় রাখা হয় যতক্ষণ না লক্ষ্যমাত্রা অনুযায়ী এফপিএস এবং তাপীয় পরামিতি সফলভাবে অর্জিত হয়।

পূর্বশর্ত

গেমের সামগ্রিক পারফরম্যান্স বিশ্লেষণ করুন

আপনাকে অবশ্যই গেমটির সামগ্রিক পারফরম্যান্স পরীক্ষা করতে হবে এবং দৃশ্য-ভিত্তিক পারফরম্যান্সের অবনতি বা অস্বাভাবিকতা শনাক্ত করতে হবে। আপনার গেম অপ্টিমাইজ করার আগে, এর বর্তমান পারফরম্যান্স পরীক্ষা করুন। যেহেতু গেমে অনেক UI এবং দৃশ্য থাকে, তাই উচ্চ CPU বা GPU ব্যবহারকারী দৃশ্যগুলো, অথবা অপ্রত্যাশিতভাবে কাজ করা লেআউটগুলো বিশ্লেষণ করে প্রতি দৃশ্যের পারফরম্যান্সের অবনতি এবং CPU বা GPU ব্যবহারের উপর নজর রাখুন।

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

সিপিইউ বা জিপিইউ-এর প্রতিবন্ধকতা শনাক্ত করুন

যদি গেমটি তার নির্ধারিত FPS-এ না পৌঁছায়, তবে সমস্যাটি CPU-বাউন্ড নাকি GPU-বাউন্ড তা নির্ণয় করুন। অপটিমাইজেশনের সুযোগ খুঁজে বের করার জন্য CPU এবং GPU-এর আচরণ বিশ্লেষণ করা অত্যন্ত গুরুত্বপূর্ণ, এমনকি গেম খেলার সময় ডিভাইসটি গরম হয়ে গেলেও বা অতিরিক্ত শক্তি ব্যবহার করলেও। সিস্টেমটি CPU-বাউন্ড নাকি GPU-বাউন্ড, তা খুঁজে বের করার জন্য আপনি বিভিন্ন পদ্ধতি ব্যবহার করতে পারেন।

  1. ট্রেস ডেটা বিশ্লেষণ করুন: ট্রেস ডেটা বিশ্লেষণ করতে আপনার পছন্দের টুলটি ব্যবহার করুন:

    • আনরিয়েল ইনসাইট (আনরিয়েল ইঞ্জিন): GameThread , RenderThread , এবং RHIThread এর টাইমিং দেখতে ট্রেসটি বিশ্লেষণ করুন।
      • যদি GameThread বা RenderThread ফ্রেম টাইমের সীমা অতিক্রম করে (উদাহরণস্বরূপ, 30 FPS-এর জন্য 33.3ms), তাহলে গেমটি CPU-বাউন্ড হয়ে যায়।
      • যদি RHIThread দীর্ঘক্ষণ ধরে চলে অথবা ফ্রেম টাইমের বেশিরভাগ অংশ দখল করে, তাহলে গেমটি GPU-বাউন্ড
    আনরিয়েল ইনসাইট ট্রেস টাইমলাইন যা গেমথ্রেড, রেন্ডারথ্রেড এবং আরএইচআইথ্রেডের এক্সিকিউশন টাইম দেখাচ্ছে
    চিত্র ২. GameThread, RenderThread, এবং RHIThread সহ আনরিয়েল ইনসাইট ট্রেস (বড় করে দেখতে ক্লিক করুন)।
    • ইউনিটি প্রোফাইলার (ইউনিটি): যদি রেন্ডার থ্রেড Gfx.PresentFrame বা <GraphicsAPIName>.WaitForLastPresent দেখানোর সময়ে মেইন থ্রেড Gfx.WaitForPresentOnGfxThread এর মতো মার্কারে উল্লেখযোগ্য সময় ব্যয় করে, তাহলে গেমটি GPU-বাউন্ড
    ইউনিটি প্রোফাইলার টাইমলাইনে দেখাচ্ছে যে মেইন থ্রেড Gfx.WaitForPresentOnGfxThread-এর জন্য অপেক্ষা করছে।
    চিত্র ৩. ইউনিটি প্রোফাইলারের জিপিইউ-বাউন্ড উদাহরণ (বড় করে দেখতে ক্লিক করুন)।
    • পারফেটটো: সিপিইউ কোর অ্যাসাইনমেন্ট এবং থ্রেড এক্সিকিউশনের বিবরণ বিশ্লেষণ করে। এই বিশ্লেষণটি থ্রেড এক্সিকিউশন তথ্যের বিশদ পর্যালোচনার মাধ্যমে পারফরম্যান্সের প্রতিবন্ধকতা শনাক্ত করতে সহায়তা করে।
    • সিপিইউ ওভারহেড: ট্রেস থেকে বোঝা যাচ্ছে যে, VSync-এর সাথে মিলিতভাবে GameThread এবং RenderThread এর উপর থাকা কাজের চাপ RHI থ্রেডের QueuePresent এ বিলম্বের জন্য দায়ী, যা একটি সিপিইউ-বাউন্ড পরিস্থিতি নির্দেশ করে।

      পারফেট্টো ট্রেস, যা GameThread, RenderThread, এবং RHIThread-এর এক্সিকিউশন টাইম দেখাচ্ছে।
      চিত্র ৪. সিপিইউ কার্য সম্পাদনের বিবরণসহ পারফেট্টো ট্রেস (বড় করে দেখতে ক্লিক করুন)।
    • জিপিইউ ওভারহেড: যদি জিপিইউ সম্পন্ন হওয়ার সময় ফ্রেম টাইমের সীমা, যেমন ২৫ মিলিসেকেন্ড, অতিক্রম করে, তাহলে গেমটি জিপিইউ-বাউন্ড হয়ে যায়। ট্রেসটি নির্দেশ করে যে জিপিইউ সম্পন্ন হওয়ার সময় ২৫ মিলিসেকেন্ড অতিক্রম করেছে, যা একটি জিপিইউ-বাউন্ড পরিস্থিতিকে বোঝায়।

      পারফেট্টো ট্রেস দেখাচ্ছে যে জিপিইউ কমপ্লিশন ব্লকটি জিপিইউ কমপ্লিশনের জন্য অপেক্ষা করছে।
      চিত্র ৫. জিপিইউ ওভারহেডের বিবরণসহ পারফেট্টো ট্রেস (বড় করে দেখতে ক্লিক করুন)।
  2. আনরিয়েল ইঞ্জিনের স্ট্যাট কমান্ডগুলো ব্যবহার করুন:

    • stat unit : গেম, ড্র এবং RHI থ্রেডগুলিতে বরাদ্দ করা সময়ের তুলনা করুন। যদি গেম এবং ড্র-এর সময় কম হয় কিন্তু RHI-এর সময় ধারাবাহিকভাবে ফ্রেম টাইমের সীমা অতিক্রম করে, তাহলে গেমটি GPU-বাউন্ড । উদাহরণস্বরূপ, যদি প্রয়োজনীয় FPS ৩০ হয় (যা প্রতি ফ্রেমে ৩৩.৩৩ms-এর সমতুল্য), এবং গেম ও ড্র উভয় থ্রেডই ধারাবাহিকভাবে ১০-১৫ ms সীমার মধ্যে থাকে, কিন্তু RHI ধারাবাহিকভাবে ৩০ms অতিক্রম করে, তবে এটি জোরালোভাবে একটি GPU-বাউন্ড পরিস্থিতির ইঙ্গিত দেয়।
    ফ্রেম, গেম, ড্র, জিপিইউ এবং আরএইচআইটি এক্সিকিউশন টাইম প্রদর্শনকারী স্ট্যাট ইউনিট ওভারলে।
    চিত্র ৬। স্ট্যাট ইউনিট জিপিইউ-বাউন্ড কন্ডিশনের অনুমানকে সহজতর করে।
    • stat VulkanRHI : কিউ সাবমিট এবং কিউ প্রেজেন্ট সময়কাল পরীক্ষা করুন।
    Stat VulkanRHI ওভারলে যা Queue Submit এবং Queue Present-এর জন্য সাইকেল কাউন্টার প্রদর্শন করে।
    চিত্র ৭. Stat VulkanRHI জিপিইউ-বাউন্ড কন্ডিশনের এস্টিমেশন সহজতর করে (বড় করে দেখতে ক্লিক করুন)।
    • stat slow : প্রতিবন্ধকতা চিহ্নিত করতে গেম, রেন্ডার এবং RHI থ্রেডগুলিতে বরাদ্দকৃত সময় পুঙ্খানুপুঙ্খভাবে পরীক্ষা করুন।
  3. পারফরম্যান্স মেট্রিক্স পরীক্ষা করুন: আপনার বিস্তারিত গেম পারফরম্যান্স বিশ্লেষণের ফলাফল ব্যবহার করুন। অ্যান্ড্রয়েডে:

    • সিপিইউ-বাউন্ড: সিপিইউ (স্বাভাবিককৃত) ব্যবহার ১৫%-এর বেশি, সাথে জিপিইউ ব্যবহার ও এফপিএস কম।
    • GPU-বাউন্ড: GPU ব্যবহার ৯০%-এর বেশি।

    সাধারণত, যদি FPS এবং GPU ব্যবহার কম থাকে, কিন্তু CPU ব্যবহার ১৫% ছাড়িয়ে যায়, তবে পরিস্থিতিটিকে CPU-বাউন্ড বলে গণ্য করা যেতে পারে।

    সিপিইউ-বাউন্ড এবং জিপিইউ-বাউন্ড পরিস্থিতি তুলে ধরে পারফরম্যান্স মেট্রিক্স টেবিল
    চিত্র ৮. সিপিইউ এবং জিপিইউ ব্যবহার সহ পারফরম্যান্স মেট্রিক্স।

সিপিইউ পারফরম্যান্স অপ্টিমাইজ করুন

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

বিস্তারিত নির্দেশনার জন্য, অ্যান্ড্রয়েডের জন্য সিপিইউ, জিপিইউ অপ্টিমাইজেশন টিপস দেখুন।

জিপিইউ পারফরম্যান্স অপ্টিমাইজ করুন

বিশ্লেষণে যদি দেখা যায় গেমটি GPU-বাউন্ড, তাহলে রেন্ডার পাইপলাইন এবং ড্র কলগুলো বিশ্লেষণ করতে ফ্রেম ডিবাগার ব্যবহার করে আরও তদন্ত করুন।

বিস্তারিত নির্দেশনার জন্য, অ্যান্ড্রয়েডের জন্য সিপিইউ, জিপিইউ অপ্টিমাইজেশন টিপস দেখুন।

অপ্টিমাইজেশনের কার্যকারিতা যাচাই করুন

  1. এ/বি টেস্টিং পরিচালনা করুন: প্রয়োগকৃত অপটিমাইজেশনগুলো সহ একটি বিল্ড তৈরি করুন।
  2. পারফরম্যান্স পরিমাপ করুন: অপ্টিমাইজ করা বিল্ডের পারফরম্যান্স পরিমাপ করতে প্রাথমিক বিশ্লেষণের মতোই একই টুল ও পদ্ধতি ব্যবহার করুন।
  3. ফলাফল তুলনা করুন: চিহ্নিত প্রতিবন্ধকতাগুলো সমাধান হয়েছে এবং FPS ও তাপীয় লক্ষ্যমাত্রা পূরণ হয়েছে কিনা, তা নিশ্চিত করতে নতুন পারফরম্যান্স ডেটার সাথে প্রাথমিক ডেটা তুলনা করুন।
  4. পুনরাবৃত্তি: কাঙ্ক্ষিত পারফরম্যান্স অর্জিত না হওয়া পর্যন্ত বিশ্লেষণ এবং অপ্টিমাইজেশনের ধাপগুলো পুনরাবৃত্তি করুন।

আরও দেখুন