ভূমিকা
Unity-র জন্য Firebase SDK ব্যবহার করে Unity গেমের কম্পাইল ও বিল্ড প্রসেস ডিবাগ করার জন্য নিম্নলিখিত গাইডটি দেখুন। কোনও নতুন প্ল্যাটফর্মের জন্য বা কোনও আপডেটের পরে আপনার গেম কনফিগার ও তৈরি করার সময় আপনি যেসব সাধারণ সমস্যার সম্মুখীন হতে পারেন, সেগুলি কীভাবে তদন্ত ও সমাধান করবেন তা এতে বর্ণনা করা হয়েছে। প্রক্রিয়া চলাকালীন এইসব সমস্যা কখন দেখা দিতে পারে সেই অনুযায়ী এগুলি সাজানো হয়েছে। এগুলি ক্রমানুসারে দেখুন এবং প্রতিটি সমস্যার সমাধান হয়ে গেলে পরবর্তী ধাপে যান।
এই ডকুমেন্ট ছাড়াও, আরও তথ্যের জন্য Firebase for Unity সংক্রান্ত প্রায়শই জিজ্ঞাসিত প্রশ্ন দেখুন।
প্লে মোড কম্পাইলেশন সংক্রান্ত সমস্যা
মোবাইল বিল্ড শুরু করার আগে এডিটরে পরীক্ষা করার সময় প্রথম ধরনের বিল্ড সংক্রান্ত সমস্যা দেখা দিতে পারে। এই বিভাগে প্লে মোড চলাকালীন এবং তার আগে হওয়া সব Firebase সংক্রান্ত সমস্যার ব্যাপারে বলা হয়েছে।
Unity শুরু হলে বা ডিপেন্ডেন্সি, কোড বা অন্যান্য অ্যাসেটে পরিবর্তন শনাক্ত করলে, এটি প্রোজেক্টটি আবার তৈরি করার চেষ্টা করবে। সেই সময় প্রোজেক্ট কম্পাইল করা না গেলে, এডিটর কনসোলে কম্পাইলেশন সংক্রান্ত সমস্যার লগ তৈরি করবে এবং আপনি প্লে মোডে প্রবেশ করার চেষ্টা করলে, Unity-এর দৃশ্য ট্যাবে একটি পপ-আপ সমস্যার মেসেজ দেখতে পাবেন যাতে All compiler errors have to be fixed before you can enter playmode! লেখা থাকবে।
Firebase-সম্পর্কিত কম্পাইলেশন সংক্রান্ত সমস্যার সমাধান করা
টাইপ, ক্লাস, পদ্ধতি ও মেম্বার উল্লেখ করা নেই
এডিটর ও কম্পাইলার প্রয়োজনীয় টাইপ, ক্লাস, পদ্ধতি ও মেম্বার খুঁজে না পাওয়ার কারণে Firebase-এ অনেক সমস্যা হয়। এর সাধারণ লক্ষণগুলি হল নিম্নলিখিতগুলির ভেরিয়েন্ট:
The type or namespace name ‘<CLASS OR NAMESPACE NAME>' could not be found. Are you missing a using directive or an assembly reference?
The type or namespace name <TYPE OR NAMESPACE NAME> does not exist in the namespace ‘Firebase<.OPTIONAL NESTED NAMESPACE NAME PATH>' (are you missing an assembly reference?)
‘<CLASS NAME>' does not contain a definition for ‘<MEMBER VARIABLE OR METHOD NAME>'
সমাধানের ধাপ:
আপনি কোডে যেখানে Firebase ক্লাস বা পদ্ধতি ব্যবহার করছেন, সেখানে নিশ্চিত করুন যে আপনি প্রয়োজনীয় নির্দিষ্ট Firebase প্রোডাক্টের জন্য সঠিক
usingনির্দেশাবলী ব্যবহার করে সেগুলি উপলভ্য করছেন।আপনি উপযুক্ত Firebase প্যাকেজ ইমপোর্ট করেছেন কিনা তা যাচাই করুন:
- উপযুক্ত প্যাকেজ ইমপোর্ট করতে, হয়:
- Firebase Unity SDK-কে
.unitypackageহিসেবে যোগ করুন অথবা - Unity ইনস্টল করার অতিরিক্ত বিকল্প থেকে কোনও একটি বিকল্প বেছে নিয়ে সেটি ব্যবহার করুন।
- Firebase Unity SDK-কে
- আপনার প্রোজেক্টের প্রতিটি Firebase প্রোডাক্ট এবং EDM4U:
- একই ভার্সনে আছে
- শুধুমাত্র
.unitypackageহিসেবে অথবা শুধুমাত্র Unity প্যাকেজ ম্যানেজারের মাধ্যমে ইনস্টল করা হয়েছে।
- উপযুক্ত প্যাকেজ ইমপোর্ট করতে, হয়:
আপনি যদি "১০.০.০" ভার্সনের আগে
.unitypackageহিসেবে Firebase ইউনিটি SDK ইমপোর্ট করে থাকেন, তাহলে Firebase ইউনিটি SDK-এর জিপ আর্কাইভে .NET 3.x এবং .NET 4.x, দুটির জন্যই প্যাকেজ থাকে। আপনার প্রোজেক্টে শুধুমাত্র মানানসই .NET ফ্রেমওয়ার্ক লেভেল অন্তর্ভুক্ত করেছেন কিনা তা নিশ্চিত করুন:- Unity Editor-এর বিভিন্ন ভার্সন ও .NET Frameworks লেভেলের মধ্যে সামঞ্জস্যের ব্যাপারে আপনার Unity প্রোজেক্টে Firebase যোগ করুন লিঙ্কে আলোচনা করা হয়েছে।
- আপনি যদি ভুল .NET ফ্রেমওয়ার্ক লেভেলে আপনার Firebase প্যাকেজ ইমপোর্ট করে থাকেন অথবা
.unitypackageথেকে অতিরিক্ত Unity ইনস্টলেশন বিকল্প-এর মধ্যে কোনও একটিতে পাল্টাতে চান, তাহলে সবচেয়ে ভাল উপায় হল এই মাইগ্রেশন বিভাগে উল্লেখ করা পদ্ধতি অনুযায়ী প্রতিটি Firebase প্যাকেজ সরিয়ে দেওয়া এবং তারপর সব Firebase প্যাকেজ আবার ইমপোর্ট করা।
আপনার এডিটর প্রজেক্টটি আবার তৈরি করছে কিনা এবং আপনার চালানোর চেষ্টা প্রজেক্টের সবচেয়ে সাম্প্রতিক অবস্থা প্রতিফলিত করছে কিনা তা চেক করুন:
- ডিফল্ট হিসেবে, অ্যাসেট বা কনফিগারেশনে পরিবর্তন শনাক্ত করা হলে, Unity এডিটরকে রিবিল্ড করার জন্য সেট করা হয়।
- এটি সম্ভব যে এই কার্যকারিতা বন্ধ করা হয়েছে এবং Unity Editor ম্যানুয়াল রিফ্রেশ/রিকম্পাইল-এ সেট করা হয়েছে। এটি খতিয়ে দেখুন এবং এই ধরনের সমস্যা হলে ম্যানুয়ালি রিফ্রেশ করার চেষ্টা করুন।
প্লে মোড রানটাইম সমস্যা
আপনার গেম শুরু হলেও, Firebase-এর সাথে রান করার সময় সমস্যা হলে, নিম্নলিখিত ধাপগুলি অনুসরণ করে দেখুন:
Mac OS-এ "নিরাপত্তা ও গোপনীয়তা" বিকল্পে Firebase বান্ডেল অনুমোদন করেছেন কিনা তা নিশ্চিত করুন
Mac OS-এ এডিটরে আপনার গেম শুরু করার সময়, আপনি যদি এমন একটি ডায়ালগ দেখতে পান যাতে লেখা আছে, "FirebaseCppApp-<version>.bundle খোলা যাচ্ছে না কারণ ডেভেলপারকে যাচাই করা যাচ্ছে না।", তাহলে আপনাকে Mac-এর নিরাপত্তা ও গোপনীয়তা মেনুতে গিয়ে সেই নির্দিষ্ট বান্ডেল ফাইলটি অনুমোদন করতে হবে।
এটি করতে, Apple আইকন > সিস্টেম প্রেফারেন্স > নিরাপত্তা ও গোপনীয়তা বিকল্পে ক্লিক করুন
নিরাপত্তা মেনুতে, পৃষ্ঠার প্রায় অর্ধেক নিচে, একটি বিভাগ আছে যেখানে লেখা আছে ""FirebaseCppApp-<version>.bundle" ব্যবহার করা থেকে ব্লক করা হয়েছে কারণ এটি কোনও শনাক্ত করা ডেভেলপার থেকে নয়।"
যাই হোক অনুমতি দিন লেবেলযুক্ত বোতামে ক্লিক করুন।

Unity-তে ফিরে যান এবং আবার চালান বোতাম প্রেস করুন।
আপনি তখন প্রথমটির মতো একটি সতর্কতা দেখতে পাবেন:

খুলুন বিকল্পে প্রেস করুন এবং আপনার প্রোগ্রামটি এগিয়ে যেতে পারবে; এই নির্দিষ্ট ফাইল সম্পর্কে আপনাকে আর জিজ্ঞাসা করা হবে না।
আপনার প্রোজেক্টে সঠিক কনফিগারেশন ফাইল আছে এবং তা ব্যবহার করা হচ্ছে কিনা তা নিশ্চিত করুন
- ফাইল > বিল্ড সেটিংস থেকে আপনার বিল্ড সেটিংস আপনার টার্গেট (iOS বা Android) অনুযায়ী সেট করা আছে কিনা তা ভালভাবে দেখে নিন। আরও বিস্তারিত আলোচনার জন্য, Unity বিল্ড সেটিংস ডকুমেন্টেশন পড়ুন।
- আপনার অ্যাপের জন্য কনফিগারেশন ফাইল (Android-এর জন্য
google-services.jsonবা iOS-এর জন্যGoogleService-Info.plist) ডাউনলোড করুন এবং Firebase কনসোল থেকে প্রোজেক্ট সেটিংস > আপনার অ্যাপ বিকল্পে গিয়ে টার্গেট তৈরি করুন: আপনার কাছে আগে থেকেই এইসব ফাইল থাকলে, আপনার প্রোজেক্ট থেকে সেগুলি মুছে দিন এবং সবচেয়ে সাম্প্রতিক ভার্সন দিয়ে সেগুলি প্রতিস্থাপন করুন। তবে, উপরে দেখানো নামের সাথে ফাইলের নামের বানান যেন হুবহু মেলে এবং ফাইলের নামের সাথে "(১)" বা অন্য কোনও সংখ্যা যেন যোগ করা না থাকে। - কনসোলে
Assets/StreamingAssets/-এ থাকা ফাইল সম্পর্কে কোনও মেসেজ থাকলে, সেখানে Unity ফাইল এডিট করতে পারেনি বলে কোনও কনসোল মেসেজ নেই তা নিশ্চিত করুন Assets/StreamingAssets/google-services-desktop.jsonতৈরি করা হয়েছে এবং ডাউনলোড করা কনফিগারেশন ফাইলের সাথে মিলছে কিনা তা নিশ্চিত করুন।- এটি অটোমেটিক তৈরি না হলে এবং
StreamingAssets/না থাকলে,Assetsডিরেক্টরিতে ম্যানুয়ালি ডিরেক্টরি তৈরি করুন। - Unity এখন
google-services-desktop.jsonজেনারেট করেছে কিনা তা চেক করুন।
- এটি অটোমেটিক তৈরি না হলে এবং
প্রতিটি Firebase প্রোডাক্ট এবং EDM4U শুধুমাত্র .unitypackage বা Unity প্যাকেজ ম্যানেজারের মাধ্যমে ইনস্টল করা হয়েছে কিনা তা নিশ্চিত করুন
- Firebase SDK এবং EDM4U যে কোনও একটি পদ্ধতিতে ইনস্টল করা হয়েছে কিনা তা নিশ্চিত করতে
Assets/ফোল্ডার এবং Unity Package Manager উভয়ই চেক করুন। - Google Play-এর মতো কিছু Google-এর তৈরি করা প্লাগ-ইন এবং থার্ড-পার্টি প্লাগ-ইন EDM4U-এর উপর নির্ভর করতে পারে। এইসব প্লাগ-ইনের মধ্যে
.unitypackageবা Unity Package Manager (UPM) প্যাকেজে EDM4U অন্তর্ভুক্ত থাকতে পারে। আপনার প্রোজেক্টে EDM4U-এর একটিই কপি আছে কিনা তা নিশ্চিত করুন। কোনও UPM প্যাকেজ EDM4U-এর উপর নির্ভর করলে, EDM4U-এর শুধু UPM ভার্সন রাখাই সবচেয়ে ভাল, যা Unity আর্কাইভ পৃষ্ঠার জন্য Google API-তে পাওয়া যাবে।
আপনার প্রোজেক্টের প্রতিটি Firebase প্রোডাক্ট একই ভার্সনে আছে কিনা তা নিশ্চিত করুন।
- Firebase SDK
.unitypackage-এর মাধ্যমে ইনস্টল করা হলে,Assets/Firebase/Plugins/x86_64/-এর অধীনে থাকা সবFirebaseCppAppলাইব্রেরি একই ভার্সনের কিনা তা চেক করুন। - Unity Package Manager (UPM)-এর মাধ্যমে Firebase SDK ইনস্টল করা হলে, Windows > Package Manager খুলুন, "Firebase" সার্চ করুন এবং সব Firebase প্যাকেজ একই ভার্সনে আছে কিনা তা নিশ্চিত করুন।
- আপনার প্রোজেক্টে Firebase SDK-এর বিভিন্ন ভার্সন থাকলে, আমরা সাজেস্ট করি যে আপনি সব Firebase SDK সম্পূর্ণভাবে সরিয়ে দিন এবং তারপর একই ভার্সনের সব Firebase SDK আবার ইনস্টল করুন। সবচেয়ে পরিষ্কার উপায় হল, এই মাইগ্রেশন বিভাগে উল্লেখ করা পদ্ধতির মাধ্যমে প্রতিটি Firebase প্যাকেজ সরিয়ে দেওয়া।
রিজলভার ও টার্গেট ডিভাইস বিল্ড সংক্রান্ত সমস্যা
আপনার গেম যদি এডিটরে কাজ করে (আপনার বেছে নেওয়া উপযুক্ত বিল্ড টার্গেটের জন্য কনফিগার করা), তাহলে এর পরে যাচাই করুন যে Unity-র জন্য এক্সটার্নাল ডিপেন্ডেন্সি ম্যানেজার (EDM4U) সঠিকভাবে কনফিগার করা হয়েছে এবং কাজ করছে।
EDM4U GitHub রিপোজিটরিতে এই প্রসেসের এই অংশের জন্য ধাপে-ধাপে গাইড রয়েছে যা আপনার পর্যালোচনা করা উচিত এবং এগিয়ে যাওয়ার আগে অনুসরণ করা উচিত।
'সিঙ্গেল ডেক্স' সংক্রান্ত সমস্যা ও ছোট করা (Cloud Firestore ব্যবহার করলে বাধ্যতামূলক)
Android অ্যাপ তৈরি করার সময়, একটি মাত্র dex ফাইল থাকার কারণে বিল্ড ব্যর্থ হওয়ার সমস্যা হতে পারে। সমস্যা সংক্রান্ত মেসেজটি নিম্নলিখিত মেসেজের মতো দেখতে হয় (আপনার প্রোজেক্ট Gradle বিল্ড সিস্টেম ব্যবহার করার জন্য কনফিগার করা থাকলে):
Cannot fit requested classes in a single dex file.
Android অ্যাপ্লিকেশনের জন্য ক্লাস ডেফিনিশনের সেট ও তার সাথে সম্পর্কিত অ্যাডজাঙ্কট ডেটা ধরে রাখতে .dex ফাইল ব্যবহার করা হয়। একটি dex ফাইলে ৬৫,৫৩৬টি মেথডের রেফারেন্সের সীমা থাকে; আপনার প্রোজেক্টের সব Android লাইব্রেরির মোট মেথডের সংখ্যা এই সীমা অতিক্রম করলে বিল্ড ব্যর্থ হবে।
নিম্নলিখিত দুটি ধাপ ক্রমানুসারে প্রয়োগ করা যেতে পারে; ছোট করার মাধ্যমে সমস্যার সমাধান না হলে তবেই মাল্টিডেক্স চালু করুন।
ছোট করার সুবিধা চালু করুন
Unity 2017.2 ভার্সনে মিনিফিকেশন ফিচার নিয়ে এসেছে যা অব্যবহৃত কোড সরিয়ে দেয়। এর ফলে একটি dex ফাইলে রেফারেন্স করা মেথডের মোট সংখ্যা কমে যায়। * এই বিকল্পটি প্লেয়ার সেটিংস > Android > প্রকাশনা সংক্রান্ত সেটিংস > ছোট করুন বিকল্পে পাওয়া যাবে। * Unity-এর বিভিন্ন ভার্সনে বিকল্পগুলি আলাদা হতে পারে, তাই অফিসিয়াল Unity ডকুমেন্টেশন দেখুন।
মাল্টিডেক্স চালু করুন
ছোট করার সুবিধা চালু করার পরেও যদি রেফারেন্স করা পদ্ধতির সংখ্যা সীমা ছাড়িয়ে যায়, তাহলে আরেকটি বিকল্প হল multidex চালু করা। Unity-তে এটি করার একাধিক উপায় আছে:
- প্লেয়ার সেটিংস-এর অধীনে কাস্টম Gradle টেমপ্লেট চালু করা থাকলে,
mainTemplate.gradleপরিবর্তন করুন। - এক্সপোর্ট করা প্রোজেক্ট তৈরি করতে Android Studio ব্যবহার করলে, মডিউল-লেভেল build.gradle ফাইল পরিবর্তন করুন।
মাল্টিডেক্স ব্যবহারকারীর নির্দেশিকা থেকে আরও তথ্য পাওয়া যাবে।
টার্গেট ডিভাইসের রানটাইম সমস্যা বোঝা ও সমাধান করা
আপনার গেম যদি এডিটরে কাজ করে এবং আপনার টার্গেট ডিভাইসের জন্য তৈরি ও ইনস্টল করা যায়, কিন্তু আপনি রানটাইম সমস্যার সম্মুখীন হন, তাহলে ডিভাইসে তৈরি করা লগগুলি পরীক্ষা ও তদন্ত করুন।
এই বিভাগে বিস্তারিতভাবে বলা হয়েছে যে সম্ভাব্য সমস্যার জন্য কীভাবে আপনার লগ তদন্ত করবেন এবং এমন একটি সমস্যা যা শুধুমাত্র ডিভাইস বা সিমুলেটরে রানটাইমে ঘটে।
Android
সিমুলেটার
- আপনার এমুলেটরের কনসোলে দেখানো লগগুলি পরীক্ষা করুন বা Logcat উইন্ডো দেখুন।
ডিভাইস
adb ও adb logcat এবং সেগুলি কীভাবে ব্যবহার করতে হয় সেই সম্পর্কে জানুন।
- আউটপুট ফিল্টার করার জন্য আপনি কমান্ড লাইন এনভায়রনমেন্টের বিভিন্ন টুল ব্যবহার করতে পারেন, তবে বিকল্প হিসেবে logcat-এর বিকল্প ব্যবহার করে দেখতে পারেন।
কোনও ADB সেশন নতুন করে শুরু করার সহজ উপায় হল:
adb logcat -c && adb logcat <OPTIONS>যেখানে
OPTIONSহল আউটপুট ফিল্টার করার জন্য কমান্ড লাইনে পাস করা যেকোনও ফ্ল্যাগ।
Android Studio-এর মাধ্যমে Logcat ব্যবহার করা
Android Studio-র মাধ্যমে Logcat ব্যবহার করার সময় অতিরিক্ত সার্চ টুল উপলভ্য থাকে যা প্রোডাক্টিভ সার্চ জেনারেট করার কাজকে আরও সহজ করে তোলে।
iOS
লগ পরীক্ষা করা হচ্ছে
ফিজিক্যাল ডিভাইস চালালে, সেটি আপনার কম্পিউটারের সাথে অ্যাটাচ করুন। Xcode-এ lldb পরীক্ষা করুন।
Swift সংক্রান্ত সমস্যা
আপনি যদি swift উল্লেখ করে এমন কোনও ত্রুটি লগ দেখতে পান, তাহলে সেই বিষয়ে External Dependency Manager for Unity বিভাগটি দেখুন।
পরবর্তী ধাপ
আপনার গেমে এখনও Firebase সম্পর্কিত কম্পাইল, বিল্ড বা রান সংক্রান্ত সমস্যা থাকলে, Unity-র জন্য Firebase SDK-এর সমস্যা সংক্রান্ত পৃষ্ঠা দেখুন এবং নতুন সমস্যা ফাইল করার কথা বিবেচনা করুন। এছাড়াও, অতিরিক্ত বিকল্প সম্পর্কে জানতে Firebase সহায়তা পৃষ্ঠা দেখুন।