টিভি গেম তৈরি করুন

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

প্রদর্শন

টিভি স্ক্রিনের জন্য গেম তৈরি করার সময় দুটি প্রধান জিনিস মাথায় রাখতে হবে আপনার গেমটিকে একটি ল্যান্ডস্কেপ ওরিয়েন্টেশনের জন্য ডিজাইন করা এবং কম লেটেন্সির জন্য সহায়তা প্রদান করা।

ল্যান্ডস্কেপ প্রদর্শন সমর্থন

একটি টিভি সবসময় পাশে থাকে: আপনি এটি চালু করতে পারবেন না, এবং কোন প্রতিকৃতি অভিযোজন নেই। সর্বদা আপনার টিভি গেমগুলিকে ল্যান্ডস্কেপ মোডে প্রদর্শন করার জন্য ডিজাইন করুন৷

স্বয়ংক্রিয় কম লেটেন্সি মোড

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

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

ন্যূনতম পোস্ট-প্রসেসিং সক্ষম বা নিষ্ক্রিয় করতে, Window.setPreferMinimalPostProcessing() কে কল করুন, অথবা উইন্ডোর preferMinimalPostProcessing বৈশিষ্ট্যটিকে true সেট করুন। সব ডিসপ্লে ন্যূনতম পোস্ট-প্রসেসিং সমর্থন করে না; একটি নির্দিষ্ট প্রদর্শন এটি সমর্থন করে কিনা তা জানতে, Display.isMinimalPostProcessingSupported() পদ্ধতিতে কল করুন।

ইনপুট ডিভাইস

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

কীবোর্ড লেআউট

Android 13 (API স্তর 33) এবং উচ্চতর, আপনি getKeyCodeForKeyLocation() ব্যবহার করে কীবোর্ড লেআউট নির্ধারণ করতে পারেন। উদাহরণস্বরূপ, আপনার গেমটি WASD কীগুলি ব্যবহার করে আন্দোলন সমর্থন করে, তবে এটি একটি AZERTY কীবোর্ডে সঠিকভাবে কাজ নাও করতে পারে যার বিভিন্ন স্থানে A এবং W কী রয়েছে৷ আপনি নির্দিষ্ট অবস্থানে আপনি আশা করা কীগুলির জন্য কীকোড পেতে পারেন:

কোটলিন

val inputManager: InputManager? = requireActivity().getSystemService()

inputManager?.inputDeviceIds?.map { inputManager.getInputDevice(it) }
    ?.firstOrNull { it.keyboardType == InputDevice.KEYBOARD_TYPE_ALPHABETIC }
    ?.let { inputDevice ->
        keyUp = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_W)
        keyLeft = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_A)
        keyDown = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_S)
        keyRight = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_D)
    }

জাভা

InputManager inputManager = requireActivity().getSystemService(InputManager.class);
InputDevice inputDevice = Arrays.stream(inputManager.getInputDeviceIds())
        .mapToObj(inputManager::getInputDevice)
        .filter( device -> device.getKeyboardType() == InputDevice.KEYBOARD_TYPE_ALPHABETIC)
        .filter(Objects::nonNull)
        .findFirst()
        .orElse(null);
if (inputDevice != null) {
    keyUp = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_W);
    keyLeft = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_A);
    keyDown = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_S);
    keyRight = inputDevice.getKeyCodeForKeyLocation(KeyEvent.KEYCODE_D);
}

এই উদাহরণে, একটি AZERTY কীবোর্ডের সাথে, keyUp KeyEvent.KEYCODE_Z এ সেট করা হয়েছে, keyLeft KeyEvent.KEYCODE_Q এ সেট করা হয়েছে, যেখানে keyDown এবং keyRight যথাক্রমে KeyEvent.KEYCODE_S এবং KeyEvent.KEYCODE_D এ সেট করা হয়েছে। আপনি এখন এই কী কোডগুলির জন্য কী ইভেন্ট হ্যান্ডলার তৈরি করতে পারেন এবং প্রত্যাশিত আচরণ বাস্তবায়ন করতে পারেন।

উদ্ভাসিত

অ্যান্ড্রয়েড ম্যানিফেস্টে কিছু বিশেষ জিনিস গেম অন্তর্ভুক্ত করা উচিত।

হোম স্ক্রিনে আপনার খেলা দেখান

অ্যান্ড্রয়েড টিভি হোম স্ক্রীন নিয়মিত অ্যাপ থেকে আলাদা সারিতে গেমগুলি প্রদর্শন করে। আপনার গেমটিকে গেমের তালিকায় দেখানোর জন্য, আপনার অ্যাপ ম্যানিফেস্টের <application> ট্যাগে android:isGame অ্যাট্রিবিউটটিকে "true" -এ সেট করুন। উদাহরণ স্বরূপ:

<application
    ...
    android:isGame="true"
    ...
>

গেম কন্ট্রোলারদের জন্য সমর্থন ঘোষণা করুন

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

  <uses-feature android:name="android.hardware.gamepad" android:required="false"/>

দ্রষ্টব্য: android:hardware:gamepad সমর্থন নির্দিষ্ট করার সময়, android:required বৈশিষ্ট্যটিকে "true" -এ সেট করবেন না। আপনি যদি এটি করেন, ব্যবহারকারীরা টিভি ডিভাইসে আপনার অ্যাপ ইনস্টল করতে পারবেন না।

ম্যানিফেস্ট এন্ট্রি সম্পর্কে আরও তথ্যের জন্য, অ্যাপ ম্যানিফেস্ট দেখুন।

গুগল প্লে গেম পরিষেবা

যদি আপনার গেমটি Google Play গেম পরিষেবাগুলিকে সংহত করে, তাহলে আপনার অর্জন, সাইন-ইন এবং গেমগুলি সংরক্ষণের সাথে সম্পর্কিত অনেকগুলি বিবেচনার কথা মাথায় রাখা উচিত৷

অর্জন

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

সাইন ইন করুন

আপনার গেমটি লঞ্চের সময় ব্যবহারকারীকে সাইন ইন করার চেষ্টা করা উচিত। যদি প্লেয়ার টানা কয়েকবার সাইন-ইন করতে অস্বীকার করে, তাহলে আপনার গেমটি জিজ্ঞাসা করা বন্ধ করা উচিত। Android-এ সাইন-ইন বাস্তবায়নে সাইন- ইন সম্পর্কে আরও জানুন।

সংরক্ষণ

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

প্লেয়ারকে স্থানীয়ভাবে এবং ক্লাউড-সঞ্চিত ডেটা মুছে ফেলার অনুমতি দেওয়ার জন্য আপনার গেমের UI-তে একটি বিকল্পও প্রদান করা উচিত। আপনি গেমের Settings স্ক্রিনে বিকল্পটি রাখতে পারেন। প্লে পরিষেবাগুলি ব্যবহার করে সংরক্ষিত গেমগুলি বাস্তবায়নের সুনির্দিষ্ট তথ্যের জন্য, Android এ সংরক্ষিত গেমগুলি দেখুন৷

প্রস্থান করুন

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

ওয়েব

অ্যান্ড্রয়েড টিভির জন্য গেমগুলিতে ওয়েব ব্রাউজিং সক্ষম করবেন না৷ Android TV একটি ওয়েব ব্রাউজার সমর্থন করে না।

দ্রষ্টব্য: আপনি সোশ্যাল মিডিয়া পরিষেবাগুলিতে লগইন করার জন্য WebView ক্লাস ব্যবহার করতে পারেন৷

নেটওয়ার্কিং

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