১. ভূমিকা

সর্বশেষ হালনাগাদ: ২০২২-১০-১৮
আপনি পিসিতে গুগল প্লে গেমসের জন্য আপনার গেমটি কীভাবে প্রস্তুত করেন?
গুগল প্লে গেমস আপনার মোবাইল গেমকে উইন্ডোজ পিসিতে নিয়ে আসা সহজ করে তোলে। এর মানে হলো, আপনার গেমের কাঠামো বা ব্যবসায়িক মডেল নতুন করে ডিজাইন না করেই আপনি খেলোয়াড়দের সম্পৃক্ততা এবং দর্শকসংখ্যা বাড়াতে পারেন। তবে, আপনার নতুন পিসি খেলোয়াড়দের সর্বোত্তম অভিজ্ঞতা দেওয়ার জন্য এখনও কিছু পরিবর্তন করতে হবে।
আপনি যা শিখবেন
এই কোডল্যাবটি আপনার গেম তৈরি শুরু করার জন্য প্রয়োজনীয় শর্তাবলীর চেকলিস্টের প্রাথমিক অংশগুলো নিয়ে আলোচনা করে এবং পিসিতে গুগল প্লে গেমসের জন্য আপনার নিজের ইউনিটি গেম প্রস্তুত করতে সাহায্য করে। প্লে গেমস সাইন-অন এবং প্লে ইন্টিগ্রিটি এপিআই-এর মতো আরও গভীর ইন্টিগ্রেশনগুলো এখানে অন্তর্ভুক্ত করা হয়নি।
- ইউনিটি থেকে x86 আর্কিটেকচারের জন্য কীভাবে বিল্ড করতে হয়।
- গুগল প্লে গেমস এমুলেটরে কীভাবে পরীক্ষা ও স্থাপন করবেন।
- আপনার ইউজার ইন্টারফেসকে পিসিতে চমৎকার দেখানোর জন্য কীভাবে পরিবর্তন করবেন।
- আপনি গুগল প্লে গেমস এমুলেটরে চালাচ্ছেন কিনা তা কীভাবে শনাক্ত করবেন এবং সেই অনুযায়ী আপনার গেমটি মানিয়ে নেবেন।
আপনার যা যা লাগবে
- ইউনিটি ২০২০ এলটিএস ইনস্টল (এই কোডল্যাবটি 2020.3.30f1 দিয়ে তৈরি করা হয়েছে)।
- গুগল প্লে গেমস এমুলেটর ।
২. প্রস্তুত হন
একটি নতুন প্রজেক্ট খুলুন বা তৈরি করুন
- 2D প্ল্যাটফর্মার মাইক্রোগেমটি ব্যবহার করে একটি নতুন প্রজেক্ট তৈরি করুন, অথবা আপনার নিজের প্রজেক্টটি খুলুন।

- প্রজেক্ট থেকে, ফাইল -> বিল্ড সেটিংস নির্বাচন করুন এবং নিশ্চিত করুন যে আপনি অ্যান্ড্রয়েডের জন্য বিল্ড করার ব্যবস্থা করে রেখেছেন।

৩. গুগল প্লে গেমস এমুলেটর প্রস্তুত করুন।
প্রথমে এমুলেটরটি ডাউনলোড করে নিন ।
এটি ইনস্টল করার পরে, আপনি একটি উইন্ডোতে একটি অ্যান্ড্রয়েড ডেস্কটপ দেখতে পাবেন:

এটি গেম ডেভেলপমেন্টের জন্য উপযুক্ত একটি পূর্ণাঙ্গ বৈশিষ্ট্যসম্পন্ন ও উচ্চ ক্ষমতাসম্পন্ন অ্যান্ড্রয়েড পরিবেশ। এটি অ্যান্ড্রয়েড ডিবাগ ব্রিজ (adb)-এ লোকালহোস্টের একটি ডিভাইস হিসেবে প্রদর্শিত হবে।
❯ adb devices List of devices attached localhost:6520 device
এমুলেটরটি শনাক্ত করার জন্য আপনার adb- এর একটি সাম্প্রতিক সংস্করণ প্রয়োজন। Android Studio-এর সাথে আসা সংস্করণটি কাজ করে, কিন্তু Unity-এর সাথে আসা adb কাজ নাও করতে পারে। এমুলেটরের সাথে একটি সামঞ্জস্যপূর্ণ সংস্করণ দেওয়া থাকে, এবং আপনি এটি C:\Program Files\Google\Play Games Developer Emulator\current\emulator -এ খুঁজে পাবেন। সেরা ডেভেলপার অভিজ্ঞতার জন্য, আপনি Android Studio ইনস্টল করে আপনার Android SDK পরিচালনা করতে এটি ব্যবহার করতে পারেন।
যদি এমুলেটরটি adb থেকে সংযোগ বিচ্ছিন্ন হয়ে যায়, তাহলে কমান্ড লাইন থেকে এইভাবে পুনরায় সংযোগ করুন:
adb connect localhost:6520
৪. সরাসরি এমুলেটরে বিল্ড ও ডিপ্লয় করার জন্য ইউনিটি কনফিগার করুন (ঐচ্ছিক)
ইউনিটির সাথে আসা adb সংস্করণটি এমুলেটরের সাথে সামঞ্জস্যপূর্ণ নাও হতে পারে। এটি নিশ্চিত করতে, File -> Build Settings নির্বাচন করুন এবং Run Device ডায়ালগটি পরীক্ষা করে দেখুন যে এটি তালিকাভুক্ত আছে কিনা।

আপনার প্রজেক্ট, বিল্ড প্রসেস এবং স্বাচ্ছন্দ্যের উপর নির্ভর করে, আপনি ইউনিটিকে সরাসরি গুগল প্লে গেমস এমুলেটরে ডেপ্লয় করার জন্য কনফিগার করতে পারেন, অথবা একটি APK বিল্ড করে adb install মাধ্যমে ম্যানুয়ালি ডেপ্লয় করতে পারেন। ম্যানুয়ালি ডেপ্লয় করতে সবচেয়ে কম পরিবর্তন করতে হয়, কিন্তু এটি আপনার ইটারেশন সাইকেলকে ধীর করে দিতে পারে।
এই দুটি ধাপ অনুসরণ করে সরাসরি এমুলেটরে স্থাপন করুন:
- অন্য একটি ইউনিটি এসডিকে ব্যবহার করার জন্য ইউনিটিকে কনফিগার করুন, আদর্শগতভাবে যেটি অ্যান্ড্রয়েড স্টুডিও দ্বারা ইনস্টল করা হয়।
- ইউনিটিতে থাকা একটি বাগ সমাধান করতে বিল্ড টুলস-এর ভার্সন আপডেট করুন।
যেহেতু ইউনিটির সাথে আসা অ্যান্ড্রয়েড এসডিকে সংস্করণটি সম্ভবত এমুলেটরটি শনাক্ত করতে পারবে না, তাই আপনি অ্যান্ড্রয়েড স্টুডিও ব্যবহার করে একটি আরও সাম্প্রতিক এসডিকে ইনস্টল করবেন।
- অ্যান্ড্রয়েড স্টুডিও খুলুন এবং Edit -> Preferences -> External Tools নির্বাচন করুন।
-
Android SDK Tools Installed with Unityটিক চিহ্ন তুলে দিন এবং আপনার Android Studio ইনস্টলেশনের পাথ দিন (সাধারণতAppData/Local/Android/sdk)।Android NDKঅপশনটি অপরিবর্তিত রাখুন।

আপনি যখন সংযুক্ত ডিভাইসগুলি রিফ্রেশ করবেন, তখন বিল্ড উইন্ডোতে Google HPE device (localhost:6520) দেখতে পাবেন:

এই বাগের অবস্থা এবং আপনার ইউনিটি ভার্সনের উপর নির্ভর করে, আপনাকে আপনার বিল্ড টুলস ভার্সনও পরিবর্তন করতে হতে পারে। এটি করার জন্য, নিশ্চিত করুন যে আপনি একটি mainTemplate.gradle এবং launcherTemplate.gradle জেনারেট করছেন।
- প্রজেক্ট সেটিংস উইন্ডো খুলে প্লেয়ার সেটিংস- এ যান এবং
Publishing Settingsসেকশনটি খুঁজুন। - বিল্ড অপশনগুলিতে নিচে স্ক্রোল করুন এবং 'কাস্টম মেইন গ্রেডল টেমপ্লেট' ও 'কাস্টম লঞ্চার গ্রেডল টেমপ্লেট' চেক করুন, যা
Assets\Plugins\Android\অধীনে উভয় গ্রেডল ফাইল তৈরি করবে।

-
**BUILDTOOLS**স্ট্রিংটির প্রতিটি উপস্থিতি30.0.0দিয়ে প্রতিস্থাপন করুন। উভয় ফাইলে, কোডের অংশটি এখন নিম্নরূপ হবে:
android {
compileSdkVersion **APIVERSION**
buildToolsVersion '30.0.0'
৫. ক্রোমবুকে স্থাপন করুন (ঐচ্ছিক)
আপনি একটি ChromeOS ডিভাইস ব্যবহার করে Google Play Games এমুলেটরের অ্যাক্সেস ছাড়াই Google Play Games-এর জন্য গেম তৈরি করা শুরু করতে পারেন। পিসির Google Play Games-এর মতোই, ক্রোমবুকগুলিতে কিবোর্ড ও মাউস থাকে, এগুলোর স্ক্রিন বড় হয় এবং এগুলো x86 কনফিগারেশনে পাওয়া যায়। আমরা ক্রোমবুকের সাথে Android Logcat Unity প্লাগইনটি ব্যবহার করব।
- প্যাকেজ ম্যানেজার খুলুন এবং
Unity Registry-তেAndroid Logcatঅনুসন্ধান করুন।

অ্যান্ড্রয়েড ডেভেলপমেন্টের জন্য আপনাকে আপনার ক্রোমবুকটিও কনফিগার করতে হবে। প্রথমে লিনাক্স সক্রিয় করে শুরু করুন।
- সেটিংস -> ডেভেলপার -> লিনাক্স নির্বাচন করুন।

এরপর ADB ডিবাগিং চালু করুন।
- সেটিংস -> ডেভেলপার -> লিনাক্স ডেভেলপমেন্ট এনভায়রনমেন্ট -> অ্যান্ড্রয়েড অ্যাপ তৈরি করুন -> এডিবি ডিবাগিং সক্ষম করুন নির্বাচন করুন।

আপনাকে আপনার ক্রোমবুকের আইপি অ্যাড্রেসটিও সংগ্রহ করতে হবে। এটি করার সবচেয়ে সহজ উপায় হলো...
- আপনার ক্রোমবুকের আইপি অ্যাড্রেস পেতে নেটওয়ার্ক ইনফো আইকনটিতে ক্লিক করুন।


- অ্যান্ড্রয়েড লগক্যাট উইন্ডোটি খুলতে Window -> Analysis -> Android Logcat নির্বাচন করুন।

- ডিভাইস তালিকাটি খুলুন। বর্তমানে কিছু সংযুক্ত না থাকলে সেখানে
No Deviceলেখা থাকতে পারে।

- অন্যান্য সংযোগ বিকল্পগুলিতে ক্লিক করুন এবং আপনার ক্রোমবুকের আইপি ঠিকানা লিখুন।

- কানেক্ট-এ ক্লিক করুন। আপনি একটি সাকসেস উইন্ডো দেখতে পাবেন:

আপনার ক্রোমবুকটি এখন ইউনিটির রান ডিভাইস তালিকায় দেখা যাচ্ছে (এর জন্য আপনাকে প্রথমে স্ক্রিনটি রিফ্রেশ করতে হতে পারে):

এখন আপনি আপনার ক্রোমবুকে গেম স্থাপন করতে পারেন এবং পিসির মতো হার্ডওয়্যারে পরীক্ষা ও উন্নয়ন শুরু করতে পারেন।
৬. একটি টেস্ট বিল্ড ডেপ্লয় করুন
গুগল প্লে গেমস-এর জন্য আপনার গেমের একটি x86 সংস্করণ ডেপ্লয় করা আবশ্যক, যা ডেস্কটপ পিসিতে এর পারফরম্যান্স বেঞ্চমার্ক অর্জনের একটি অংশ। ইউনিটির সমস্ত LTS সংস্করণ x86 এবং x86-64 সামঞ্জস্যপূর্ণ অ্যান্ড্রয়েড বিল্ড ("Chrome OS" লেবেলযুক্ত) তৈরি করতে পারে, এবং ইউনিটি ২০১৮ ও তার পূর্ববর্তী সংস্করণগুলো x86 বিল্ড তৈরি করতে সক্ষম। এই আর্কিটেকচারগুলো আনলক করার জন্য, আপনাকে প্রথমে IL2CPP স্ক্রিপ্টিং ব্যাকএন্ডে যেতে হবে, যা আপনি সম্ভবত arm64 সাপোর্টের জন্য প্রোডাকশনে ইতোমধ্যেই করে থাকেন।
- বিল্ড সেটিংস উইন্ডোটি খুলতে ফাইল -> বিল্ড সেটিংস নির্বাচন করুন, এবং তারপর প্লেয়ার সেটিংস-এ ক্লিক করুন।

- অন্যান্য সেটিংস বিভাগে যান এবং আপনার
Scripting BackendIL2CPPতে পরিবর্তন করুন।

আপনাকে x86 অথবা x86-64 সাপোর্টও সক্রিয় করতে হবে। গুগল প্লে গেমস প্ল্যাটফর্মে গেমটি প্রকাশ করার জন্য শুধুমাত্র x86 সাপোর্ট করা প্রয়োজন, যদিও আমরা x86-64 সাপোর্টের পরামর্শ দিই।

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

আপনি এখন নির্মাণ করার জন্য প্রস্তুত!
- বিল্ড সেটিংস উইন্ডোটি আবার খুলুন এবং বিল্ড অ্যান্ড রান-এ ক্লিক করুন। আপনার গেমটি এমুলেটর উইন্ডোতে দেখা যাবে।

আপনি যদি আপনার গেমটি ডেপ্লয় করতে না পারেন, তাহলে আপনার "রান ডিভাইস" তালিকায় "Google HPE device (localhost:6520)" দেখা যাচ্ছে কিনা তা পরীক্ষা করে দেখুন। যদি এটি অনুপস্থিত থাকে, তবে নিশ্চিত করুন যে HPE_Dev চালু আছে এবং আপনি অ্যান্ড্রয়েড হোম স্ক্রিন দেখতে পাচ্ছেন। এরপরও যদি এটি আপনার ডিভাইসের তালিকায় না আসে, তাহলে আপনি যে adb.exe ব্যবহার করছেন ঠিক সেটি দিয়েই adb connect localhost:6520 চালান। আপনি যদি অ্যান্ড্রয়েড লগক্যাট ইউনিটি প্লাগইন ব্যবহার করেন, তাহলে Tools -> Open Terminal নির্বাচন করে সেই ডিরেক্টরিতে একটি টার্মিনাল খুলুন যেখানে ইউনিটি ব্যবহৃত একই adb.exe রয়েছে।
টার্মিনাল খুলুন হাইলাইট করা হয়েছে স্টাইল="প্রস্থ: ৬২৪.০০ পিক্সেল" উৎস="img/9101ce3c95fb1aa2.png" উৎসসেট="img/9101ce3c95fb1aa2_36.png ৩৬ প্রস্থ, img/9101ce3c95fb1aa2_48.png ৪৮ প্রস্থ, img/9101ce3c95fb1aa2_72.png ৭২ প্রস্থ, img/9101ce3c95fb1aa2_96.png ৯৬ প্রস্থ, img/9101ce3c95fb1aa2_480.png ৪৮০ প্রস্থ, img/9101ce3c95fb1aa2_720.png ৭২০ প্রস্থ, img/9101ce3c95fb1aa2_856.png ৮৫৬ প্রস্থ, img/9101ce3c95fb1aa2_960.png 960w, img/9101ce3c95fb1aa2_1440.png 1440w, img/9101ce3c95fb1aa2_1920.png 1920w, img/9101ce3c95fb1aa2_2880.png 2880w" sizes="(max-width: 840px) 100vw, 856px">
৭. আপনার গেমটি পিসির জন্য উপযোগী করে তুলুন
সম্ভব হলে, প্ল্যাটফর্ম-নিরপেক্ষ মেট্রিক্স বা নির্দিষ্ট কিছু ফিচারের উপস্থিতির উপর ভিত্তি করে আপনার গেমে যেকোনো পরিবর্তন আনার চেষ্টা করুন। উদাহরণস্বরূপ, একজন অ্যান্ড্রয়েড প্লেয়ার মাউস ও কিবোর্ড সংযোগ করতে বা মনিটর লাগাতে পারে, তাই আপনার ডিভাইসের কনফিগারেশন অনুযায়ী কন্ট্রোল স্কিম বা HUD এলিমেন্ট পরিবর্তন করলে, আপনি আপনার সমর্থিত সমস্ত প্ল্যাটফর্মে পিসিতে থাকা গুগল প্লে গেমসের সুবিধা নিতে পারবেন।
প্লেয়ারটি গুগল প্লে গেমস-এ আছে নাকি ক্রোমওএস-এ আছে, তার উপর ভিত্তি করে লজিক পরিবর্তন করা যদি যুক্তিযুক্ত হয়, তবে এই স্ক্রিপ্টটি HPE_EXPERIENCE সিস্টেম ফিচারটি পরীক্ষা করার মাধ্যমে তা শনাক্ত করতে আপনাকে সাহায্য করে:
using UnityEngine;
public class GoogleDeviceUtilities
{
#if UNITY_ANDROID && !UNITY_EDITOR
private static AndroidJavaObject PackageManager
{
get
{
var unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
var currentActivity = unityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity");
return currentActivity.Call<AndroidJavaObject>("getPackageManager");
}
}
public static bool IsChromeOS => PackageManager.Call<bool>("hasSystemFeature", "org.chromium.arc");
public static bool IsGooglePlayGames =>
PackageManager.Call<bool>("hasSystemFeature", "com.google.android.play.feature.HPE_EXPERIENCE");
public static bool HasKeyboard
{
get
{
var unityPlayerClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
var currentActivity = unityPlayerClass.GetStatic<AndroidJavaObject>("currentActivity");
var resources = currentActivity.Call<AndroidJavaObject>("getResources");
var configuration = resources.Call<AndroidJavaObject>("getConfiguration");
var keyboard = configuration.Get<int>("keyboard");
return keyboard == 2; // Configuration.KEYBOARD_QWERTY
}
}
#else
public static bool IsChromeOS => false;
public static bool IsGooglePlayGames => false;
public static bool HasKeyboard => true;
#endif
}
সাধারণ অ্যান্ড্রয়েড ফোনের তুলনায় পিসির ডিসপ্লে বড় হয়। সম্ভব হলে, আমরা পরামর্শ দিই যে আপনার HUD যেন স্ক্রিনের ২০% এর বেশি জায়গা না নেয়। যেহেতু অনেক মোবাইল গেম "Scale With Screen Size" ব্যবহার করে, তাই এটিকে "Constant Physical Size" বা "Constant Pixel Size"-এ পরিবর্তন করা এই লক্ষ্য অর্জনের দিকে একটি ভালো প্রথম পদক্ষেপ হতে পারে।

আপনি যদি শনাক্ত করেন যে আপনি গুগল প্লে গেমসে চালাচ্ছেন, তাহলে রানটাইমে QualitySettings.SetQualityLevel কমান্ড ব্যবহার করে কোয়ালিটি সেটিংস ডাইনামিকভাবে সেট করতে চাইতে পারেন। গুগল প্লে গেমস এমুলেটরটি ইউনিটি দ্বারা নির্গত OpenGL থেকে নেটিভ DirectX বা Vulkan কমান্ড জারি করার জন্য ANGLE ব্যবহার করে, তাই আপনি সম্ভবত আপনার মোবাইল গেম বিল্ডগুলিতে উপলব্ধ গ্রাফিক্সের চেয়ে উচ্চতর গ্রাফিক্স ফিডেলিটি অর্জন করতে পারবেন।
৮. ইনপুট পরিচালনা
গুগল প্লে গেমসে প্রকাশিত গেমগুলো মাউস এবং কিবোর্ড ইনপুটকে কেন্দ্র করে তৈরি করা উচিত। মাউস এবং কিবোর্ড দিয়ে আপনার গেমের সাথে কীভাবে ইন্টারঅ্যাক্ট করবেন, তার পরিকল্পনা আপনাকে করতে হবে, তাই এখনই সময় নিয়ে ইনপুট এসডিকে (Input SDK) ইউনিটি প্যাকেজটি সংগ্রহ করুন। যদি সেই পেজে কোনো ডাউনলোডের অপশন না দেখেন, তবে নিশ্চিত হয়ে নিন যে আপনি প্লে-এমপি-লিবস (play-mp-libs) গ্রুপের কোনো অ্যাকাউন্টে সাইন ইন করেছেন।
পরীক্ষার উদ্দেশ্যে, অনেক গেম এডিটরে ডেভেলপমেন্টের জন্য বেসিক মাউস এবং কীবোর্ড কন্ট্রোল তৈরি করে দেয়। সম্ভব হলে, আপনি যখন কোনো ChromeOS ডিভাইসে বা Google Play Games এমুলেটরে গেমটি চালাবেন, তখন এগুলো চালু করতে পারেন।
ডিফল্টরূপে, গুগল প্লে গেমস এবং ক্রোমওএস মাউসের ইনপুটকে একটি সিমুলেটেড টাচে রূপান্তরিত করে। আপনি যদি Input.GetTouch এবং Input.touchCount ব্যবহার করেন, তাহলে আপনার গেমটি প্রত্যাশিতভাবেই কাজ করতে থাকবে। আপনি যদি মাল্টি-টাচ ইনপুটের উপর নির্ভর করেন, যেমন ডুয়াল থাম্ব কন্ট্রোল বা পিঞ্চ টু জুম, তাহলে আপনাকে অ্যাকশনটিকে কী-প্রেসের সাথে ম্যাপ করতে হবে। আপনার ইন-গেম অ্যাকশনগুলোকেও কী-প্রেসের সাথে ম্যাপ করা উচিত, যেমন ইনভেন্টরি খোলার জন্য i চাপা, ডায়ালগ বক্স বন্ধ করার জন্য escape চাপা , এবং ইন-গেম মেসেজ পাঠানোর জন্য enter চাপা ।
২ডি প্ল্যাটফর্মার মাইক্রোগেমটিতে নড়াচড়া করার জন্য অ্যারো কী এবং লাফ দেওয়ার জন্য স্পেস কী ব্যবহার করা হয়। আপনি যদি নিজের তৈরি গেম ব্যবহার করেন, তবে পরবর্তী ধাপের জন্য আপনার পছন্দের কী বাইন্ডিংগুলো ঠিক আছে কিনা তা নিশ্চিত করুন।
৯. ইনপুট এসডিকে ইন্টিগ্রেশন
এখন যেহেতু আপনি আপনার মাউস এবং কীবোর্ড কন্ট্রোল সেট আপ করে ফেলেছেন, আপনাকে ইনপুট এসডিকে (Input SDK) সাপোর্ট যোগ করতে হবে। এটি একটি সুবিধাজনক পপওভারের মাধ্যমে প্লেয়ারদের আপনার পিসি ইনপুটগুলো খুঁজে পেতে সাহায্য করে:
- আপনার প্রজেক্টে SDK ইম্পোর্ট করার পর,
InputMappingProviderBehaviour.csনামে একটি ফাইল তৈরি করুন এবং এই কন্টেন্টগুলো যোগ করুন:
using System.Collections.Generic;
using Google.Play.InputMapping;
using UnityEngine;
using Input = Google.Play.InputMapping.Input;
public class InputMappingProviderBehaviour : MonoBehaviour
{
private void Start()
{
Input.GetInputMappingClient().RegisterInputMappingProvider(new MyInputMappingProvider());
}
private class MyInputMappingProvider : InputMappingProvider
{
public InputMap OnProvideInputMap()
{
return new InputMap
{
InputGroups = new List<InputGroup> { },
MouseSettings = new MouseSettings
{
InvertMouseMovement = false,
AllowMouseSensitivityAdjustment = false
}
};
}
}
private enum ActionIds
{
}
}
- এখন আপনার গেমে ব্যবহৃত অ্যাকশনগুলোর তালিকা দিয়ে
ActionIdsপূরণ করুন। 2D প্ল্যাটফর্মার মাইক্রোগেমটির জন্য অ্যাকশনগুলো হলো Left, Right, এবং Jump:
private enum ActionIds
{
Left,
Right,
Jump
}
-
OnProvideInputMapএ, প্রতিটি অ্যাকশনের জন্য একটিInputActionতৈরি করুন। এর জন্য আপনার অ্যাকশনের নাম, ইনপুট এবং এর সাথে যুক্ত করা হবে এমন মাউস বাটন বা কী-কোডগুলোর প্রয়োজন হবে। নমুনা গেমটির জন্য:
var leftAction = new InputAction
{
ActionLabel = "Walk Left",
UniqueId = (int)ActionIds.Left,
InputControls = new InputControls
{
AndroidKeycodes = new[]
{
AndroidKeyCode.KEYCODE_DPAD_LEFT
}
}
};
var rightAction = new InputAction
{
ActionLabel = "Walk Right",
UniqueId = (int)ActionIds.Right,
InputControls = new InputControls
{
AndroidKeycodes = new[]
{
AndroidKeyCode.KEYCODE_DPAD_RIGHT
}
}
};
var jumpAction = new InputAction
{
ActionLabel = "Jump",
UniqueId = (int)ActionIds.Jump,
InputControls = new InputControls
{
AndroidKeycodes = new[]
{
AndroidKeyCode.KEYCODE_SPACE
}
}
};
- এরপর, এই ইনপুট অ্যাকশনগুলোকে বিভিন্ন গ্রুপে ভাগ করুন।
মাইক্রোগেমটির জন্য আমাদের কেবল একটিই গ্রুপ আছে, কিন্তু আপনার খেলোয়াড়দের প্রয়োজনীয় অ্যাকশনগুলো খুঁজে পেতে সাহায্য করার জন্য আপনি প্রয়োজনমতো যত খুশি গ্রুপ তৈরি করতে পারেন। OnProvideInputMap এ এটি যোগ করুন:
var movementInputGroup = new InputGroup
{
GroupLabel = "Movement",
InputActions = new List<InputAction>
{
leftAction, rightAction, jumpAction
}
};
- আপনার তৈরি করা সমস্ত ইনপুট গ্রুপ ইনপুট ম্যাপে যোগ করুন।
OnProvideInputMapএর রিটার্ন স্টেটমেন্টটি পরিবর্তন করে নিম্নরূপ করুন:
return new InputMap
{
InputGroups = new List<InputGroup> { movementInputGroup },
MouseSettings = new MouseSettings
{
InvertMouseMovement = false,
AllowMouseSensitivityAdjustment = false
}
};
- অবশেষে, আপনার তৈরি করা স্ক্রিপ্টটি আপনার গেমে যোগ করুন:

- আপনি যখন আবার গেমটি চালু করবেন, তখন ইন-গেম ওভারলে খোলার জন্য
Shift+Tabচাপুন।

- আপনার কনফিগার করা কন্ট্রোলগুলো দেখতে কন্ট্রোলস-এ ক্লিক করুন।

১০. এমবেডেড ওয়েব ভিউ অপসারণ করুন
আপনার খেলোয়াড়দের একটি চমৎকার অভিজ্ঞতা দেওয়ার জন্য, আপনার এমবেডেড ওয়েব ভিউগুলি সরিয়ে ফেলা উচিত। আপনার প্রাইভেসি পলিসি বা টার্মস অফ সার্ভিসের মতো বিষয়গুলি দেখানোর জন্য এমবেডেড ওয়েব ভিউ ব্যবহার করা একটি সাধারণ ব্যাপার। যদিও এগুলি গুগল প্লে গেমসে কাজ করে, কিন্তু এগুলি খেলোয়াড়ের পছন্দের ডেস্কটপ ব্রাউজারের পরিবর্তে একটি এমবেডেড "মোবাইল" ব্রাউজারে প্রদর্শিত হয় এবং পিসি খেলোয়াড়দের জন্য কিছু বিভ্রান্তির কারণ হতে পারে। তাই ইউনিটিতে, আপনি যদি কোনো এমবেডেড ব্রাউজার দেখানোর জন্য কোনো এক্সটেনশন ব্যবহার করেন, তাহলে Application.OpenURL(url) ব্যবহার করুন।
১১. অনুমতি এবং বৈশিষ্ট্যসমূহ
অ্যান্ড্রয়েডের এমন অনেক ফিচার ও পারমিশন আছে যা গুগল প্লে গেমসে সমর্থিত নয়। একটি সাধারণ নিয়ম হলো, আপনার পিসি বিল্ডে কখনোই কোনো পারমিশন ডায়ালগ বক্স আসা উচিত নয়। এখন যেহেতু আপনার বিল্ড প্রস্তুত, একটি সাধারণ নতুন ইনস্টলেশন প্রক্রিয়া সম্পন্ন করে আপনার গেম জমা দেওয়ার জন্য করণীয় কাজের তালিকায় যোগ করার জন্য আপনি যে ডায়ালগ বক্সগুলো দেখতে পান, সেগুলো লিখে রাখা একটি ভালো কাজ।
কিছু ইউনিটি গেম Android.Permission API ব্যবহার করে অনুমতি চেয়ে থাকে । আপনার উচিত এগুলোকে if (GoogleDeviceUtilities.IsGooglePlayGames) চেকের মধ্যে রাখা এবং প্রযোজ্য ক্ষেত্রে সরাসরি আপনার ফেইলর লজিকে চলে যাওয়া।
১২. ডেস্কটপ অপ্টিমাইজেশন
একটি সাধারণ অ্যান্ড্রয়েড ফোনের তুলনায় গুগল প্লে গেমসে কিছু পার্থক্য রয়েছে, এবং আপনি সেই অনুযায়ী আপনার গেমটি কনফিগার করতে চাইতে পারেন।
টেক্সচার কম্প্রেশনের জন্য DXT ব্যবহার করুন। ETC-এর মতো সাধারণ অ্যান্ড্রয়েড টেক্সচার ফরম্যাটগুলো যদি সরাসরি প্লেয়ারের GPU-তে পাঠানো না যায়, তবে সেগুলো রানটাইমে মেমরিতে ডিকোড করা হয়। ASTC আপনাকে সেরা ডেস্কটপ কম্প্যাটিবিলিটি দেয়, যদিও আপনার গেমের প্রত্যাশিত আচরণ যাচাই করার জন্য একটি ডেস্কটপ GPU প্রোফাইলিং টুল ব্যবহার করতে হবে।

যেহেতু আপনি এখন একটি ডেস্কটপ জিপিইউ ব্যবহার করছেন, তাই আপনি আপনার গ্রাফিক্সের মানও বাড়াতে চাইতে পারেন। আপনি আপনার প্রজেক্ট সেটিংস-এর কোয়ালিটি (Quality) অপশনে গিয়ে সরাসরি এটি পরিবর্তন করতে পারেন।

১৩. অভিনন্দন
গুগল প্লে গেমসের জন্য আপনার গেমটি তৈরি করা শুরু করার জন্য সবকিছু প্রস্তুত আছে। আপনি আপনার গেমটি পরীক্ষা করা এবং এর উন্নতি সাধন করা শুরু করতে পারেন। মনে রাখবেন যে, যদিও আপনি আপনার একই কোডবেস রাখতে পারেন, তবুও আপনার গেমটিকে একটি নেটিভ পিসি গেমের মতো অনুভূতি দেওয়ার জন্য মানিয়ে নিতে হবে।
এরপর কী?
গুগল প্লে গেমসে একটি গেম প্রকাশ করার জন্য আরও কাজ করতে হবে:
- সর্বশেষ তথ্যের জন্য কুইকস্টার্ট পর্যালোচনা করুন।
- গেম চালু হওয়ার সাথে সাথে প্লেয়ারকে স্বয়ংক্রিয়ভাবে লগ ইন করতে এবং ধারাবাহিকতার প্রয়োজনীয়তা পূরণে সাহায্য করার জন্য প্লে গেমস সার্ভিসেস সাইন ইন v2-তে আপগ্রেড করুন।
- আপনার পিসি অভিজ্ঞতা যেন মোবাইলের মতোই সুরক্ষিত হয়, তা নিশ্চিত করতে প্লে ইন্টিগ্রিটি এপিআই প্রয়োগ করুন।
অবশেষে, গুগল প্লে গেমসকে সমর্থন করার জন্য আপনি এ পর্যন্ত যে কাজগুলো করেছেন তার অনেকটাই আপনাকে ক্রোমওএস-এও পরিষেবা দিতে সাহায্য করে, এবং আপনার পিসির পাশাপাশি সেই প্ল্যাটফর্মটিকেও সমর্থন করার কথা বিবেচনা করা উচিত।