সত্যিকারের বিশদ ব্যাখ্যার জন্য আমি জেসন গ্রেগরির একমাত্র এবং বাইবেলের গেম ইঞ্জিন আর্কিটেকচারটি পড়ার পরামর্শ দিই । আমার ধারণা, এটি প্রকাশিত হওয়ার পর থেকে এটি এই বিষয় সম্পর্কে সর্বাধিক সম্পূর্ণ কাজ। এটি কেবল সি ++ অংশ পরিচালনা করে না তবে প্রতিটি গেম ইঞ্জিন প্রোগ্রামার তত্ত্ব / আর্কিটেকচারের পিছনেও গুরুত্বপূর্ণ। এটি ভাষা থেকে আলাদা একটি ভাল সূচনা পয়েন্ট। আমরা কী সম্পর্কে কথা বলছি একটি ওভারভিউ পেতে বইটি এই চিত্রটি
আমি এটিকে প্রশ্নের উত্তর দেওয়ার চেষ্টা করি।
আপনি যা কিছু লিখবেন তা কোড :-) বছর পরের অভিজ্ঞতার পরে লিখবে, আপনার যা প্রয়োজন এবং কীভাবে আপনার প্রয়োজন তা লিখুন বা যা আপনার প্রয়োজন তা সরবরাহ করে।
শর্তাবলী ইঞ্জিন এবং কাঠামোটি অন্যান্য শর্তাদি সহ সফ্টওয়্যার আর্কিটেকচার থেকে আসে। সুতরাং আসুন মূল শর্তগুলি দিয়ে শুরু করা যাক এবং উপরের দিকে সরানো যাক।
গ্রন্থাগার
সাধারণ উদাহরণ: গণিতের পাঠাগার গাণিতিক গণনার জন্য সমস্ত মৌলিক প্রকার এবং ফাংশন সরবরাহ করে (ভেক্টর, ম্যাট্রিক্স, ...) বা চিত্র (জেপেইগ বা পিএনজি) লাইব্রেরি জেপিগ বা পিএনজি চিত্র লেখার জন্য কার্যকারিতা সরবরাহ করে
ইউনিটিতে 3 ডি ম্যাথ একটি গণিতের লাইব্রায়।
থিওরি: একটি লিবারে একটি বিষয় (যেমন গণিত) এর আশেপাশে নিবেদিত বৈশিষ্ট্য সরবরাহ করে এবং প্রোগ্রামার তাকে চাহিদা অনুসারে ডাকে ।
কিছু পূর্বরূপ: ফ্রেমওয়ার্ক লাইব্রেরি হওয়ায় গ্রন্থাগার থাকতে পারে।
ফ্রেমওয়ার্ক
থিওরি: একটি কাঠামো নিয়ন্ত্রণের বিপরীতমুখীতার পরিচয় দেয় । এর অর্থ হল বিকাশকারী বেশিরভাগ সময় ফ্রেমওয়ার্ক পদ্ধতিগুলিকে কল করে না তবে ফ্রেমওয়ার্কটি বিকাশকারীকে কোড বলে calls ব্যতিক্রমগুলি যখন আপনার কোডের ফ্রেমওয়ার্ক লাইব্রেরি সংহত করতে হয় এবং ফ্রেমওয়ার্কটি শুরু করতে হয়। একটি ফ্রেমওয়ার্ক লাইব্রেরি একটি উত্সর্গীকৃত ব্যবহারের সাথে একটি কাঠামোর জন্য সমস্ত পদ্ধতি এবং ফাংশন এবং ইন্টারফেস সরবরাহ করে। ফ্রেমওয়ার্কগুলি একটি লাইব্রেরিতে থাকতে পারে।
সাধারণ উদাহরণ: ইউনিটি 3 ডি মনোোহাইভোর জাগ্রত, প্রারম্ভিক, অনআপডেটের মতো পদ্ধতি সরবরাহ করে। বিকাশকারী এই পদ্ধতিগুলি প্রয়োগ করে এবং তারপরে এই পদ্ধতিগুলি (গেম অবজেক্ট ম্যানেজমেন্ট) ফ্রেমওয়ার্ক (এটি নিয়ন্ত্রণের বিপরীতমুখীকরণ) দ্বারা ডাকা হয় । অনকলিশনএন্টার, অনকোলিজেনএক্সিট পদ্ধতিগুলির সাথে একই। তারা একই মনোবিহাইভারে রয়েছে তবে আমি বাজি ধরতে পারি যে তাদের পদার্থবিজ্ঞানের কাঠামো দ্বারা ডাকা হয়।
একটি পূর্বরূপ: ইঞ্জিন, রানটাইম, সম্পাদক, এসডিকে
যেহেতু ইঞ্জিন শব্দটি সর্বদা অস্পষ্ট ছিল এবং এখনও রয়েছে (এবং এটি আরও প্রযুক্তিগত বিকাশের সাথে আরও ভাল হয় না) কিছু পূর্বরূপ ব্যাখ্যা।
ইঞ্জিন শব্দটি একাধিক জিনিসের জন্য ব্যবহৃত হয় এবং এটি কোনটি সঠিক তা অনন্যভাবে বলা যায় না। 2004 সালে যখন আমি প্রথম গেম ইঞ্জিন লেখার সাথে যোগাযোগ করি তখন তা অস্পষ্ট ছিল। কোনও ধরণের কোড লোডিং পূর্বনির্ধারিত ডেটার অর্থ আপনার একটি গেম ইঞ্জিন ছিল এবং আপনাকে গেমটি খেলতে দেয়। যেহেতু এটি পূর্বনির্ধারিত ডেটা লোড করে তাদের ডাটা-চালিত ইঞ্জিন বলা হয়। আপনি এগুলি একবার সংকলন করেন এবং বাহ্যিক ডেটাগুলি এটিকে পুনরায় সংশোধন না করে বিভিন্ন গেম হতে পারে। এক সময় এটি রানটাইমের মতোই ছিল।
সম্পাদক পরিষ্কার। এটি আপনাকে ইঞ্জিন / রানটাইম দ্বারা লোড করা পূর্বনির্ধারিত ডেটা সংজ্ঞায়িত করতে দেয়।
সম্পাদক সহ একটি ইঞ্জিনকে এসডিকে বলা হয়েছিল (যেমন হামার এসডিকে)।
তারপরে সেখানে / নিবেদিত ইঞ্জিনগুলি ছিল। একটি ফাইস্ক ইঞ্জিন, রেন্ডারিং ইঞ্জিন, সাউন্ড ইঞ্জিন, গেমোবজেক্ট ম্যানেজমেন্ট ইঞ্জিন, নেটওয়ার্ক ইঞ্জিন, ....
আমার ব্যক্তিগত মতে সেগুলি ইঞ্জিন নয় (বিশেষত রেন্ডার ইঞ্জিন কোনও গেম ইঞ্জিন নয় কারণ এটি কেবল রেন্ডারিং করে)। আমি যখন গেম ইঞ্জিনকে গুগল করি তখন ফলাফলগুলিতে 90% খাঁটি রেন্ডার ইঞ্জিন থাকে যা গেম ইঞ্জিন নয়। আমি তাদের সকলকে লাইব্রেরি কল করব তবে যেহেতু তারা পূর্বনির্ধারিত ডেটা লোড করতে পারে তারা ডেটা-চালিত ইঞ্জিন শব্দটির সাথে মিলবে match
বিশদে যাওয়ার আগে একটি সর্বশেষ সংক্ষিপ্ত পক্ষের নোট: আমি কম্পিউটার বিজ্ঞানে স্নাতকোত্তর সাফল্যের সাথে স্নাতক হয়েছি। আমার মাস্টার থিসিস "কীভাবে একটি গেম ইঞ্জিনের মূল বিকাশ করবেন" বিষয়টি পরিচালনা করেছিলেন। কোডটির অংশটির অর্থ যা অন্য সমস্ত ইঞ্জিন একসাথে আঁকড়েছে, গেম অবজেক্ট পরিচালনা, গেম লুপ ইত্যাদি কি ...
আমি আমার মাস্টার থিসিসটি একটি (সংক্ষিপ্ত) বই হিসাবে প্রকাশ করেছি। ক্রেতা / পাঠকের আমাজন সম্পর্কে একমাত্র মন্তব্যটি (কয়েক বছর বাদে): এটি কোনও গেম ইঞ্জিন সম্পর্কিত নয়। যেহেতু আমি সফলভাবে স্নাতক হয়েছি এবং সেইজন্য 3 অভিজ্ঞ প্রোগ্রামারদের (যার মধ্যে 2 টি গেমস এবং ইন্টারেক্টিভ অ্যাপ্লিকেশনগুলিতে উত্সর্গীকৃত) এর বিরুদ্ধে আমার থিসিসটি রক্ষা করেছি আমার ধারণা আমি কোনও গেম ইঞ্জিন লিখেছি।
সম্পাদক
সহজ: আপনাকে অন্যান্য অংশগুলির প্রয়োজনীয় ফর্ম্যাটে ডেটা সংজ্ঞায়িত করতে দেয় এবং তাই সেই ফাইলগুলি হাতে হাতে লেখার বা তাদের তৈরি করার জন্য বাহ্যিক সরঞ্জামগুলি ব্যবহার করার চাহিদা দূর করে।
ইউনিটি থ্রিডি সম্পাদক এটি করেন।
রানটাইম
এই শব্দটি প্রায়শই ইঞ্জিনের সাথে সমানভাবে ব্যবহৃত হয় (যা সঠিক বা ভুল হতে পারে)।
রানটাইম উত্পন্ন ডেটা কার্যকর করে এবং এটি ডেটার সাথে কী করতে পারে তা করে। যেমন আপনাকে গেমটি দেখায় এবং আপনাকে গেমটি খেলতে দেয়। এটি কোনও উপাত্ত তৈরি করে না (সম্ভবত গেমগুলি বাঁচানো ব্যতীত) যার অর্থ আপনি গেমটি নিজের সাথে সংশোধন করতে পারবেন না।
ইউনিটি ওয়েব প্লেয়ারটি একটি রানটাইম ছিল / আপনাকে একটি ওয়েব ব্রাউজারের মধ্যে ইউনিটির গেম খেলতে দেয়।
আপনি একই রানটাইমের সাহায্যে একাধিক বিভিন্ন গেম লোড করতে এবং চালাতে পারেন।
ইউনিটির 3 ডি স্ক্রিপ্টিং এপিআই-এর ক্ষেত্রে কার্যকারিতা যা গেম এবং কার্যকারিতা যে কেবল সম্পাদকের মধ্যে কাজ করবে তার মধ্যে একটি কাটা রয়েছে।
SDK এর
এই শব্দটিকে প্রায়শই কাঠামোও বলা হয় ।
তত্ক্ষণাত্ একটি এসডিকে প্রোগ্রামারগুলির জন্য সম্পাদক, আইডিই (সংহত বিকাশকারী পরিবেশ), ডেটাফর্ম্যাটগুলির জন্য রফতানিকারক এবং রানটাইম / ইঞ্জিনের মতো সরঞ্জামগুলির বান্ডিল হয়ে থাকে।
সুতরাং একটি এসডিকে / কাঠামো আপনাকে পূর্বনির্ধারিত ওয়ার্কফ্লো এবং ইউটিলিটিগুলি সরবরাহ করে এবং আপনাকে (সহজেই) কীভাবে একটি খেলা তৈরি করতে পারে তার একটি (ভালভাবে নকশা করা) উপায় দেখায়।
মূলত ইউনিটি থ্রিডি ইঞ্জিনটি ভুল হবে কারণ এটি এসডিকে দিকনির্দেশনায় আরও ফিট করে। ইউনিটি যেহেতু আরও বেশি নতুন শব্দ / সংজ্ঞা এটির সাথে মেলে প্রয়োজন।
যাইহোক, অন্য পদটি প্রবর্তনের জন্য, একটি এসডিকে / কাঠামো আপনাকে একটি পূর্বনির্ধারিত গেম ডেভেলপমেন্ট পাইপলাইন সরবরাহ করে (কেবল একটি সম্পদ পাইপলাইনই নয়, হতে পারে ityক্যের মতো, সম্পদের জন্য একটি পাইপলাইন, যুক্তি, বিল্ড, মোতায়েন, ....)
ইঞ্জিন
সমস্ত কিছুর জন্য কটূক্তি যেহেতু প্রত্যেকে কেবল একটি লাইব্রেরি, একটি কাঠামো বা একটি গেম নয় তবে একটি সম্পূর্ণ ইঞ্জিন লিখে আরও ভাল করে লিখে শান্ত হতে চায়। কটূক্তি বন্ধ
আসুন এটি ট্রিগার করুন:
একটা ইঞ্জিন
- কোড / সফ্টওয়্যার একটি টুকরা
- এটি একাধিক প্রকল্পে পুনরায় ব্যবহারের লক্ষ্য (আপনি কেবল একটি গেমের জন্য একটি গেম ইঞ্জিনও লিখতে পারেন)
- গেম ইঞ্জিনটি পুনরায় ব্যবহারের কারণে গেমের নির্দিষ্ট অংশ থেকে পুনরায় ব্যবহারযোগ্য অংশটি পৃথক করে
- পুনঃব্যবহারযোগ্য হওয়ার জন্য (এটি কীভাবে পুনঃব্যবহারের উদ্দেশ্যে করা হয়েছে তার উপর নির্ভর করে) বিভিন্ন স্বাদ যেমন ডেটা-চালিত ইঞ্জিনের বহিরাগত ডেটা লোড করছে
একটি ইঞ্জিনে বহুবিধ অন্যান্য ইঞ্জিন থাকতে পারে (যেহেতু আজকাল সবকিছুকে ইঞ্জিন বলা হয়)। একটি গেম ইঞ্জিন অন্তর্ভুক্ত করতে পারে
- একটি রেন্ডার ইঞ্জিন রেন্ডারিং করছে (আবার: godশ্বর, জঘন্য, নরক: কোড কেবলমাত্র রেন্ডারিং করা কোনও গেম ইঞ্জিন নয়)
- পদার্থবিজ্ঞানের ইঞ্জিন (এটি একটি পদার্থবিজ্ঞানের ইঞ্জিন, গেম ইঞ্জিন নয়)
- একটি এআই ইঞ্জিন এআই স্টাফ পরিচালনা করে (এটি একটি এআই ইঞ্জিন এবং কোনও গেম ইঞ্জিন নয়)
- একটি নেটওয়ার্ক ইঞ্জিন (যেমন রাকনেট) নেটওয়ার্ক স্টাফ করছে (এটি একটি নেটওয়ার্ক ইঞ্জিন, গেম ইঞ্জিন নয়)
- একটি অডিও ইঞ্জিন অডিও স্টাফ করছে (এটি একটি অডিও ইঞ্জিন এবং কোনও গেম ইঞ্জিন নয়)
একটি উপাদান ইঞ্জিন ভিত্তিক গেম অবজেক্ট ম্যানেজমেন্ট মডেলটিতে সবকিছু মিলিয়ে একত্রে প্লাগ-ইন ভিত্তিক কাঠামো সরবরাহ করে এমন একটি ইঞ্জিন ভিত্তিক একটি অ্যাপ্লিকেশনটির উদাহরণ। প্রতিটি সাবেনগিনেজ (অডিও রেন্ডারিং) হ'ল একটি মডিউল যা গেম ইঞ্জিনে প্লাগ ইন হিসাবে যুক্ত হয় Each প্রতিটি উপাদান একটি সাবেনজিন / মডিউলের অংশ হতে পারে। এবং (উপাদান ভিত্তিক) গেম অবজেক্ট ম্যানেজমেন্ট হ'ল বিভক্ত মডিউলগুলির মধ্যে সংযোগকারী লিঙ্ক।
গেম ইঞ্জিনের জন্য নিকটতম সংজ্ঞা
একটি গেম ইঞ্জিন হ'ল আপনার গেমের সোর্স কোডের একটি অংশ যা সমস্ত কার্যকারিতা সরবরাহ করে যা একাধিক গেম জুড়ে পুনঃব্যবহারের উদ্দেশ্যে এবং আপনাকে আপনার গেমটি কোড এবং কার্যকর করতে দেয়। সুতরাং এটি কোডের অন্যান্য সমস্ত অংশ (রেন্ডারিং, অডিও, পদার্থবিজ্ঞান, গেম অবজেক্ট ম্যানেজমেন্ট, নেটওয়ার্কিং) একত্রিত করে যা লাইব্রেরি, ফ্রেমওয়ার্ক বা ডেডিকেটেড ইঞ্জিন (রেন্ডারিং, পদার্থবিজ্ঞান, ...)।
গেম ইঞ্জিন মাঝখানে গোলযোগ।