ইন্ডাস্ট্রির গেমগুলিতে আমি বোঝাছি কোয়াক, কোড ইত্যাদি
ইন্ডাস্ট্রির গেমগুলিতে আমি বোঝাছি কোয়াক, কোড ইত্যাদি
উত্তর:
এক অর্থে, সি ++ সত্যিকার অর্থে প্রতিস্থাপন করা হচ্ছে - কেবল সি # দ্বারা নয়, বহু অন্যান্য ভাষার দ্বারা। তবে যদি আপনি জিজ্ঞাসা করেন, এটি কি পুরোপুরি প্রতিস্থাপন করে চলেছে - তবে উত্তরটি অবশ্যই অবশ্যই নেই ।
কারণ সি ++ দুটি acতিহ্যগতভাবে ব্যবহৃত হয়। প্রথমত, গেম ইঞ্জিনটি তৈরি করতে : নিম্ন-স্তরের উপাদানগুলি যা সংস্থানগুলি লোড করে, বহুভুজগুলিকে স্ক্রিনে চাপায় এবং পদার্থবিজ্ঞানের সিমুলেশনগুলিতে ক্র্যাঙ্ক সংখ্যাগুলি। দ্বিতীয়ত, গেমটির যুক্তি কোড করতে : আসল নিয়ম যা গেমপ্লে তৈরি করে।
এই দ্বিতীয় ক্ষমতাটির জন্য সি ++ এর শক্ত পয়েন্টের প্রয়োজন নেই (যেমন নিম্ন স্তরের বিশদগুলির উপরে সম্পূর্ণ নিয়ন্ত্রণ), তবে এর দুর্বলতাগুলি ভোগ করে (যেমন বাগ প্রবণ হ্যান্ড-কোডেড মেমরি পরিচালনা)। এবং এই দ্বিতীয় ক্ষমতাতে সি ++ বিভিন্ন স্ক্রিপ্টিং ভাষা দ্বারা প্রতিস্থাপিত হচ্ছে। অনেক বিকাশকারী লুয়া ব্যবহার করেন; কিছু পাইথন ব্যবহার। তবে যদি কোনও সি এল এল প্ল্যাটফর্ম উপলব্ধ হয় তবে। নেট বা মনো যে কোনও একটি আকারে, এটি দুর্দান্ত স্ক্রিপ্টিং হোস্ট প্রার্থীকে উপস্থাপন করে। এই প্ল্যাটফর্মগুলি বেশ দ্রুত, নির্ভরযোগ্য, একটি বহুল পরিচিত ভাষা (সি #) এবং একটি বিস্তৃত বেস শ্রেণির পাঠাগার সরবরাহ করে। আসুন সরঞ্জামগুলি ভুলে যাবেন না: এমএস ভিজ্যুয়াল স্টুডিও এবং শার্পডেلف / মনোডিভলফ বিশ্বের সেরা আইডিই নাও হতে পারে তবে তারা বেশ ভাল।
এটি বলেছিল, গেম ইঞ্জিনটি সি # তে লিখিত হবে না (বা লুয়া, বা সেই বিষয়ে পাইথন)। কেন? কারণ তারা কেবলমাত্র যথেষ্ট দ্রুত নয়।
অনেক জনপ্রিয় বিশ্বাসের বিপরীতে, আজ একক বৃহত্তম পারফরম্যান্স হিট হ'ল স্মৃতিশূন্যতার কারণে । এর অর্থ মেমরি অ্যাক্সেস করা গুরুতর ব্যবসা। এবং পরিচালিত ভাষাগুলি ব্যবহারকারীদের মেমোরি অ্যাক্সেস নিয়ন্ত্রণ করতে দেয় না - এ কারণেই তারা প্রথমে "পরিচালিত"। সুতরাং, কোনও পরিচালিত ভাষা সত্যিই দ্রুত গেম ইঞ্জিন লেখার অনুমতি দেয় না। প্রকৃতপক্ষে, সমস্ত বড় "সি #" ইঞ্জিনগুলি যা আমি ভাবতে পারি - এক্সএনএ, এমওগ্রি, ইউনিটি - স্থানীয় সি ++ কোডের উপর ভিত্তি করে ; তবে সি # তে গেম যুক্তি লেখার অনুমতি দিন।
এটির সংক্ষিপ্তসার হিসাবে : সি # টি সি ++ বা অন্যান্য ভাষার জায়গায় ব্যবহৃত হতে চলেছে। তবে এটি কমপক্ষে সি ++ প্রতিস্থাপন করবে না, যতক্ষণ না কেউ বিলম্বিত-মুক্ত, তাত্ক্ষণিকভাবে অ্যাক্সেস মেমরি আবিষ্কার করে।
ভাষার পছন্দ অনেকটা প্ল্যাটফর্মের উপর নির্ভর করে। এই মুহূর্তে এটি সম্ভবত অসম্ভব বলে মনে হচ্ছে যে একটি মাইক্রোসফ্ট প্ল্যাটফর্ম ব্যতীত অন্য কোনও কিছুর বাস্তবায়ন হিসাবে নেট।
প্রচলিত জ্ঞান বলবেন যে একটি ছোট প্ল্যাটফর্মটি পারফরম্যান্স করার জন্য ধাতুর কাছাকাছি হওয়া দরকার, তবে অন্যদিকে, পরিচালিত প্ল্যাটফর্মগুলি নিরাপদ । উইন্ডোজ ফোন 7 আপনাকে সম্ভবত নেট ব্যবহার করতে বাধ্য করার কারণেই সম্ভবত।
এটি অবশ্যই আকর্ষণীয় হবে যদি কোনও নতুন এক্সবক্সের একটি পরিচালিত প্ল্যাটফর্মের প্রয়োজন হয়। যদি কোনও ফোনের হার্ডওয়্যার এটি পরিচালনা করতে পারে (এবং এটি করে) তবে আমি অবশ্যই এটি একটি পূর্ণ মাপের কনসোলে ব্যবহার করতে দেখতে পেতাম। এটি কনসোল ইকোসিস্টেমকে কিছুটা আলোড়িত করবে কারণ আপনার সমস্ত গেমের কোড স্ক্রিপ্টিং ভাষায় না লিখে ক্রস-প্ল্যাটফর্ম গেমগুলি লেখা আরও কঠিন। যদি এটি হয় তবে সি # সি ++ প্রতিস্থাপন করবে না , তবে এটি হাতে হাতে যাবে।
এই মুহুর্তে আপনি স্ক্রিপ্টিং ব্যাক এন্ড হিসাবে (ইউনিটি যা করেন তার অনুরূপ) মনো ব্যবহার করতে পারেন তবে আমি ধারণা করব যে বেশিরভাগ ইঞ্জিন নির্মাতারা হয় তাদের নিজস্ব রোল করতে চায়, বা সি # এর চেয়ে লুয়া বা পাইথনের মতো আরও কিছু কমপ্যাক্ট ব্যবহার করতে পারে।
যেভাবেই হোক, এটি সবই সঠিক কাজের সঠিক সরঞ্জাম সম্পর্কে। আপনার সত্যই উভয় ভাষা শেখা উচিত, যেহেতু সি # নির্দিষ্ট কিছু কাজ করা সহজ করে তোলে (সরঞ্জাম বিকাশ, সার্ভার বিকাশ সম্ভবত, ইত্যাদি), এবং আপনি কিছু ক্ষেত্রে সি ++ ব্যতীত অন্য কিছু ব্যবহার করতে পারবেন না।
এটা সম্ভবত না। সি ++ এর নিম্ন স্তরের হওয়ার সুবিধা রয়েছে যাতে সম্ভবত বিকাশকারীরা সর্বোত্তম পারফরম্যান্স অর্জনের জন্য অতি ক্ষুদ্রতম বিবরণটি টুইঙ্ক করতে পারে।
সি # এবং .NET এর সাথে আপনার আবর্জনা সংগ্রহ রয়েছে যা খুব দরকারী, তবে সীমিত মেমরি এবং রিসোসগুলি (পোর্টেবল কনসোল এবং কিছুটা বাড়ির কনসোল) দিয়ে প্ল্যাটফর্মের সাথে কাজ করার সময় আপনাকে সর্বোত্তম ব্যবহারের জন্য মেমরির যতটা সম্ভব নিয়ন্ত্রণ করা দরকার সম্পদ। পরিচালিত ভাষাগুলি আপনার জন্য মেমরি বরাদ্দ এবং মুক্ত করতে মঞ্জুরি দেয় সম্ভবত সম্ভবত আপনার প্রচুর সমস্যা হতে পারে।
গতিও একটি সমস্যা (যদিও এটি সম্ভবত কম)। সময়ের সাথে সাথে, আমি নিশ্চিত যে পরিচালিত ভাষাগুলি সি ++ সংকলকগুলির সাথে তুলনামূলকভাবে সম্পাদন করা যায়।
সামগ্রিকভাবে, আমার অভিজ্ঞতাকে যাইহোক, গেম ডেভেলপাররা মেমরি, সিপিইউ সময় এবং সংস্থান (যখন তারা পারছেন তত পারফরম্যান্স চেপে ধরার জন্য) আসে তখন নিয়ন্ত্রণ নিয়ন্ত্রণের ঝোঁক থাকে, এজন্যই সি / সি ++ মূলত ব্যবহৃত ভাষা।
আফাইক। নেট জিসি এখনও বিশ্ব শৈলীর অ্যালগোরিদম থামাতে ভোগেন । যদিও এটি বিভিন্ন ধরণের অ্যাপ্লিকেশনের জন্য উপযুক্ত হতে পারে - গেমসের মতো রিয়েল-টাইম অ্যাপ্লিকেশানের পক্ষে এটি মেনে নেওয়া যায় না।
প্রকৃতপক্ষে, জিসিটিতে আমাদের কিছু সাফল্য না পাওয়া পর্যন্ত রিয়েল-টাইম প্রোগ্রামগুলির জন্য কার্যকরভাবে পরিচালিত ভাষাগুলি ব্যবহার করা খুব কঠিন difficult
না। নেট উপর নির্ভর করে পিএস 3 এর মতো কোনও প্ল্যাটফর্ম উপলব্ধ নেই এমন ফ্রেমওয়ার্কের জন্য প্রচুর পুনরায় লেখার ইঙ্গিত দেবে এবং পারফরম্যান্সের অসুবিধাগুলি পিসিতে বা লাইভ আরকেড গেমগুলির জন্য পুরোপুরি গ্রহণযোগ্য হতে পারে তবে বৃহত্তর গেমগুলির প্রতিটি স্ক্র্যাপের প্রয়োজন হবে তাদের কনসোলগুলি থেকে পারফরম্যান্স দ্রুত চালানোর জন্য। এর চেয়েও বড় কথা, সি ++ তে প্রচুর বিদ্যমান কোড-বেস রয়েছে যা তারা চাইলেও আপগ্রেড করার সামর্থ্য রাখে না। সি ++ গেম শিল্পে রয়েছে এবং এটি দীর্ঘ সময় ধরে সেখানে চলেছে।
এমন সময়ে যেখানে কম্পিউটার বিদ্যুতের দুষ্প্রাপ্যতা রয়েছে, সমস্ত কিছু সি বা সি ++ তে প্রোগ্রাম করা দরকার, কেবল আবর্জনা সংগ্রহ করা ভাষাগুলি প্রোগ্রামার থেকে মেমরি নিয়ন্ত্রণকে দূরে রাখে এবং এইভাবে, কর্মক্ষমতা হ্রাস পেতে পারে।
আজকাল, কম্পিউটারগুলি আরও দ্রুত, তবে নুথ যেমন বলেছেন এবং এটি সংক্ষেপে বলা যায়, অপ্টিমাইজেশনটি খারাপ হতে পারে:
এটি সুস্পষ্ট যে নিম্ন স্তরের মূল কার্যকারিতা অপ্টিমাইজ করা দরকার, কারণ 3 ডি জ্যামিতি, পদার্থবিজ্ঞান, সংঘর্ষগুলি, আলোকসজ্জা, সহজেই উপলব্ধ সেরা প্রসেসরটি ফুটিয়ে তুলতে পারে। আপনি সহজেই বলতে পারেন যে কোনও মেশিনে চাক্ষুষ মানের উত্থান প্রায়শই উল্লেখযোগ্যভাবে পারফরম্যান্সকে হত্যা করে।
এখন, গেম স্টেটস, এআই, সাউন্ড, ইনপুট, নেটওয়ার্কের মতো অন্যান্য কার্যকারিতা রয়েছে যা একটি গেমের মধ্যে এখনও গুরুত্বপূর্ণ তবে এটি কম্পিউটারের সংস্থান হিসাবে খুব কমই নিতে পারে না। এই কার্যকারিতা, বেশিরভাগ সময়, অপ্টিমাইজ করতে হবে না। ভাষা এবং আবর্জনা সংগ্রহ করা ভাষাগুলি স্ক্রিপ্ট করার লক্ষ্য এটি: আপনার স্মৃতি সংহতি এবং আপনার অ্যাপ্লিকেশন সংস্থা সম্পর্কে আপনাকে ভাবার দরকার নেই, কারণ এই ভাষাগুলির সাথে আপনি যে কোডটি লিখবেন তা যদি আপনি নিম্ন স্তরের স্টাফ কোডিং না করে থাকেন তবে তা কখনই হবে না বোতলের।
উদাহরণ 2 উদাহরণস্বরূপ
উভয়ই 500 কিলোমিটার দূরত্বে।
উভয় ক্ষেত্রেই পুরো পরিবহণের সময়কে ছোট করার জন্য লোডিং / আনলোডিং প্রক্রিয়াটি দ্রুত করা কী গুরুত্বপূর্ণ, আপনি কি জেনে নৌকা বা ট্রাককে দ্রুত চালনা করতে পারবেন না?
উত্তরটি হ'ল: এটি ট্রাকের সাথে গুরুত্বপূর্ণ, তবে নৌকার সাথে আর নয়, কারণ আপনি ইতিমধ্যে নৌকো দিয়ে স্টক সরিয়ে অনেক কিছু করেছেন।
আপনি এই রূপকটি বুঝতে পেরেছেন কিনা তা আমি জানি না তবে একটি উপায়ে এটি আপনাকে গাণিতিক সমস্যাটি কল্পনা করতে পারে যা উত্তরটি বোঝার চেয়ে গুরুত্বপূর্ণ।
স্ক্রিপ্টিং ভাষাগুলি গেমগুলি দ্রুত তৈরি করতে দেয় যদি আপনার ইতিমধ্যে সি / সি ++ তে ইঞ্জিন প্রোগ্রাম করা থাকে: 3 ডি ইঞ্জিন নিম্ন-স্তরের সমস্যাগুলি সমাধান করে, এখন আপনাকে আপনার স্ক্রিপ্ট দিয়ে গেমটি তৈরি করতে হবে।
তবে মনে রাখবেন: আপনি কখনই নিম্ন স্তরের সংকলিত ভাষা, কখনও প্রতিস্থাপন করতে পারবেন না। স্ট্যাটিকালি টাইপ করা, সংকলিত ভাষাগুলিই পারফরম্যান্সের মূল এবং আপনি এগুলি শাসন করতে পারবেন না, এটি কোনও কার্নেল, 3 ডি ইঞ্জিন বা গ্রাফিক কার্ড ড্রাইভার হবে।
তবে অবশ্যই, যদি আপনার গেমটি গ্রাফিক্যালি সহজ হয় এবং প্রচুর ভেক্টর গণনার প্রয়োজন না হয় তবে আপনি গেমপ্লেতে মনোযোগ দিতে পারেন এবং অপ্টিমাইজেশানটি ভুলে যেতে পারেন, কারণ এই ক্ষেত্রে আপনার মেশিনটি সত্যই দ্রুত হওয়ার কারণে আপনাকে কখনই অপ্টিমাইজেশানের মোকাবেলা করতে হবে না fast যে জন্য
যদি আপনি ডিএস-এ পোর্ট করার পরিকল্পনা করেন তবে ব্যতীত। তবে আমি সেখানেই থামব।
দেখুন, আমি জানি এটি একটি বাচ্চা, তবে আমি কেবল কেশ বিভক্ত করছি না। আমি অনুভব করি বেশিরভাগ প্রোগ্রামাররা এটি সত্যিই একসাথে রাখে না। রান গতি / পারফরম্যান্সের সাথে কোনও ভাষারই কোনও সম্পর্ক নেই। এটি সংকলক / কাঠামো। আপনি ক্লিটার (মাইক্রোসফ্ট কম্পাইলার পূর্ব 2010) বা এমএসবিল্ড (2010 এর জন্য বর্তমান সি ++ সংকলক) এর বিপরীতে জিসিসি-র পক্ষে তর্ক করতে পারেন। প্রতিটি রিলিজ এই সংকলকগুলি আরও ভাল হয় তাই আপনাকে সেগুলি তাদের নিজের আগের সংস্করণগুলির সাথে তুলনা করতে হবে। আমি নেট থেকে খুব মুগ্ধ এবং এটি ভাল পারফরম্যান্স করে তবে কিছুটা ভাল পারফরম্যান্স করলেও আমি এটিকে গ্রহণ করতে দেখছি না, এর একটি কারণ: বহনযোগ্যতা।
এএএ গেমস উইন্ডোজ, লিনাক্স, ম্যাক, এক্সবক্স, পিএস 3, নিন্টেন্ডো ইত্যাদিতে থাকতে চায়