Unity 3D Game Development Course in Bangla: Build Professional 3D Games with C#
About Course
গেম, প্রযুক্তি নির্ভর এক বিনোদনের মাধ্যম যা কিনা আমাদের অবসরের সমস্ত ক্লান্তি, একঘেয়েমি বা একাকীত্বতা সব এক নিমিষেই দূর করতে সম্ভব, সেই; ছোটবেলা থেকেই আমরা কমবেশী সবাই গেম খেলেছি হোক সেটা পাড়ার গেম স্টেশন, গেমিং কনসোল বা কম্পিউটার কিংবা মোবাইলে, এমন কাউকে হয়ত খুজেও পাওয়া যাবেনা যে কখনো গেম খেলেনি।
একটা সময় আমরা গেম খেলার জন্য ভিডিও গেইম বা পাড়ার গেম স্টেশন গুলোতে কয়েন দিয়ে গেইম খেলতাম , এরপর প্রজুক্তির বিবর্তনে আসল কম্পিউটার , গেম খেলার জন্য আমরা কম্পিউটার ছাড়া কিছু চিন্তায় করতে পারতাম না, এরপর প্রজুক্তির কল্যানে গেমার দের জন্য আসল বিভিন্ন ধরনের গেমিং কনসোল যেমন সনি প্লে স্টেশন, মাইক্রোসফটের এক্সবক্স ৩৬০ ইত্যাদি আরও অনেক ডিভাইস
স্মার্টফোনের এই এভ্যেইলেবিলিটির কারণে বর্তমানে গেম ডেভেলপাররা যারা আগে শুধু মাত্র কম্পিউটারের বা গেমিং কনসোলকে টার্গেট করেই শুধু গেম বানাত , তারা এখন হাতে থাকা স্মার্ট ডিভাইসটাকেই মেইনলী টার্গেট করে গেম গুলো ডেভেলপ করছে, কারণ বর্তমানে সময়ের প্রেক্ষিতে এখন আমনি অবস্থা দাড়িয়েছে যে, আপনি হয়ত একদিন না খেয়েও থাকতে পারবে কিন্তু স্মার্ট ফোন ছাড়া এক মুহুর্তও চলতে পারবেন না, আর সুধু মাত্র এই স্মার্ট ডিভাইসের গেম ডেভেলপের জন্যই সারা বিশ্বে গড়ে উঠেছে মিলিয়ন ডলারের কয়েকশ প্রতিষ্ঠান , বিলিয়ন ডলারের বিজনেস এই সেক্টরকে ঘিরে, এর মধ্যে বাংলাদেশ ও সাম্প্রতিক সময়ে গেম ডেভেলপমেন্টে উল্লেখযোগ্য অগ্রগতি অর্জন করেছে কিন্তু এই অগ্রগতি খুবই সামান্য।
২০২১ সালের মার্চে প্রকাশিত “Global Gaming Market (2021 to 2026)- Industry, Trends, Share, Size, Growth, Opportunity and Forecasts” প্রতিবেদনে বলা হয়েছে যে ২০২১ সালে গেমসের বাজারদর ১৭৫.৫ বিলিয়ন ডলারে এবং ২০২৬ নাগাদ এই দর ২৮৭.১ বিলিয়ন হবে বলে ধারনা করা হচ্ছে। প্রতি বছর গেমেসের বাজারদর ৯.২৪% হাড়ে বৃদ্ধি পাচ্ছে আর এই কারণে, গেম ডেভেলপমেন্ট ইন্ডাস্ট্রি এখন অপার সম্ভাবনাময় একটি সেক্টর, কিন্তু দুঃখজনক ব্যাপার হল এই মার্কেটের একটি বড় অংশই দখল করে রেখেছে হাতে গোনা কয়েকটি প্রতিষ্ঠান।
আমাদের দেশে বেশীরভাগ ক্ষেত্রেই দেখা যায় , যারা প্রোগ্রামিং এ ইন্টারেস্টেড তারা ,সফটওয়্যার ডেভপমেন্টে এ প্রচলিত সেক্টর সমূহ যেমন, Web development, App Development এসব দিকেই বেশি ঝুকে , অথচ এসব সেক্টর অলরেডী কম্পিটিটিভ । আর গেম ডেভলপমেন্ট এই সেক্টরটা সম্পূর্ণ গ্রোয়িং একটা সেক্টর , কম্পিটিশন ও তুলনামূলক অনেক কম, এই সেক্টরে রয়েছে রয়েছে অপার সম্ভবনা, আপনার তৈরি একটি গেমকে ঘিড়েই গড়ে উঠতে পারে একটা বিশাল সফটওয়ার কোম্পানী , একটি গেম থেকেই আপনি মিলিয়ন ডলারের রেভিনিউ জেনারেট করতে পারেন ,
অথচ এত সম্ভাবনাময় একটা সেক্টরে আমাদের দেশে হাতে গোনা কিছু মানুষ কাজ করছে । প্রোপার গাইডলাইন, রিসোর্সের সল্পতা এবং গেম ডেভেলপমেন্ট এই সেক্টর সম্পর্কে তেমন ধারণা না থাকায় , আমাদের দেশের বেশির ভাগ প্রোগ্রামাররাই দেখা যায় ক্যারিয়ার হিসেবে ওয়েব বা ওয়েব অ্যাপলিকেশন ডেভেলপমেন্ট গতানুগতিক এই সেক্টর গুলোকেই বেছে নেয় যার ফলসরূপ অপার সম্ভাবনাময় এই সেক্টর থেকে আমরা বিশাল অঙ্কের একটা রেভিনিউ হারাচ্ছি প্রতি বছর।
আপনি যদি খেয়াল করেন তাহলে দেখবেন প্লে স্টোরে বিভিন্ন ক্যাটাগরির গেম আমরা দেখতে পাই এর মধ্যে রয়েছে Hyper Casual, Puzzle, Role-playing, Action games, Action-adventure games, ইত্যাদি। প্রতিটি গেমের রয়েছে আলাদা আলাদা ইন্টারেস্টিং সব স্টোরি লাইন, মূলত এই কারনেই আমরা গেমগুলো উপভোগ করি।
বর্তমানে খুব অল্প সময়ে AR/VR গেমস গুলোও বিপুল জনপ্রিয় হয়েছে। আর এই সব ধরনের গেমস ডেভেলপমেন্টের প্রসেস মূলত একই রকম। একটি গেমের মুল ভিত্তি হল তার গল্প বা storyline। গেমের গল্পের পর যেই দিকে লক্ষ রাখতে হবে তা হল গ্রাফিক্স বা আর্টওয়ার্কের এর দিকে। গেমের গ্রাফিক্সের কাজ এমন ভাবে করতে হয় যাতে গল্পের সাথে তা মানানসই হয়। গ্রাফিক্স বা artwork বলতে অ্যানিমেশন, ভিজ্যুয়াল আর্টকে বুঝানো হয়ে থাকে।
গল্প এবং গ্রাফিক্সের কাজের পরে আসে অডিও বা AUX, গেমের থিম টিউন, বিভিন্ন ধরনের ইন্ট্যারেক্টীভ সাউন্ড বা ট্রাক যা গেমের গল্পকে ফুটিয়ে তুলতে সাহায্য করে। আচ্ছা! ধরে নিলাম গেমের গল্প ঠিক, গেম গ্রাফিক্স ও ঠিক এখন এগুলোকে জীবন্ত বা ইন্টারেক্টিভ করা দরকার যাতে একটি পূর্ণাঙ্গ গেম এ রূপ ধারন করতে পারে। আর এই কাজটি করে থাকে এক বা একাধিক দক্ষ গেম প্রোগ্রামার। গেমের গল্প বা গ্রাফিক্স যতই ভাল হোক না কেন, যদি না Game Play ভাল না হয়, তাহলে সেই গেম ঐ ডেভেলপার ছাড়া আর কেউ খেলবে না। প্রোগ্রামারের কাজ হচ্ছে Game Play এবং Game Mechanics ঠিক করা ।
তো এখন আসি কি কি লাগবে এই ডেভেলপমেন্টে , প্রথমেই লাগবে একটি ভাল গেম ইঞ্জিন । গেম ইঞ্জিন হচ্ছে একটি সফটওয়্যার ফ্রেমওয়ার্ক, যেটির মধ্যে মূলত গেম ডেভলপমেন্ট করার সবকিছুই একপ্রকার দিয়ে দেওয়া থাকে।
গেম ইঞ্জিন হলো গেমের এনভাইরনমেন্ট ডেভলপ করার সফটওয়্যার। গেমের সমস্ত গ্রাফিক্যাল ইন্টারফেস যেমন বাড়িঘর, গাছপালা, গাড়ি , আইকন ,ক্যারেক্টার মুভমেন্ট, 2D, 3D গ্রাফিক্স, সাউন্ড সিস্টেম, অ্যানিমেশন, নেটওয়ার্কিং, অবজেক্টের ফিজিক্স এবং কলিশনসহ আরো অনেক কিছু গেম ইঞ্জিনের মাধ্যমে করা হয়। বলা যায়, গেমের অর্ধেকেরও বেশি কাজ গেম ইঞ্জিনের মাধ্যমে হয়। এজন্যই গেম ডেভলপমেন্ট করার জন্য আমাদের সবার আগে এবং সবথেকে জোর দিয়ে মূলত গেম ইঞ্জিন শিখতে হবে। মার্কেটে বিভিন্ন ধরনের গেম ইঞ্জিন পাওয়া যায় যেমন Unity 5, Unreal Engine 4, Amazon Lumberyard, Game Maker Studio ইত্যাদি আরও অনেক, এরমধ্যে সবচেয়ে জনপ্রিয় এবং বহুল ব্যাবহৃত হল Unity .
কারণ Unity তে আপনি ফ্রিতেই সব ধরণের কাজ করতে পারছেন, Unity তে রয়েছে বিশাল এক Asset Store যেখানে আপনি গেম ডেভেলপমেন্টের জন্য মডেলিং থেকে শুরু করে ক্যারেক্টার প্রায় সব ধরণের Asset ই পেয়ে যাবেন ফ্রিতে। একজন indie ডেভেলপার এই স্টো্র থেকে নিজের পছন্দের গেম অ্যাসেট নিয়ে কাজ করতে পারে। এছাড়াও আপনি চাইলে বিভিন্ন অনলাইন স্টোর থেকে গেম অ্যাসেট গুলো কিনেও ইউজ করতে পারবেন, এছাড়াও Unity গেম ইঞ্জিনের রয়েছে এক বিশাল কমিউনিটি যেখানে আপনি যেকোন ধরণের প্রব্লেমের সল্যউশন পেয়ে যাবেন অতি সহজেই।
তো এখন তো আমরা অ্যাসেট ম্যানেজ করলাম এরপর আমাদের কাজ এই অ্যাসেট এবং গেমের ক্যারেক্টার গুলোকে ডাইনামেক্যালী মুভমেন্ট করানো, যাতে করে আমরা গেমটা জীবন্ত হয়ে ঊঠে, এরজন্য আমাদেরকে প্রোগ্রামিং ও জানতে হবে , শুধু যে জানলেই হবে তা না , এক্সপার্ট হয়ে উঠতে হবে । Unity তে স্ক্রিপিটিং বা প্রোগ্রামিং হিসেবে মূলত C# দিয়েই করা হয়ে থাকে, তাই আপনাকে C# ল্যাংগুয়েজও জানতে হবে।
এই পুরো কোর্সের মডিউল টিকে এমন ভাবে সাজানো হয়েছে যে , আপনি একদম বিগিনিং লেভেল থেকেই Unity গেম ইঞ্জিনে ছোট ছোট প্রজেক্ট করার মাধ্যমে C# প্রোগ্রামিং , গেমের লজিক ডেভলপমেন্ট সব কিছুতে এক্সপার্ট হয়ে উঠতে পারবেন ইন শাহ্ আল্লাহ্।
কি কি থাকছে এই কোর্সে চলুন দেখে নেয়া যাক
শুরুতেই ১ম এবং ২য় মডিউলে থাকছে Unity 3D IDE ডাউনলোড, ইন্সটলেশ্যন এবং সেটআপ , UnityID খোলা, Unity Hub এ login করে ফার্স্ট প্রজেক্ট ওপেন করা, প্রজেক্ট এবং Unity এর রিসোর্স ম্যানেজমেন্ট , Unity Internal Navigation, Tools এবং Interface এর খুটি নাটি, এছাড়াও এই মডিউল দুটিতে আমরা বেশ কিছু টার্ম যেমন, Game object, Parent-Child game object এবং কিভাবে গেম অব্জেক্টে ম্যাটেরিয়াল অ্যাড করতে হয় ইত্যাদি ব্যাসিক বিষয় গুলো কাভার করব।
এরপর ৩য় মডিউলে Coding এবং Scripting নিয়ে বেশ কিছু টপিক্স থাকবে , এই মডিউলে মেইনলী C# programming fundamentals and Unity System উপর বেশ গুরুত্ব দেওয়া হয়েছে।
- প্রথমেই আমরা Unity’র Built-In Libraries এবং Unity Game Engine এর ফিচার সমূহ দেখব
- Game Design এবং Gameplay Overview করব
- Monobehaviour Library এর মেথড গুলো যেমন Start(), Update(), GetComponent<>(), Time.deltaTime() ইত্যাদি সব কিছু শিখে ফেলব
- Variable কি? কিভাবে Variable ডিক্লেয়ার করতে হয়, Access Modifier এবং এর Usages দেখব
- কিভাবে Unity এর ইনপুট সিস্টেম কাজ করে দেখব
- Camera সেটআপ, ইফেক্ট এবং গেম ডিজাইন অনুযায়ী গেম ভিউ পরিবর্তন এসব দেখব
- এরপর দেখব কিভাবে Unity এর Physics Component নিয়ে কাজ করতে হয়
- Basic Collision Detection এবং Different approach of working with Collision Detections in game
- এরপরে Conditional If-Else Statement , Caching References এসব শিখব
- Usage of Tags, names for Game Object Reference
- How to rotate, scale game objects using its transform properties
এবং এই সব টপিক্স গুলো আমরা Obstacle Game টি ডেভেলপ করতে করতে শিখব, যাতে প্রাক্টিক্যালী আপনারা এগুলোর ইউজ বুঝতে পারেন।
এরপর মডিউল ৪ : এই মডিউলে আমরা User Input নিয়ে Game Object Control করা শিখব এবং এই সেকশনেই আমরা Project satellite এই গেমটি ডেভেলপ করব , 3D Game Object ব্যাবহার করে রকেট ক্রিয়েশন এই সব কিছুই আমরা Unity তেই করব
এই মডিউলে আমরা নিমোক্ত টপিক্স গুলো কাভার করব।
- Unity Physics
- Rotate(), AddRelativeForce() methods গুলো কীভাবে কল করতে হয়
- Rigidbody
- Audio Effects বা AUX
- Particle System
- Conditional Statement (Switch case) ইত্যাদি ইত্যাদি
এছাড়াও গেমে একাধিক Audio clips এবং Unity Scene Manager এর মাধ্যমে বিভিন্ন level Play করা এবং Game Loop করা দেখবো। Particle System দিয়ে Satellite এর Booster, Level complete এবং Failed Effects Implement করা হবে, স্ক্রিপ্ট গুলো রিফ্যাক্টোরিং করার মাধ্যমে অপটিমাইজ এবং Code Redundancy কমানোর টেকনিক গুলো শিখবো। গেম Environment এবং lighting tuning করা, level design নিয়ে বেশ কিছু ট্রিক্স দেখব আমরা। এবং সব শেষে আমরা গেমটি অনলাইনে পাবলিশ করব এবং কিভাবে ফ্রেন্ড দের সাথে শেয়ার করে এবং ইউজার ফিডব্যাক নিয়ে আরও গেম ইমপ্রুভ করতে হয়, সেটি ও দেখব।
মডিউল ৫ এ আমরা অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (OOP) নিয়ে আলোচনা করব এবং এই মডিউলে গেম ডেভেলপমেন্টে OOP Concept গুলো যেমন Abstraction, Encapsulation, Inheritance, Polymorphism ইত্যাদির ইমপ্লিমেন্টেশন এবং অ্যাডভান্টেজ গুলো প্র্যাক্টিক্যাল এক্সাম্পল সহকারে দেখানো হয়েছে।
মডিউল ৬: এই মডিউলে আমরা একটি Tower Defense অ্যাকশনধর্মী গেম , “Defender of the East” ডেভেলপ করব, এবং এই গেমটি তৈরি করতে করতে আমরা নিমোক্ত বিষয় গুলো সব আয়ত্ত করে ফেলব,
- Unity Grid System এর ব্যাবহার এবং গ্রীড সিস্টেম ব্যাবহার করে কিভাবে গেম ডেভেলপমেন্টের প্রসেস অনেক Easy করা যায় তা দেখব
- এরপরে আসবে Data Structure, যাদের ডাটা স্ট্রাকচার নিয়ে আগে কনসেপ্ট ক্লিয়ার ছিল না তাদের জন্য এই টপিক্সটা অনেক ইম্পরটেন্ট
- Usage of Asset Pack in Unity; Asset pack download এবং import করা এবং কিভাবে গেম অ্যাসেট প্রয়োজনমত এডিট এবং কাস্টোমাইজ করে গেমে ব্যাবহার করতে হয় তা দেখব।
- C# Scripting এ Enumerator এবং Coroutine এর ইমপ্লিমেন্টেশন এবং প্রসিডিউর গুলো শিখব
- Game Object Instantiation এবং Object Pool ব্যাবহারের অ্যাডভান্টেজ জানব
- Unity Interface, Debugging Tool , Lighting System , Particle System ইত্যাদি আরও অনেক অ্যাডভান্স বিষয় গুলো কভার করে ফেলব এই মডিউলে
এই গেমে মজার বিষয় হল এখানে আমরা বেশ কিছু Artificial Intelligence (AI) এর কাজ দেখব, যেমন Enemy Vehicles যাতে Castle এ প্রবেশ করতে না পারে তার জন্য Defense Tower গুলো আগে থেকেই আমরা Programmed করে রাখব যাতে Enemy Vehicles যেই দিকে যাবে, সেই দিকে তারা গুলি করে এবং দূরে চলে গেলে যাতে টার্গেট চেঞ্জ করে করে কাছের গুলোকে shoot করে এবং destroy করার চেষ্টা করে।
Tower Defense genre এর পরেই মডিউল ৭ এ আমরা একটি First Person Shooting (FPS) game ডেভেলপ করেছি। “House Of Zombie” নাম দেখেই বুঝা যাচ্ছে যে, এই গেমটি Zombie themed FPS game, এবং এই মজার গেমটি ডেভেলপ করতে করতে আমরা আরও নতুন নতুন বিষয় গুলো কাভার করে ফেলব
- First Person Control Camera: Unity এর asset store থেকে Standard Asset package download এবং project এ import করে, FPS camera prefab ব্যাবহার করা
- Prototyping a sandbox; Unity এর মধ্যে Primary Game Object দিয়ে level design করা দেখবো, অনেক সময় Game concept visually represent করার জন্য level prototype করতে হয়, এই বিষয়গুলো আয়ত্ত করে ফেলব
- NevMeshAgent ব্যাবহার করে Zombie AI path ঠিক করা, এই NavMeshAgent হচ্ছে Unity এর built-in AI system
FPS game এর একটি গুরুত্বপূর্ণ system হচ্ছে Weapon System, weapon কীভাবে প্লেয়ার সাথে attach করা যায়, Raycast, life damage, weapon zoom in and Zoom out, একাধিক weapon; Enum ব্যাবহার করে গেম কার্যকরভাবে রাখা যায়, different types of ammo and its count, Zombie AI responsive করা, Environment setup i.e. terrain creation and adding trees/grasses. Probuilder দিয়ে level design, texture add করা, game scene এ ঠিক মতন lighting করা, game UI এবং UI তে information দেওয়া, ইত্যাদি। এসব বিষয় গুলো আমরা প্রাক্টিক্যালী সব কিছু শিখে ফেলব
তো আশা করি , এই কোর্সে যে টপিক্স গুলো কভার করা হয়েছে তা যদি আপনি ভাল ভাবে শিখেন , প্রাক্টিস করেন এবং আস্যাইন্মেন্ট সব গুলো নিজে নিজে করে সাবমিট করতে পারেন তাহলে , আপনার গেম ডেভেলপমেন্ট নিয়ে প্রফেশন্যাল লেভেলে কাজ করার মত কনফিডেন্স গ্রো হয়ে যাবে ইন শাহ্ আল্লাহ্ এবং আপনি যেকোন গেম ডেভেলপমেন্ট কোম্পানীতে জুনিয়র গেম ডেভেলপার হিসেবে জয়েন করতে পারবেন সহজেই