সুতরাং, আপনি গেম বিকাশে যেতে চান। অথবা, আরও সুনির্দিষ্টভাবে এবং সহজভাবে: আপনি জিনিসগুলির প্রযুক্তিগত দিকে কাজ করে একজন গেম বিকাশকারী হতে চান। ওয়েল, যে কেউ কিভাবে যে প্রশ্ন আছে!
এই ক্ষেত্রে:
এই বিষয়গুলি সম্পর্কে প্রচুর তথ্য রয়েছে — এত বেশি যে এটি সহজেই আপনার মস্তিষ্ককে ওভারলোড করতে পারে, এইভাবে এটিকে সার্থক পছন্দ করা কঠিন করে তোলে।
আমার নাম আন্দ্রে মিখিভ, এবং আমি পিক্সোনিক, MY.GAMES-এর সিনিয়র ব্যাকএন্ড ডেভেলপার। আমি 20 বছর ধরে গেমিং শিল্পে আছি। আমি প্রথমে 90 এর দশকে তৎকালীন জনপ্রিয় ZX স্পেকট্রামে গেম তৈরি করার চেষ্টা করেছি। এই নিবন্ধে, আমি গেম ডেভেলপমেন্টে স্যুইচ করার সময় আপনার কাছে থাকা বিকল্পগুলিকে আলোকিত করব এবং এই বিকল্পগুলি কীভাবে আলাদা তা আমি ব্যাখ্যা করব।
এই পোস্টে, আমরা এই ধারণার অধীনে কাজ করব যে পাঠক সবেমাত্র শিল্পে তাদের যাত্রা শুরু করছে। একসাথে সবকিছু শেখা অসম্ভব, এবং তাই আপনাকে অগ্রাধিকার দিতে হবে এবং কীভাবে আপনার পড়াশোনার বিষয়ে যেতে হবে তা বেছে নিতে হবে। অবশ্যই, প্রত্যেকের একটি ভিন্ন অভিজ্ঞতা আছে; এই পেশায় বিকাশের একাধিক পথ রয়েছে।
গেম ডেভেলপমেন্টের সৌন্দর্য (এবং আইটি-এর অন্যান্য অনেক ক্ষেত্রের সাথে) হল এমন অনেক ক্ষেত্র রয়েছে যেখানে আপনি আপনার দক্ষতা প্রয়োগ করতে পারেন: আপনি একজন প্রযোজক, বিপণনকারী, শিল্পী, ডিজাইনার, স্ক্রিপ্টরাইটার, মডেলার, বিশ্লেষক, ক্লায়েন্ট-সাইড বিকাশকারী, কোর ডেভেলপার, মেটা-সার্ভিস ডেভেলপার, রেন্ডার ডেভেলপার ইত্যাদি। প্রকৃতপক্ষে, ইন্ডি গেমের জগতে, আপনাকে প্রায় সমস্ত উপরে উল্লিখিত দক্ষতাগুলি একত্রিত করতে হবে — তবে এটি অন্য দিনের জন্য একটি বিষয়।
গেম ডেভেলপমেন্টে ক্যারিয়ার শুরু করার কথা চিন্তা করার সময়, লোকেরা প্রায়শই প্রযুক্তিগত দিকগুলির উপর ফোকাস করে: ইঞ্জিনে দক্ষতা, প্রথমে বেছে নেওয়া প্রোগ্রামিং ভাষা , বা কাজ করার জন্য নির্দিষ্ট দক্ষতা।
কিন্তু মনে রাখবেন প্রযুক্তি একটি হাতিয়ার মাত্র; আপনাকে একটি নির্দিষ্ট জিনিসকে ঘিরে বিকাশকারী হিসাবে আপনার সম্পূর্ণ পরিচয় তৈরি করতে হবে না ; একজন মেকানিক রেঞ্চ নয়। আজ, এটি একটি ক্রসহেড স্ক্রু ড্রাইভার, আগামীকাল এটি একটি বৈদ্যুতিক, পরশু এটি একটি বায়ুসংক্রান্ত টুল। লক্ষ্য একটি নির্দিষ্ট স্ক্রু ড্রাইভার কীভাবে ব্যবহার করবেন তা শেখা নয়, তবে গাড়ির গঠন বোঝা এবং কীভাবে সেগুলি একত্রিত করা এবং মেরামত করা যায় তা বোঝা।
গেম ইঞ্জিন, কোডিং ভাষা এবং অন্যান্য জিনিস দিয়ে এই রেঞ্চগুলি প্রতিস্থাপন করুন — এবং বিন্দু পরিবর্তন হবে না। এগুলি আপনার ব্যবহারের জন্য কেবলমাত্র সরঞ্জাম
সুতরাং, আমার মতে, সাধারণ দক্ষতা এই পর্যায়ে সবচেয়ে গুরুত্বপূর্ণ বিষয়। কারণ আপনাকে একটি "গেম" তৈরি করার কাজটি নয়, বরং ভাল কোড লেখার জন্য চার্জ করা হয়েছে।
লক্ষ্য একটি বিলিয়ন-ডলার হিট গেম তৈরি করা নয় বরং একজন বিকাশকারী হিসাবে বৃদ্ধি করা। বিলিয়ন-ডলারের গেম তৈরি করা যাইহোক উন্নয়ন সম্পর্কে এত বেশি নয়, তবে ধারণা এবং বিপণন সম্পর্কে; কোড যে একটি গৌণ জিনিস. অবশ্যই, এই দুটি লক্ষ্য একে অপরের বিরোধিতা করে না, তবে আমি আপনার প্রথম লক্ষ্য হিসাবে অত্যাশ্চর্য সাফল্য নির্ধারণ করব না - এটি করুন এবং আপনি দ্রুত নিজেকে সাধারণভাবে সমগ্র উদ্যোগের সাথে হতাশ হতে পারেন।
কোডের বিষয়ে ফিরে, কোডের উপর একটি সাধারণ ফোকাস গুরুত্বপূর্ণ কারণ যে কোনও শিল্পে উচ্চ-মানের কোডের সর্বদা প্রচুর চাহিদা থাকবে এবং এর অনেকগুলি অ্যাপ্লিকেশন রয়েছে: গেমস, ফিনটেক, রোবট নিয়ন্ত্রণ অ্যালগরিদম, মহাকাশে রকেট চালু করা। কেউ কেউ বলতে পারেন উচ্চ-মানের কোড মানে বিশাল বিলম্ব, এবং এই ব্যবসায় সময়ই মুখ্য। এটা বিশ্বাস করবেন না। আপনি যদি ভাল কোড লিখতে পারেন, কোন ডাউনটাইম থাকবে না।
আরেকটি বিষয় হল যদি আপনার কোডটি অগোছালো হয়, তাহলে একটি উচ্চ-মানের পণ্য তৈরি করতে আপনাকে আপনার অভ্যাস সংশোধন করতে হবে এবং এতে অনেক সময় এবং প্রচেষ্টা লাগবে।
আরেকটি অত্যন্ত গুরুত্বপূর্ণ বিষয় সময় নিয়ে উদ্বিগ্ন: ভাল কোড তৈরিতে ব্যয় করা সময় সর্বদা এটি বজায় রাখার জন্য ব্যয় করা সময় হ্রাস দ্বারা অফসেট হয় । সর্বোপরি, একটি গেম এবং বিশেষত একটি মাল্টিপ্লেয়ার সহ একটি দীর্ঘস্থায়ী পণ্য এবং কোডের গুণমান এই ক্ষেত্রে অত্যন্ত গুরুত্বপূর্ণ।
অন্যান্য বিশেষজ্ঞদের আপনার কোডটি সহজে বুঝতে সক্ষম হওয়া উচিত , এটিকে পুনরায় লেখার প্রয়োজন ছাড়াই এটি মানিয়ে নিতে সক্ষম হওয়া উচিত। এবং আপনি যদি হঠাৎ করে কয়েক বছরের মধ্যে কিছু পরিবর্তন করার সিদ্ধান্ত নেন তবে আপনি সহজেই এটি পড়তে সক্ষম হবেন । একটি মোটামুটি উদাহরণ হিসাবে: এক সপ্তাহের মধ্যে বোধগম্য কিছু লেখার চেয়ে একবার উচ্চ-মানের কোড লেখার জন্য কয়েক মাস ব্যয় করা এবং কয়েক দিনের মধ্যে দ্রুত কিছু পরিবর্তন করতে সক্ষম হওয়া ভাল, তারপর প্রতিটি নাবালকের জন্য একটি মাস প্রয়োজন। ভবিষ্যতে সম্পাদনা করুন।
সংক্ষেপে, ক্লিন কোড, ক্লিন আর্কিটেকচার, ECS, SOLID, KISS, OOP, অ্যালগরিদম এবং ডেটা স্ট্রাকচার - এই সমস্ত বিষয়গুলিতে বিশেষ মনোযোগ দেওয়া উচিত যদি আপনি গেম ডেভেলপমেন্ট ক্ষেত্রে একজন ভাল প্রযুক্তিগত বিশেষজ্ঞ হতে চান।
হ্যাঁ, অ্যালগরিদম কিছু লোকের জন্য মাথাব্যথার কারণ হতে পারে। কিন্তু সাধারণ ওয়েব প্রোজেক্টের তুলনায় গেম ডেভেলপমেন্টে এই "অ্যালগরিদম এবং স্ট্রাকচার"গুলির মধ্যে আরও অনেকগুলি রয়েছে এবং আপনি যদি সেগুলি আয়ত্ত করেন তবে সেগুলি আপনার জীবনকে অনেক সহজ করে তুলবে৷
এই ধারণাগুলির আরও গভীর উপলব্ধি, স্বাভাবিকভাবেই, শুধুমাত্র অভিজ্ঞতার সাথে আসবে। সময়ের সাথে সাথে, আপনি বিভিন্ন প্রকল্পে অংশগ্রহণ করবেন, অন্যান্য বিশেষজ্ঞরা কীভাবে কাজ করে তা আপনি বুঝতে শুরু করবেন এবং গেম কোডের সাথে কাজ করার সময় আপনাকে ব্যক্তিগতভাবে কী সমস্যা হয় তা দেখতে পাবেন।
অন্য মানুষের অভিজ্ঞতা থেকে শেখা গুরুত্বপূর্ণ । ওপেন সোর্স প্রকল্পগুলি অধ্যয়ন করুন, শিল্প বিশেষজ্ঞদের বক্তৃতা শুনুন এবং মনে রাখবেন, এখন প্রচুর তথ্যের উত্স উপলব্ধ রয়েছে৷ তবে আপনার যা করা উচিত নয় তা হল আপনার প্রকল্পের রসে স্টু, বিশেষ করে যদি আপনার দলে একজন ভাল পরামর্শদাতা না থাকে। কোনো দক্ষ বিকাশকারী শূন্যে কাজ করতে পারে না। এখানে প্রধান জিনিস এটি অতিরিক্ত না করা এবং আপনি কি করছেন এবং কেন করছেন তা না বুঝেই অন্যান্য প্রকল্পের কোড ব্যবহার করা শুরু করুন।
এবং আরও একটি গুরুত্বপূর্ণ বিষয়: কোড পুনর্লিখন করা স্বাভাবিক, তা করতে ভয় পাবেন না । অধিকন্তু, প্রশিক্ষণের সময়, এটি সমালোচনামূলকভাবে গুরুত্বপূর্ণ। আপনি দেখতে পাবেন কিভাবে ভাল অনুশীলন ব্যবহার করে আপনি আপনার কোড উন্নত করতে এবং এটিকে আরও রক্ষণাবেক্ষণযোগ্য করে তুলতে পারবেন।
আপনার সাধারণ প্রোগ্রামিং দক্ষতা উন্নত করার প্রক্রিয়াটি দ্রুত নয়। এটি কয়েক মাস - এমনকি বছরও নিতে পারে। সুতরাং এটির জন্য প্রস্তুত থাকুন, কারণ আপনি এটি ছাড়া করতে পারবেন না।
আপনার যদি একটি ভাল স্টুডিওতে ইন্টার্নশিপ পাওয়ার সুযোগ থাকে তবে এটি আপনার বৃদ্ধিকে ব্যাপকভাবে ত্বরান্বিত করবে । আপনি গেম ডেভেলপমেন্টের বিভিন্ন দিক শেখার এবং পরামর্শদাতাদের কাছ থেকে আপনার প্রশ্নের উত্তর পাওয়ার সুযোগ পাবেন। তবে আসুন সত্য কথা বলি, এটি সবচেয়ে সাধারণ উপায় নয়।
স্ক্র্যাচ থেকে গেমিং শিল্পে প্রথম চাকরি খোঁজা আরেকটি চ্যালেঞ্জ। বিখ্যাত প্যারাডক্স: চাকরি পেতে হলে অভিজ্ঞতা প্রয়োজন, আর অভিজ্ঞতা পেতে হলে চাকরির প্রয়োজন। এই ক্ষেত্রে, এটি স্ব-অধ্যয়ন বিবেচনা করা মূল্যবান । চলুন অবিলম্বে অর্থপ্রদানের কোর্সের ধারণাটি বাতিল করা যাক: অনেক কারণে এগুলি সবার জন্য উপযুক্ত নয়। ভাগ্যক্রমে, গেম কোডিংয়ের সমস্ত দিকগুলির জন্য ইন্টারনেটে কয়েক ডজন এবং কয়েকশ গাইড রয়েছে।
একবার আপনি নিজের জন্য এই মৌলিক প্রশ্নগুলির উত্তর দেওয়ার পরে এবং আপনি কী এবং কীভাবে শিখবেন তা বুঝতে পারলে, আপনি কোন গেম ইঞ্জিনের সাথে কাজ করবেন তা সিদ্ধান্ত নেওয়ার সময়, এবং এটি আপনাকে প্রোগ্রামিং ভাষাও নির্ধারণ করবে যা আপনাকে শিখতে হবে।
এই বিষয়টি একটি নিবন্ধে কভার করা খুব বিস্তৃত। তদুপরি, বিকাশকারী হিসাবে, আমরা প্রোগ্রামিং ভাষার মতো ইঞ্জিনগুলিতে এতটা আগ্রহী নই। আপনি যদি বিষয়টির গভীরে যেতে চান তবে আমি আপনাকে এটি পড়ার পরামর্শ দিচ্ছি
আপনার যাত্রার শুরুতে, আপনাকে অবিলম্বে অবাস্তব ইঞ্জিন বা ইউনিটির মতো কিছু বড় এবং গুরুতর ইঞ্জিন বেছে নিতে হবে না। আপনার যদি কোনো তাত্ত্বিক বা ব্যবহারিক পটভূমি না থাকে, ওয়েব গেমের জন্য কিছু ইঞ্জিন যথেষ্ট হবে: প্লেক্যানভাস বা এর অ্যানালগগুলির মতো কিছু।
ডিফোল্ড ইঞ্জিনটিও শুরু করার জন্য একটি ভাল বিকল্প হতে পারে । এটি ইউনিটির চেয়ে সহজ এবং 2D গেমগুলিতে আরও মনোযোগী৷ এটি একটি খুব সহজ ভাষা ব্যবহার করে, লুয়া, যা শেখা সহজ।
আপনার কিছু সময় বাঁচাতে, আমি সহজভাবে ভাষার কিছু দিক বর্ণনা করব এবং সেগুলিকে অগ্রাধিকারের ক্রমে সাজিয়ে রাখব, যেমন আমি শিখব; এই আদেশ ভাষার গুণমান বা এর সমস্যার জন্য কথা বলে না। পরিবর্তে, এটি জটিলতা, প্রাসঙ্গিকতা এবং ভাষার ক্ষমতার মধ্যে ভারসাম্যের আমার মূল্যায়ন।
উদাহরণস্বরূপ, লুয়া একটি খুব আকর্ষণীয় ভাষা, শিখতে সহজ, আপনি ডিফোল্ড ইঞ্জিন ব্যবহার করে এটি দিয়ে একটি গেম লিখতে পারেন। কিন্তু আপনি এটিকে আপনার উন্নয়ন অভিজ্ঞতার জন্য প্রধান ভাষা হিসেবে বেছে নিতে পারবেন না। এটি একটি সহায়ক ভাষা যা C++ বা C# এর মতো আরও জনপ্রিয় ভাষার সাথে একত্রে ব্যবহৃত হয়।
অবশ্যই, এটি সমস্ত প্রোগ্রামিং ভাষার একটি সম্পূর্ণ তালিকা নয়। তাদের মধ্যে এক ডজনেরও বেশি রয়েছে। কিন্তু এই আমি আপনার জন্য নির্দেশ মত মনে হয় কি. সুতরাং, এখানে আমি কি শিখব এবং কোন ক্রমে:
C#: আপনি যদি উন্নয়নে গুরুত্ব সহকারে এবং দীর্ঘ সময়ের জন্য কাজ করার পরিকল্পনা করেন, তাহলে জনপ্রিয় সাধারণ-উদ্দেশ্য ভাষা দিয়ে শুরু করা ভাল। C# তাদের মধ্যে একটি। এটি আপনার ব্যাকআপ প্ল্যানের জন্য উপযুক্ত একটি ভাষাও: এমনকি আপনি যদি হঠাৎ করে গেম ডেভ নিয়ে বিরক্ত হয়ে যান, আপনি C# এ বিভিন্ন ধরনের সফ্টওয়্যার লিখতে পারেন, যেমন ফিনটেক, ব্যবসায়িক অ্যাপ্লিকেশন ইত্যাদি।
C# আপনাকে স্ট্যান্ডার্ড প্রোগ্রামিং ধারণার সাথে পরিচিত হতে এবং বিভিন্ন উন্নয়ন পদ্ধতি বাস্তবায়নের অনুমতি দেবে। আপনি OOP, CQRS, DDD, ECS এর মতো আপাতদৃষ্টিতে ভীতিকর সংক্ষিপ্তসারগুলি সম্পর্কে সমস্ত কিছু শিখবেন। অবশ্যই, এই পদ্ধতিগুলির বেশিরভাগই যে কোনও প্রোগ্রামিং ভাষায় প্রয়োগ করা যেতে পারে। কিন্তু সূক্ষ্মতা আছে. উদাহরণস্বরূপ, সমস্ত ভাষায় "শ্রেণির" ধারণা নেই এবং সেই অনুযায়ী, ধারণাগুলি ভিন্নভাবে প্রয়োগ করা হয়। এটি একজন নবজাতক বিকাশকারীর মনকে উড়িয়ে দিতে পারে এবং অনুপ্রেরণামূলক সমস্যা সহ একগুচ্ছ অপ্রয়োজনীয় সমস্যা তৈরি করতে পারে। সুতরাং, আমার মতে, C# হল সেরা (কিন্তু সহজ নয়) বিকাশে ক্যারিয়ার শুরু করার জন্য , উদাহরণস্বরূপ, জাভাস্ক্রিপ্টের তুলনায়।
জাভা : C# এর মতো, জাভা একটি সাধারণ-উদ্দেশ্য ভাষা। কিন্তু গেম ডেভেলপমেন্টে, এটি প্রধানত সার্ভারের ক্ষেত্রে প্রাসঙ্গিক। অবশ্যই, জাভা গেম ইঞ্জিন রয়েছে (উদাহরণস্বরূপ, লিবিজিডিএক্স), তবে সেগুলি গেম ডেভেলপমেন্টের জন্য ইউনিটির মতো জনপ্রিয় নয়।
আবার, এই সাধারণ ভাষাগুলি এমন পরিস্থিতির জন্য ভাল যখন আপনি ইতিমধ্যে জাভা জানেন, তবে কাজ করুন, উদাহরণস্বরূপ, ফিনটেক - এবং তারপরে হঠাৎ আপনি একটি গেম তৈরি করার সিদ্ধান্ত নেন। আপনি শুধুমাত্র একটি পরীক্ষার খাতিরে স্ক্র্যাচ থেকে একটি নতুন ভাষা শিখতে চান না, তাই না?
জাভাস্ক্রিপ্ট : স্ট্যাক ওভারফ্লো-এর অন্যতম প্রতিষ্ঠাতা জেফ অ্যাটউড বলেছেন, “জাভাস্ক্রিপ্টে যা কিছু লেখা যায় তা জাভাস্ক্রিপ্টে লেখা হবে। "
এটা দুঃখজনক কিন্তু সত্য যে এই ভাষায় আরও বেশি গেম প্রজেক্ট লেখা হচ্ছে। আসল বিষয়টি হল জাভাস্ক্রিপ্ট খুব সহজ, বিশেষ করে নতুনদের জন্য। এবং আপনি যদি কোনো ধরনের ওয়েব ইঞ্জিনে কাজ করেন, তাহলে সম্ভবত আপনাকে বলা হবে আপনার কোডের লাইন কোথায় লিখতে হবে।
এর সরলতা সত্ত্বেও, আমি মনে করি না জাভাস্ক্রিপ্ট গেম ডেভেলপমেন্টে আপনার যাত্রা শুরু করার জন্য একটি ভাল জায়গা। এটি অন্যান্য সাধারণ-উদ্দেশ্য ভাষার থেকে খুব আলাদা, এবং এটি বিকাশকারীদের উপর কৌশল চালাতে পারে। এই ধারণাটি একটি বিকাশকারী তাদের প্রথম প্রোগ্রামিং ভাষা থেকে ধারণার পরিপ্রেক্ষিতে চিন্তা করে । এতে কিছু সত্যতা আছে, তাই একেবারে শুরুতে আরও সাধারণ কৌশল এবং পন্থা শেখা ভালো। কিন্তু আপনি যদি ওয়েব গেমগুলি দিয়ে শুরু করার সিদ্ধান্ত নেন, আপনি সম্ভবত জাভাস্ক্রিপ্ট ছাড়া যেতে পারবেন না। এটি ওয়েব জগতে রাজত্ব করে। এই ক্ষেত্রে, আমি আপনাকে TypeScript এ মনোযোগ দিতে পরামর্শ দেব। এই ভাষাটি C# এর সাথে খুব সাদৃশ্যপূর্ণ এবং ভবিষ্যতে অন্য ভাষায় স্যুইচ করা সহজ করে তুলবে।
লুয়া/পাইথন: কেন আমি তাদের একসাথে রাখলাম? এগুলি স্ক্রিপ্টিং ভাষা, সাধারণত গেম লজিকের পৃথক অংশগুলিকে স্ক্রিপ্ট করতে ব্যবহৃত হয়। (হ্যাঁ, ডিফোল্ডের মতো ইঞ্জিন রয়েছে যেখানে এইগুলি প্রধান বিকাশের ভাষা। তবে এগুলি নিয়মের ব্যতিক্রম।) উদাহরণস্বরূপ, পাইথন ইনলাইন স্ক্রিপ্টিংয়ের জন্য একটি খুব জনপ্রিয় টুল, এবং এটি ব্লেন্ডার 3D এডিটরে ব্যবহৃত হয়।
লুয়া এবং পাইথন জানা এবং ব্যবহার করতে সক্ষম হওয়া দরকারী, তবে আমি আগেই বলেছি, এগুলি সহায়ক ভাষা এবং আমি সেগুলিকে পরে রাখব। যদি না, অবশ্যই, আপনি আপনার প্রথম প্রকল্পের জন্য ডিফোল্ড ইঞ্জিন বেছে নেন, তাহলে লুয়া অপরিহার্য।
C++ : আপনাদের মধ্যে কেউ কেউ অবাক হতে পারেন যে C++ তালিকার নীচে রয়েছে। এবং এটি ভাষা খারাপ বলে নয়, তবে এর পথটি সবচেয়ে কঠিন। এটি উপস্থাপিত ভাষাগুলির মধ্যে সবচেয়ে শক্তিশালী ভাষা, তবে তার নিজস্ব বৈশিষ্ট্য সহ সবচেয়ে জটিলও।
AAA গেমগুলি তৈরি করতে C ++ ব্যবহার করা হয় এবং এটি হার্ডওয়্যার থেকে সর্বাধিক লাভ করা সম্ভব করে তোলে। কিন্তু আমি একজন নবজাতক বিকাশকারীকে এটি সুপারিশ করব না - সম্ভাবনা বেশি, আপনি শিল্পে হতাশ হবেন। কিন্তু আপনি যদি সত্যিই জানেন যে C++ আপনার আসলেই প্রয়োজন — এবং আপনি জড়িত অসুবিধাগুলিকে ভয় পান না এবং আপনার কাছে একটি পরিষ্কার পরিকল্পনা আছে — তাহলে এগিয়ে যান!
একটি প্রোগ্রামিং ভাষা নির্বাচন করা গুরুত্বপূর্ণ, কিন্তু ভুলে যাবেন না যে প্রথমে এবং সর্বাগ্রে আপনাকে আপনার প্রযুক্তিগত ইংরেজির স্তর বাড়াতে হবে — এটি আপনাকে গাইড, কোর্স এবং মূল্যবান তথ্যের অন্যান্য উত্স নেভিগেট করতে সহায়তা করবে
আমার মতে, এটি একটি গেম ডেভেলপারকে পরবর্তী সিদ্ধান্ত নিতে হবে। (মোবাইল গেমস, AAA, বা ওয়েব গেম তৈরির মধ্যে পছন্দের মতো কিছু নয়।) কারণটি সহজ: আপনার যাত্রার একেবারে শুরুতে, আপনার কাছে অবশ্যই বড় গেম তৈরির পছন্দ থাকবে না। এটি সম্পর্কে চিন্তা করুন, আপনার বেল্টের নীচে কোন অভিজ্ঞতা ছাড়াই আপনি কীভাবে তারকভ থেকে পালাতে বা কল অফ ডিউটি নিয়ে কাজ করতে পারেন? আপনার প্রথম গেমটি বড় এবং জটিল হওয়া উচিত নয়, অন্যথায়, আপনি এটি শেষ করতে পারবেন না। আপনি শুধু জ্বলে উঠবেন এবং গেম ডেভেলপমেন্ট ছেড়ে যাবেন।
আপনি ঠিক কি করতে চান তা বোঝা ভাল। একজন অভিজ্ঞ বিকাশকারীর জন্য, এটি এত গুরুত্বপূর্ণ নয়, তবে শুরুতে, এই প্রশ্নের উত্তর সম্ভাব্য অধ্যয়নের পথগুলিকে সংকুচিত করবে।
একক-প্লেয়ার বনাম মাল্টি-প্লেয়ারের পরিপ্রেক্ষিতে: ক্লায়েন্ট ডেভেলপমেন্টের দৃষ্টিকোণ থেকে (অর্থাৎ, খেলার অংশ যার সাথে প্লেয়ার সরাসরি ইন্টারঅ্যাক্ট করে), একজন ডেভেলপারের জন্য পার্থক্য ততটা বড় নাও হতে পারে। কিন্তু মাল্টিপ্লেয়ারের জন্য একটি ব্যাকএন্ড এবং এর সাথে সম্পর্কিত সমস্ত সমস্যা প্রয়োজন, এবং এটি একটি পৃথক, এবং বিশাল, বিষয়।
একটি একক-প্লেয়ার গেম এই ক্ষেত্রে সহজ কারণ আপনাকে অন্যান্য খেলোয়াড়দের জন্য বিশ্বের অবস্থা সিঙ্ক্রোনাইজ করা, গেমের লজিক আলাদা করা বা এই জাতীয় অন্যান্য সমস্যা নিয়ে চিন্তা করতে হবে না।
গেম মেকানিক্সের পরিপ্রেক্ষিতে, একটি একক-প্লেয়ার গেমটি মাল্টিপ্লেয়ারের চেয়ে অনেক সহজ হতে পারে — এবং প্রকল্পটি যত সহজ, আপনার পক্ষে এটি শেষ করা তত সহজ। এবং আপনি যা শুরু করেছেন তা শেষ করা যে কোনও ব্যবসায় একটি গুরুত্বপূর্ণ দক্ষতা!
সংক্ষেপে, আমি একক-প্লেয়ার গেমগুলি দিয়ে শুরু করার পরামর্শ দেব — এটি আরও সহজ হবে । কিন্তু আপনি যদি সত্যিই বন্ধুদের সাথে খেলতে কিছু সাধারণ মাল্টিপ্লেয়ার গেম তৈরি করতে চান, তাহলে কেন নয়? আপনাকে শুধু বুঝতে হবে যে আপনার প্রথম কাজের সংস্করণ পেতে আরও সময় লাগবে। যাইহোক, একজন ব্যক্তির অভ্যন্তরীণ ড্রাইভ একটি খুব জটিল জিনিস — সম্ভবত অনলাইন গেমগুলি তৈরি করা আপনাকে একক-প্লেয়ার গেমগুলির চেয়ে অনেক বেশি অনুপ্রাণিত করবে, আপনার প্রথম প্রকল্পটি শেষ করার সুযোগ বাড়িয়ে দেবে।
আচ্ছা, এখানে আমরা মূল প্রশ্নে আসি—আপনি যদি গেম তৈরি করতে চান তাহলে ঠিক কোথা থেকে শুরু করবেন?
ধরা যাক আমরা ইতিমধ্যে মোটামুটিভাবে বুঝতে পারি যে আমরা প্রথম স্থানে কোন ধরনের খেলা তৈরি করতে চাই। আমরা জানি কি ধরনের প্রোগ্রামিং ভাষা প্রধানত ব্যবহৃত হয় এবং কোন ইঞ্জিনে ব্যবহার করা হয়। এই পর্যায় যখন এই ভাষা এবং ইঞ্জিন নির্বাচন করা আবশ্যক. (আমি C# দিয়ে শুরু করার পরামর্শ দিচ্ছি। AAA হিট তৈরি করতে আপনার C++ লাগবে, কিন্তু পরবর্তীতে যখন আমরা অভিজ্ঞতা অর্জন করি তখন সেগুলি সংরক্ষণ করি।) সুতরাং, আমাদের ভাষা-ইঞ্জিন কম্বো হতে পারে C# + ইউনিটি । এই চাহিদা এবং একটি চমৎকার পছন্দ করা হয়.
এটি একটি গুরুত্বপূর্ণ বিষয়: একটি ইঞ্জিন দিয়ে শুরু করবেন না, প্রথমে ভাষা নির্বাচন করুন । একটি ভাষা ছাড়া, আপনি মোটেও কার্যকরভাবে ইঞ্জিন শিখতে পারবেন না; আপনি উদাহরণ এবং ডকুমেন্টেশনে কিছু বুঝতে পারবেন না এবং আপনি কেবল বিভ্রান্ত হবেন। আদর্শভাবে, আপনি ভাষা আয়ত্ত করার আগে এবং আত্মবিশ্বাসের সাথে সহজ প্রোগ্রাম লিখতে পারার আগে আপনি একটি গেম ইঞ্জিন শিখতে শুরু করবেন না।
আপনার প্রোগ্রামিং দক্ষতা উন্নত করতে, যেমন প্রকল্পগুলি দেখুন
আপনি আপনার ভাষা একটু হ্যাং করার পরে, আপনি অবশেষে ইঞ্জিন অধ্যয়ন শুরু করতে পারেন. 2023 সালে, এই বিষয়ে প্রচুর তথ্য রয়েছে: ইন্টারনেট সম্পদে পরিপূর্ণ; আপনার পছন্দের যেকোনো কিছুর জন্য কয়েক ডজন YouTube চ্যানেল। প্লাস, যেমন আমি বলেছি, ঐক্য অত্যন্ত জনপ্রিয়, তাই উপাদানের কোন অভাব নেই।
আপনি ইঞ্জিনের নির্মাতাদের দ্বারা যেকোনো সমস্যার একটি ভিডিও সমাধান খুঁজে পেতে পারেন (সরাসরি ইউনিটি হাবে উপলব্ধ, যা আপনি শুরুতে ইনস্টল করবেন),
সেগুলি শুরু করার তিনটি মৌলিক পদক্ষেপ ছিল এবং সেখান থেকে আপনার পথ চলতে পারে৷ আমাকে একটি আনুমানিক রূপরেখা দিতে দিন.
একবার আপনি আপনার নির্বাচিত ভাষা এবং ইঞ্জিনের কিছুটা শিখলে, একটি সাধারণ গেম তৈরি করার চেষ্টা করুন । যেকোনো খেলা, এমনকি টিক-ট্যাক-টো। আপনি যেমন চান সবকিছু করুন - কোন সীমা নেই। আপনাকে অবশ্যই কোডটি লিখতে হবে। ( স্ট্যাক ওভারফ্লো থেকে কপি-পেস্ট করা এড়িয়ে চলুন, যা তবুও একটি খুব দরকারী সম্পদ)। মূল মাপকাঠি হল যে গেমটি অবশ্যই কাজ করবে।
এরপরে, গেমের জন্য কিছু নতুন বৈশিষ্ট্য নিয়ে আসুন এবং সেগুলি যোগ করার চেষ্টা করুন । উদাহরণস্বরূপ, আপনি যদি একটি প্ল্যাটফর্ম তৈরি করেন, তাহলে এমন একটি বৈশিষ্ট্য তৈরি করার চেষ্টা করুন যা একটি বোতাম টিপে স্তরের মাধ্যাকর্ষণ পরিবর্তন করে; বা স্তরের এক অংশ থেকে অন্য অংশে টেলিপোর্ট করার ক্ষমতা।
আপনার কাজের খসড়াতে নতুন কিছু যোগ করা কতটা সহজ/কঠিন ছিল তা লক্ষ্য করার চেষ্টা করুন। কোডের কাঠামো পরিবর্তন করার জন্য আপনার প্রয়োজনীয় পরিমাণ এবং আরও অনেক কিছু। এর পরে, সর্বোত্তম অনুশীলনগুলি অধ্যয়ন করুন, অন্যান্য বিকাশকারীরা কীভাবে প্রকল্পটি সংগঠিত করার পরামর্শ দেয় তা দেখুন এবং কোড (OOP, SOLID, KISS), এবং আপনার নতুন জ্ঞানকে বিবেচনায় রেখে গেমটি পুনরায় লিখুন।
তারপরে, আবার একটি নতুন বৈশিষ্ট্য নিয়ে আসুন এবং সেই নতুন জ্ঞান ব্যবহার করে এটি তৈরি করুন ৷ কীভাবে উন্নত কোডটি আপনার জন্য একটি নতুন বৈশিষ্ট্য যুক্ত করা সহজ বা কঠিন করে এবং আপনি কতগুলি বাগ খুঁজে পেতে পারেন তা বিবেচনা করুন৷
ধীরে ধীরে, বেশ কয়েকটি পুনরাবৃত্তির মাধ্যমে, প্রকল্পে জটিলতা যোগ করুন এবং আপনি যে পাঠগুলি শিখেছেন তার সাথে এটি পুনরায় লিখুন।
ধরে নিচ্ছি যে আপনি কোণগুলি কাটাবেন না, আপনি দেখতে পাবেন যে আপনার সিদ্ধান্তগুলি কীভাবে হস্তক্ষেপ করে বা নতুন বৈশিষ্ট্যগুলি বাস্তবায়নে সহায়তা করে। কোড মানের একটি প্রধান মানদণ্ড হল প্রকল্পে পরিবর্তন করা কতটা সহজ। দুর্ভাগ্যবশত, এর জন্য কোন সুস্পষ্ট আইন নেই; এটা সব অভিজ্ঞতা সঙ্গে আসে.
আপনি যদি সহজ গেম তৈরি করতে চান না, আপনি পরিবর্তে পৃথক মেকানিক্স কোডিং করে শুরু করতে পারেন । উদাহরণস্বরূপ, আপনি কিছু পৃষ্ঠে চালিত কয়েকটি কিউবের সমন্বয়ে একটি প্রাথমিক "কার" তৈরি করে শুরু করতে পারেন — তারপরে, ধীরে ধীরে মিশ্রণে অন্যান্য মেকানিক্স যোগ করুন।
এর পরে, আপনি একটি আরও জটিল গেম নিয়ে আসতে পারেন — এবং আবার প্রকল্পটি উন্নত করতে বেশ কয়েকটি পুনরাবৃত্তির মধ্য দিয়ে যেতে পারেন। আপনি যদি একটি আকর্ষণীয় ফলাফল পান, আপনি শেষ পর্যন্ত স্টোরগুলিতে এই গেমটি প্রকাশ করার চেষ্টা করতে পারেন।
আপনি মাধ্যমে মুক্তি চেষ্টা করতে পারেন
আমি আপনাকে গেম রিলিজ সম্পর্কিত একটি ছোট লাইফ হ্যাক অফার করতে পারি: ওয়েব/ব্রাউজার গেমস । যদিও এই বিন্যাসটি জনপ্রিয়তা হারিয়েছে বলে মনে হচ্ছে ব্যবহারকারীরা এখন প্রধানত মোবাইল ডিভাইস, পিসি বা কনসোলে খেলে, ওয়েব গেমগুলির এখনও পর্যাপ্ত দর্শক রয়েছে, তাই আপনি একটি হিসাবে আপনার প্রথম প্রজেক্ট চালু করার চেষ্টা করতে পারেন। এটি মোবাইল ডিভাইসে একটি নেটিভ গেম হিসাবে প্রকাশ করার চেয়েও অনেক সহজ।
মোবাইল গেমের প্রতিযোগীতা প্রচণ্ড, এবং আপনার গেমটি অলক্ষিত হয়ে যাওয়ার সম্ভাবনা বেশি, ধরে নিচ্ছি যে এটি প্রচারিত হয়নি — এবং প্রকাশক ছাড়া একটি প্রকল্পের প্রচার করা খুব কঠিন। ওয়েব গেমগুলির জন্য, বিশেষ পোর্টাল রয়েছে (উদাহরণস্বরূপ: আর্মার গেমস, নিউগ্রাউন্ডস, ওয়েবগেমস ) যেগুলি এই প্রকল্পগুলি হোস্ট করে: এটি সেখানে প্রকাশ করা খুব সহজ এবং আপনি বিজ্ঞাপনের মাধ্যমেও কিছু উপার্জন করতে পারেন৷ আপনার আশা জাগিয়ে তুলবেন না, কিন্তু তবুও, যদি এটি ঘটে তবে এটি একটি আনন্দদায়ক বোনাস।
এখন, একটু সতর্কতা। আজকাল, "নো-কোড" পদ্ধতি খুব জনপ্রিয়। কোড না লিখেই একটি প্রজেক্ট তৈরি করা হয়। (এটিকে "মাউস-ক্লিক প্রোগ্রামিং"ও বলা হয়)। আমার উপদেশ? এই পদ্ধতি থেকে দূরে থাকাই ভালো।
এই নো-কোড পদ্ধতিগুলি গেম মেকানিক্স চেষ্টা করার জন্য বা একটি সাধারণ প্রোটোটাইপ তৈরি করার জন্য আদর্শ। কিন্তু আমাদের একটি ভিন্ন সামগ্রিক লক্ষ্য রয়েছে — এবং কোড ছাড়া একটি সাধারণ গেম একত্রিত করা আপনাকে ডেভেলপার হওয়ার কাছাকাছি নিয়ে আসবে না।
মনে রাখবেন: কোন পরিমাণ নিবন্ধ পড়া এবং YouTube গাইড দেখা অনুশীলনকে প্রতিস্থাপন করতে পারে না। শুধুমাত্র বেশ কয়েকটি (এবং সত্যিই, বেশ কয়েকটি, শুধু একটি নয়) প্রকল্প তৈরি করে, আপনি অর্থপূর্ণ কিছু শিখবেন। গেম ডেভেলপমেন্টে একজন প্রোগ্রামার হিসাবে আপনার পথ চার্ট করতে, এখানে মানতা হল ধাপে ধাপে, সহজ থেকে জটিল পর্যন্ত।
আমি গেম ডেভেলপমেন্ট এবং প্রোগ্রাম গেম শুরু করার বিষয়ে কিছু পরামর্শ দেওয়ার চেষ্টা করেছি। সঠিক ভাষা এবং ইঞ্জিন নির্বাচন করা, অধ্যবসায় এবং অধ্যবসায়, প্রতিক্রিয়া সংগ্রহ করা, এবং আত্মদর্শন — এগুলো সবই খুবই গুরুত্বপূর্ণ। তবে এই প্রক্রিয়াটির আরেকটি উপাদান রয়েছে যা উপেক্ষা করা যায় না: মজা করা।
আপনি যদি গেমস সম্পর্কে উত্সাহী না হন এবং আপনি সেগুলি না খেলেন, সম্ভবত, এই উদ্যোগ থেকে কিছুই আসবে না; একটি দুঃখজনক সত্য যা মূলত যেকোনো সৃজনশীল কাজের ক্ষেত্রে প্রযোজ্য। মজা ছাড়া, এটি অর্থ উপার্জনের জন্য কিছু রুটিন হয়ে যাবে। অবশ্যই, আপনি যেভাবেই হোক বছরের পর বছর আগ্রহ হারিয়ে ফেলতে পারেন, কিন্তু আশা করি ততক্ষণে, আপনি ইতিমধ্যেই সম্পন্ন হবেন এবং কিছু সম্পর্কিত কাজের মধ্যে বেছে নিতে সক্ষম হবেন, অথবা আপনি সেই সময়ে আপনার জন্য নতুন এবং আকর্ষণীয় কিছু করার জন্য যথেষ্ট উপার্জন করতে পারবেন।
বিশেষ করে আপনার যাত্রার শুরুতে, সমস্ত কাজ এবং কোন খেলা অবশ্যই বার্নআউট এবং হতাশার দিকে পরিচালিত করবে।
অতএব, আমার পরামর্শের শেষ অংশ: আপনি যে জিনিসটি আপনাকে উত্সাহী করে তোলে তা সন্ধান করুন , যে জিনিসটি আপনাকে দিন এবং রাতের জন্য একটি প্রকল্পে কাজ করতে চালিত করে (অবশ্যই, আপনার আক্ষরিক অর্থে এটি করা উচিত নয়!) একবার আপনি আপনার ড্রাইভিং প্রেরণা খুঁজে পান, যা অন্যথায় একটি সাধারণ রুটিন একটি আকর্ষণীয়, আকর্ষক চ্যালেঞ্জে পরিণত হবে — এবং এটি আপনার পেশাদার বৃদ্ধিকে ত্বরান্বিত করবে নিশ্চিত!
এছাড়াও এখানে প্রকাশিত.