একটি শ্রদ্ধেয় পরামর্শ
// জিরো থেকে অ্যামেচারে কয়েক বছর ধরে শেখা
আমি অবশ্যই ইউনিটি বা টর্ক টু ডি এমআইটির মতো উচ্চ স্তরের ইঞ্জিনগুলি থেকে দূরে থাকব। এগুলি ছোট ছোট প্রোটোটাইপগুলির জন্য দুর্দান্ত তবে আমি নিজের ভিডিও গেমটি বিকাশের জন্য এগুলি কখনই গুরুত্ব সহকারে নেব না। কেন আমি? সাধারণ সাইডস্ক্রোলার বা আর্কেড রিমেক ছাড়া এটি আর কিছু না হলে পয়েন্টটি কী?
বেশিরভাগ গেম ইঞ্জিন, লাইব্রেরি বা ফ্রেমওয়ার্কগুলি আপনি কখনও ব্যবহার করবেন না এমন ফাংশন এবং বৈশিষ্ট্য সহ পুরো প্রচুর ফোলা কোড সহ সাধারণ কাজগুলির চেয়ে সহজ কিছুই না।
বছরখানেক আগে যখন আমি গেম বিকাশে নতুন ছিলাম, আমি শীর্ষে শুরু করেছি। খুব উচ্চ স্তরের ইঞ্জিন। আরপিজি মেকারের মতো খুব বেশি কিছু নয়, তবে অবশ্যই সেখানে Unক্য এবং টর্কের মতো উচ্চতা রয়েছে। তারপরে আমি এক্সএনএ এবং সি # তে চলে গেলাম, কারণ এর অনেক সংস্থান এবং টিউটোরিয়াল ছিল। আমার প্রাথমিক প্রকল্পটির পারফরম্যান্সের প্রয়োজন ছিল, বা সম্ভবত আমি আমার সফ্টওয়্যারটিতে অবিশ্বাস্য পারফরম্যান্স চাওয়া সম্পর্কে কেবল আবেগপ্রবণ - বাধ্যতামূলক, যদিও এটি কোনও বড় প্রকল্প নয়। এক্সএনএ কেবল এটি কাটেনি, এবং ইঞ্জিনটি নিয়ে আমার প্রচুর সমস্যা হয়েছিল যা আমি পড়েছিলাম ঠিক করতে মাথা ব্যথার দরকার পড়ে। আপনি যখন একই কাজ করছেন (এক্সএনএ বাগগুলি এবং সমস্যাগুলি ঠিক করছেন) আপনি যখন নিজের ইঞ্জিনটি সি ++ এ ঘূর্ণন করছেন তখন এক্সএনএ / সি # এর মতো "উচ্চ স্তরের" কিছু ব্যবহার করার কী দরকার?
বেশ কিছুক্ষণ শেখার পরে, আমি শেষ পর্যন্ত কীভাবে গেম ইঞ্জিনগুলি ডিজাইন করা হয়েছিল এবং সেগুলি ইঞ্জিনগুলির কোডটি নিজেরাই সন্ধান করতে শুরু করেছি। বেশিরভাগ পেশাদারদের কী বলতে হবে এবং গেম ইঞ্জিনগুলির সমালোচকদের অভিযোগগুলি পড়লে আমি বুঝতে পেরেছিলাম, 'এমনকি একটি ইঞ্জিন কেন ব্যবহার করবেন? "
আমার সি ++ প্রকাশিত হওয়া এবং সেই ভাষায় ব্যবহৃত কিছু দর্শন দর্শনে প্রবেশ করা আমাকে অনেক সাহায্য করেছিল। যাইহোক, আমি এতটুকু সম্পর্কে শিখতে এতটা সময় ব্যয় করেছি যে আমি কেবল একটি গেম তৈরি করা শুরু করতে চেয়েছিলাম।
তাই আমি বেশ কিছু প্রশংসাসহ কিছু দিয়ে শেষ করেছি, এটি ছিল সি ++ এবং খুব নিম্ন স্তরের: এসডিএল। দুর্ভাগ্যক্রমে, এটি একটি মাথা ব্যাথা ছিল। এটি এত নিম্ন স্তরের, আমি কেন এই লাইব্রেরিটি ব্যবহার করার জন্য কোনও কারণ ছাড়াই দেখতে পাচ্ছি। আমি বরং ওপেনজিএল শিখি এবং নিজেই স্ক্র্যাচ থেকে করব। সত্যি বলতে, এটি বেশিরভাগ সত্য ছিল যে আমার নিজের কোডটি বাস্তবায়নের জন্য একটি চিত্রের ফ্লিপ করার মতো মৌলিক কিছু করার প্রয়োজন ছিল (এবং অন্যের প্রয়োগটি কীভাবে আমি স্প্রাইটস পরিচালনা করছিলাম তার কারণেই এটি কাজ করছিল না) যা আমাকে স্থায়ীভাবে এসডিএল ট্র্যাসে ফেলে দেয়। আপনি যদি কোনও সফ্টওয়্যার রেন্ডারার চান তবে এটি দুর্দান্ত, তবে আইএমও পরিবর্তে হার্ডওয়্যার (ওপেনজিএল) বা উচ্চতর (এসএফএমএল) এর সাহায্যে এটি ট্র্যাশ করতে চাই।
অ্যামাজনে আর একটি বই কিনতে এবং আরও একটি এপিআই শিখতে চাইছেন না, আমি আরও উপরে গিয়েছিলাম। এসএফএমএল কেবল দুর্দান্ত, পুরো ইন্টারনেটে খুব প্রশংসিত প্রশংসা করার কথা নয়। আমি প্রায় নেতিবাচক ছাড়া ইতিবাচক পর্যালোচনাগুলির একটি অন্তহীন সংখ্যা পড়েছি। আমি এসডিএলের জন্য একই বলতে পারি না। এটি চূড়ান্ত সমস্ত মৌলিক বিষয়গুলি পরিচালনা করে তবে বাকিটি আমার এবং আমার পছন্দের অন্যান্য গ্রন্থাগারগুলিতে রেখে দেয়। আমি তখন থেকেই এর সাথে আটকে আছি।
আইএমও, একটি গেম ইঞ্জিন কেবল নির্বাক। বিশেষজ্ঞ এবং শিক্ষানবিস প্রোগ্রামার উভয়ের জন্য নিম্ন স্তরের গ্রন্থাগারগুলি অনেক ভাল পছন্দ।
আরও লক্ষণীয়, আমি প্রোগ্রামিং ধারণাগুলি সম্পর্কে আরও শিখেছি এবং যখন উচ্চ স্তরের ডাব্লুওয়াইএসআইওয়াইজি গেম ইঞ্জিনগুলির সাথে আমি কখনও শিখেছি তার চেয়ে কম স্তরে জিনিসগুলি পরিচালনা করার জন্য আমার সফ্টওয়্যার বিকাশ দক্ষতা আরও তীব্র করে তুলেছি।
ইউনিটির মতো কিছু আপনাকে এক্সএনএ দিয়ে দেয়? ভিজ্যুয়াল এডিটিং এবং ক্রাচ। Newbies অবশেষে শিখবে আপনাকে এখনও পুরো গেমটি কোড করতে হবে ঠিক তেমনভাবেই যদি আপনি সি ++ খালি করে থাকেন এবং ভিজ্যুয়াল এডিটররা নিজের তৈরি করতে পারেন এমন কিছুতে অক্ষম।
এক্সএনএর মতো কিছু আপনাকে এসএফএমএল বা ওপেনজিএল এবং অন্যান্য দরকারী গ্রন্থাগারগুলির নিজস্ব প্রয়োগের মাধ্যমে কী দেয়? আইএমও, অ্যাবসুটুটলে ভালো কিছু নেই। এর চেয়ে খারাপ পারফরম্যান্স, সি ++ এর পরিবর্তে সি #, নবাগত টিউটোরিয়ালগুলির আধিক্য কিন্তু উল্লেখযোগ্যভাবে কম পেশাদারিত্ব, এবং কিছু মাথা ব্যাথা বাঁচাতে পারে যে আইএমও আপনাকে কেবল সি ++ দিয়ে কী শিখতে হবে তার জন্য আরও একবার ক্রাচ। আমি প্রাথমিকভাবে সি ++ এর সাথে ভয় পেয়েছিলাম এবং সি # পছন্দ করতাম, বেশিরভাগ শ্রুতিমধুর মতামতের শ্রবণ-গুজব এবং গুজবগুলির কারণে যাদের আমার প্রথম দিকে সি ++ এর সাথে একই সমস্যা ছিল: আমি কেবল একটি ভাল যথেষ্ট প্রোগ্রামার চাইছিলাম। আমি বুঝতে পেরেছিলাম যে সি ++ এর সাথে আমার যে ঝামেলা ছিল তা কাটিয়ে উঠতে আমার আরও মৌলিক বিষয়গুলি জানতে এবং আমার দুর্বলতাগুলি আরও তীব্র করা দরকার, যা সি # "সহজ করে তুলেছিল।" আমি কি কখনও সি # তে কিছু জিনিসের সরলতা মিস করি? এমনকি না! কোনও ঝামেলা ছাড়াই কীভাবে এটি সি ++ এ করবেন তা আমি জানি।
যদি নিম্ন স্তরের গ্রন্থাগারগুলি বা ডাইরেক্টএক্স / ওপেনজিএল আপনাকে ভয় দেখায়, তবে আপনি পুরো ভিডিও গেমটি তৈরির জটিলতায় না পড়া পর্যন্ত অপেক্ষা করুন।
গেম ইঞ্জিনগুলির বিষয়ে আমার দর্শনটি বিচ্ছিন্ন পরিস্থিতিতে বাদ দিয়ে ইঞ্জিনগুলির অপ্রয়োজনীয়তা এবং অকেজোতার ব্যাখ্যা দেওয়ার জন্য দুটি উদাহরণে সংক্ষিপ্ত করা যেতে পারে।
নিম্ন স্তরের গ্রন্থাগারগুলি নিয়ে ভয় দেখানো নবীনদের একটি দখল হবে যখন তারা আবিষ্কার করবে যে ইউনিটির মতো উচ্চ স্তরের ইঞ্জিন সহ (গ্রাফিক্স রেন্ডারিং, অডিও প্লেিং, সামগ্রী লোডিং; আসল বেসিক স্টাফ ছাড়াও) এটি গেমটি তৈরির মতো প্রায় একই রকম হবে স্ক্র্যাচ থেকে জটিলতাটি একটি গেমিং ইঞ্জিনিয়ারিংয়ে রয়েছে, এপিআই বোঝে না বা প্রদর্শনের জন্য ক্লাস বিকাশ করে না developing
যে বিশেষজ্ঞরা Unক্যের মতো কোনও কিছুতে পুরো গেম তৈরির জটিলতায় ভয় পান না, তাদের Unক্যের কোনও লাভ নেই কারণ যে সময়টিতে আত্মবিশ্বাসের সাথে একটি নির্দিষ্ট ইঞ্জিনের API এবং প্রয়োজনীয়তাগুলি শিখতে হবে তা সম্ভবত মাথা ব্যথার কারণ হতে পারে এবং বেসিকগুলি করার জন্য কয়েকটি ক্লাসের কোড করতে কোডের চেয়ে বেশি সময় লাগবে।
ইঞ্জিনগুলি নবীনদের কাছে অকেজো, কারণ ইঞ্জিনিয়ারিং দক্ষতার অভাব রয়েছে বলে newbies তাদের সাথে কিছুই করতে পারে না। তেমনিভাবে ইঞ্জিনগুলি অভিজ্ঞদের পক্ষে অকেজো, কারণ ইঞ্জিন ছাড়াই এটি করার জন্য ইতোমধ্যে তাদের ইঞ্জিনিয়ারিং দক্ষতা রয়েছে এবং গেম ইঞ্জিনের এপিআই উভয়ই শিখার মাথা ব্যাথার চেয়ে তাদের নিজের আরও দক্ষ, নির্দিষ্ট 'ইঞ্জিন' রোল করতে পারে, ফাংশন, এবং কর্মক্ষমতা quirks। ইঞ্জিনগুলির সাথে কাজ করার বিশাল দুঃস্বপ্নের কথা উল্লেখ করবেন না যেগুলি আপনি কখনও কখনও স্পর্শ করতে পারেন না কারণ তারা ওপেন সোর্স নয় (বা তারা থাকলেও অন্যের কোড পড়া অনেক সময় দুঃস্বপ্ন হতে পারে)।
হেক, এমনকি কিছু "নিম্ন স্তরের" "গেম ফ্রেমওয়ার্কগুলি" উইন্ডো তৈরি করতে, প্রদর্শনের জন্য রেন্ডার করতে এবং অডিও খেলতে কয়েক শ্রেণীর চেয়ে বেশি কিছু নয়। এটি এমন কোনও বিষয় যা কোনও পেশাদার কোনও স্ক্র্যাচ থেকে অন্য গ্রন্থাগার যেমন এসডিএল / এসএফএমএল বা ওপেনজিএল / ডাইরেক্টএক্স / ওপেনাল তাদের নিজস্ব বাস্তবায়ন ব্যবহার করে স্ক্র্যাচ থেকে নিজেই করতে পারে, এটি আসলে পুরো ভিডিও গেমটি সম্পূর্ণ করতে সময় নেয় তার একটি অংশে।
TLDR;
আপনি যদি প্রোগ্রাম করতে চান তবে প্রোগ্রামার হতে শিখুন ।
ইঞ্জিন ব্যবহার করা এড়িয়ে চলুন , তবে বোকা হন না এবং অবিশ্বাস্যভাবে দরকারী লাইব্রেরি উপেক্ষা করবেন না।
আপনি যদি গেম ডিজাইনার হতে চান তবে একটি WYSIWYG ইঞ্জিন ব্যবহার করে দেখুন এবং সেই গেমগুলি পাম্প করে দিন!
আপনি যদি গেম প্রোগ্রামার হতে চান তবে ক্র্যাচগুলির মতো ইঞ্জিনগুলি এড়িয়ে চলুন।
আমার জন্য , উচ্চ স্তরের গেম ইঞ্জিনগুলি ব্যবহার করে প্রোগ্রামার হওয়ার আমার ক্ষমতা পঙ্গু করে। পরিবর্তে নিম্ন স্তরের গ্রন্থাগারগুলি ব্যবহার করা বা কোনও লাইব্রেরি ব্যবহার না করার মুহুর্তে আমি এতটা শিখতে শুরু করেছিলাম যে আমি দ্রুত মোট এক নবাগত থেকে কারও কাছে চলে গেলাম যা এখন আমার পাশে কোনও রেফারেন্স, টিউটোরিয়াল বা বই ছাড়াই ভিডিও গেম তৈরি করতে পারে। শুধু আমার সংকলক এবং ইঞ্জিনিয়ারিং এবং অনুশীলন অনেক।
স্বল্প মাত্রায় নিম্ন স্তরের গ্রন্থাগারগুলি থেকে আমি যে পরিমাণ শিক্ষার পরিমাণ অর্জন করেছি তা উচ্চ স্তরের ইঞ্জিনগুলির সাথে খুব দীর্ঘ সময় অর্জনের পরিমাণের চেয়ে অনেক বেশি *