গিতে গেম ইঞ্জিন লেখার পক্ষে কি যুক্তিযুক্ত? [বন্ধ]


53

যদিও সি ++ রাজা হিসাবে উপস্থিত বলে মনে হচ্ছে, যা থেকে সি বলেছি তা এখনও গেমগুলিতে বিশেষত কনসোলগুলিতে ব্যাপকভাবে ব্যবহৃত হয়। তবে, সি-তে একটি পুরো গেম ইঞ্জিন লেখার বিষয়টি কি আজ অযৌক্তিক হতে পারে? সি এর বেশি সি ++ এর কিছু সুবিধা রয়েছে কি? কেন কেউ সম্ভবত সি ++ এর উপরে সি ব্যবহার করতে চান?


1
কনসোল গেমস সি ++ এফওয়াইআই ব্যবহার করে!
অ্যালান ওল্ফ

আমি আসলে মনে করি সি নির্দিষ্ট গেম পর্যন্ত গেম লিখতে সহজ হবে, কয়েক হাজার এলওসি বা তাই বলুন কারণ এটি আপনাকে জটিল ডাটা টাইপ ছাড়াই বিট এবং বাইটগুলিতে ফোকাস করতে দেয় এবং সি ++ এর তুলনায় সুপার দ্রুত তৈরি করে। তবে একটি নির্দিষ্ট স্কেলের পরে (কয়েক হাজার এলওসি-তে পৌঁছানোর কথা বলুন) পরে, আমি সি ++ এ পৌঁছাতে চাই যেখানে আমি আসলে জটিল ডেটা, আরও ধরণের সুরক্ষা, সম্ভবত ব্যতিক্রম, টেম্পলেট এবং আরও বড় হয়ে যাওয়া শুরু করতাম স্কেল (কয়েক মিলিয়ন বলুন), সি এবং সি ++ কোডের সাথে একত্রিত করতে সি ++ ব্যতীত অন্য কোনও জিনিসের জন্য।

সি এর এমনকি এবিআইয়ের পক্ষেও বহনযোগ্য পঠনযোগ্য হওয়ার সুবিধা যুক্ত হয়েছে, সুতরাং আপনার বিদ্যমান সি কোডটি নেওয়া এবং তারপরে এফএফআই থেকে অন্য ভাষায় এটি ব্যবহার শুরু করা বেশ সহজ হয়ে যায়। সি ++ নাম ম্যাংলিং, মডিউল সীমানা পেরিয়ে নিরাপদে ছুঁড়ে ফেলার অক্ষমতা, vtable রেপগুলি কম্পাইলারগুলিতে একই রকম না হওয়া, বিক্রেতাদের মধ্যে পৃথক পৃথক স্ট্যান্ডার্ড লাইব্রেরি বাস্তবায়ন ইত্যাদির সাথে সি ++ আরও অদ্ভুত General শৈলীর বাইরে যাওয়া, যদিও এটির সাথে স্কেলের কোনও কিছু লিখতে এটি বেশি সময় নেয়।

উত্তর:


49

তবে, সি-তে একটি পুরো গেম ইঞ্জিন লেখার বিষয়টি কি আজ অযৌক্তিক হতে পারে?

এটি যুক্তিসঙ্গত, তবে প্রশ্নটি এটি আপনাকে কী কিনে? আপনার চূড়ান্ত পোর্টেবিলিটি সি অফারগুলির প্রয়োজন নেই এবং আপনি যদি দর্শনগতভাবে এর বিরুদ্ধে না থাকেন তবে সি ++ অফারগুলির সমস্ত বৈশিষ্ট্য ত্যাগ করা লজ্জাজনক।

সি এর বেশি সি ++ এর কিছু সুবিধা রয়েছে কি?

সংকলনের আরও ভাল সময়?

কেন কেউ সম্ভবত সি ++ এর উপরে সি ব্যবহার করতে চান?

আমি মনে করি এটি বেশিরভাগই একটি নান্দনিক পছন্দ। অনেকে সি পছন্দ করেন কারণ এটি সহজ এবং ন্যূনতম এবং পরিষ্কার মনে হয়। সি ++ এর অনেকগুলি দুর্দান্ত বৈশিষ্ট্য রয়েছে (নামস্থানগুলি একার জন্য এটি ব্যবহারের উপযুক্ত করে তোলে) তবে এটি বড় এবং অগোছালো।


3
আইডি টেক 4 অবধি
অপ্টিশিয়ান

9
@ জোশ: ডিবাগ করা সহজ !? সি-প্রোগ্রাম কুখ্যাতিপূর্ণভাবে হয় কঠিন ডিবাগ করার মূলত পয়েন্টার এবং মেমরি পরিচালনার কারণে। সি ++ প্রোগ্রামগুলি (সত্যিকারের সি ++ প্রোগ্রামিং আইডিয়ামগুলি ব্যবহার করার সময়, যখনই সম্ভব পয়েন্টার এবং মেমরি-পরিচালনা এড়ানোর ঝোঁক থাকে) বিভিন্ন ডিবাগ করা সহজতর আদেশ orders
ব্লুরাজা - ড্যানি পিফ্লুঘিওফ্ট

14
নিছক নশ্বর দ্বারা সি বোঝা যায়। সি ++ এর প্রচুর বৈশিষ্ট্য এবং প্রান্তের কেস রয়েছে বলে মনে হয় পাকা প্রোগ্রামাররা প্রতিদিন এটি ব্যবহারের এক দশক পরেও শিখেন।
জারি কম্প্পা

13
সি ++ একটি বড় ভাষা, তবে এটি ভয়ঙ্কর খ্যাতি বেশিরভাগ লোকেরা ছড়িয়ে পড়ে যারা সবে মাত্র হরর গল্প পড়েছে এবং এটি শেখার জন্য সময় নেয়নি। অনেক কিছু শেখার আছে, তবে এর বদলে আপনি অনেক মূল্য পান। সি ++ আপনাকে প্রচুর পরিমাণে প্রকাশ করতে দেয় যা সি সহজেই করতে পারে না।
উপুড়হস্ত

2
@ ব্লুরাজা-ড্যানিপ্লুঘুফুট #define malloc(x) my_malloc(x) #define free(x) my_free(x)এবং আপনি এখন স্মৃতি ডিবাগ করছেন। সি ++ সহ আপনি কখনই বরাদ্দ পাবেন তা কখনই জানেন না, কারণ মেমরি বরাদ্দ করার অনেকগুলি উপায় রয়েছে (নতুন,
ম্যালোক

59

আমি খাঁটি সি গেম ইঞ্জিনের সাথে বেশ কয়েকটি পণ্য কাজ করেছি যা বেশ কয়েকটি পণ্য প্রেরণ করেছে, তাই এটি একেবারেই সম্ভব। সি বনাম সি ++ ইঞ্জিন উভয় ক্ষেত্রেই আমার ব্যক্তিগত অভিজ্ঞতা:

  1. খাঁটি-সি কাঠামোগত ব্যবহার আপনাকে কাঠামোর সারিবদ্ধকরণ সম্পর্কে জ্ঞানের সুবিধা নিতে দেয় এবং তারপরে আপনি এই তথ্যটি আপনার অবজেক্টের অধ্যবসায় এবং সিরিয়ালাইজেশন স্তরগুলি তৈরি করতে ব্যবহার করতে পারেন। আমি যে ইঞ্জিনটির সাথে কাজ করেছি তাতে কিছু সাধারণ হেডার পার্সার ছিল যা কাঠামোগত সম্পর্কে স্বয়ংক্রিয়ভাবে এই মেটাডেটা তৈরি করবে এবং এটি নির্দিষ্ট ধরণের ডেটা অপারেশনকে তুচ্ছ করে তোলে। স্বেচ্ছাসেবী সি ++ শিরোনাম ফাইলগুলি পার্স করা মূলত অসম্ভব এবং আপনি উত্তরাধিকার এবং ভার্চুয়াল ফাংশন যুক্ত করার সাথে সাথে জিনিসগুলি ঠিক কোথায় মেমোরিতে রয়েছে তা জানার ক্ষমতা হারাবেন
  2. সংকলনের সময়টি উল্লেখযোগ্যভাবে কম হ'ল কারণ আপনি আপনার শিরোনামের ফাইলগুলিকে খুব কমপ্যাক্ট রাখতে পারেন এবং কাঠামোর সামনে ঘোষণার সুবিধা নিতে পারেন।
  3. ডিবাগিং উন্নত করা যেতে পারে কারণ টেমপ্লেট এবং উত্তরাধিকার ব্যবহার না করে কোনও নির্দিষ্ট অবজেক্টটি কী এবং এটি কী করছে ঠিক তা নির্ধারণ করা খুব সহজ।

এই সমস্ত সুবিধাগুলি কেবল নিয়মিত সি ++ কোড ব্যবহার করেও অর্জন করা যেতে পারে যা সিরিয়ালযুক্ত জিনিসগুলিতে টেমপ্লেট এবং উত্তরাধিকার ব্যবহার থেকে বিরত থাকে তবে সিটিওর সিদ্ধান্ত ছিল যে সি ++ এর আরও বিভ্রান্তিমূলক উপাদানগুলি না থাকলে সরলতা প্রয়োগ করা সহজ হবে the পাওয়া যায়।

ব্যক্তিগতভাবে আমি মনে করি এটি কিছুটা চরম ছিল, কারণ আমি লুপগুলির জন্য বুদ্ধিমানভাবে ভেরিয়েবলগুলি ঘোষণার ক্ষমতা এবং উত্তরাধিকারের জন্য অনেকগুলি সম্পূর্ণ বৈধ ব্যবহারের ক্ষমতা হারিয়ে ফেলেছিলাম। তবে, শেষ পর্যন্ত বিবেচিত সমস্ত জিনিসই এটির জন্য আমাদের এত বেশি উত্পাদনশীলতা ব্যয় করতে পারে নি


5
সিতে উত্তরাধিকার বাস্তবায়ন করতে আপনার আসলেই বাধা নেই এবং আপনি যদি C99 ব্যবহার করেন তবে লুপের জন্য ভেরিয়েবলগুলি ঘোষণা করতে পারেন।
jsimmons

15
৩. পয়েন্টের সাথে একমত হতে যাচ্ছেন না C, C ++ এর মতোই অগোছালো, হার্ড-টু-ডিবাগ কোড লিখতে যেমন সহজ। ভাল ডিবাগিং সি ভাষার অন্তর্নিহিত কিছু নয়।
ড্যান ওলসন

7
এমনকি ওভারলোডিং, টেমপ্লেটস, ভার্চুয়াল ফাংশন এবং ব্যতিক্রমগুলি সহ পরিষ্কার কোড সি -++ এ বোঝা আরও কঠিন হতে পারে, আসল নিয়ন্ত্রণ প্রবাহটি ঠিক কী হবে তা এক নজরে দেখতে খুব বেশি শক্ত much
কাইলোটন

6
@ ড্যান: কেবলমাত্র আরও স্টাফ রেখে সি ++ ডিবাগ করা শক্ত। আপনি অবশ্যই সেই

কম স্টাফগুলি আসলে আমার পছন্দ সি এর কারণ উদাহরণস্বরূপ, সিআই-তে কেবল memcpyকিছু দিয়ে বিট এবং বাইটগুলি অনুলিপি করতে পারে কারণ টাইপ সিস্টেম অনুলিপি কর্টর এবং ডিটারের মতো জিনিসগুলিকে অনুমতি দেয় না। আমি কোড জেনেও লিখতে পারি যে প্রায় কোনও প্রদত্ত কোডের লাইনেই আমাকে পার্শ্ব প্রতিক্রিয়াগুলি রোল করতে হবে না কারণ আমি স্পষ্টতই কোনও ফাংশন থেকে বেরিয়ে আসতে পারবো না যদি না আমি স্পষ্টভাবে এটির বাইরে না চলে যাই; কোন ব্যতিক্রম নিক্ষেপ করা হচ্ছে না। vector

18

আমি সি ++ এবং লুয়ায় সি এবং লুয়ায় লেখা 2 ডি গেম ইঞ্জিনটি আবার লিখছি। এখনও পর্যন্ত অভিজ্ঞতা বেশ ভাল হয়েছে। স্পষ্টতই ভেক্টর এবং ম্যাট্রিক্স অপারেশনগুলি সি তে ভাল লাগার মতো শেষ হয় না তবে এর বাইরেও আমি সি ++ বিকাশকারী হিসাবে 10+ বছর ব্যয় করার পরে অভিজ্ঞতাটি বেশ সতেজতা পেয়েছি।

সি ++ এর চেয়েও বেশি সুবিধা রয়েছে:

  1. সংকলকটি নিশ্চিত করবে যে কোনও স্ট্যাটিক সূচনাকালীন সময়ে কোনও কোড চালিত হয় না। এটি কী হিসাবে যেমন ব্যবহৃত স্ট্রিংয়ের মতো বৈশ্বিক ডেটা স্থিরভাবে বরাদ্দ করা সম্পূর্ণ নিরাপদ করে তোলে
  2. স্বচ্ছতা. সি এসাইনমেন্টে বা বরাদ্দকরণ বা কোনও ভেরিয়েবল সংজ্ঞায়িত করার ফলে কোডের প্রচুর পরিমাণে চালানো হতে পারে না। সি ++ আপনার জন্য অনুলিপি কন্সট্রাক্টর তৈরি করবে যাতে অ্যাসাইনমেন্ট করার সময় কী কার্যকর হয় তার উপর আপনার কম নিয়ন্ত্রণ থাকে।
  3. ফাংশনের নাম ম্যাঙ্গেল না হওয়ার কারণে প্রচুর ডিবাগ করা সহজ হতে পারে
  4. সি তে মেমকিপি ব্যবহার করা সাধারণত ঠিক থাকে তবে এটি সি ++ এ সহজেই সমস্যার কারণ হতে পারে কারণ অনুলিপি নির্মাণকারীরা চালিত হবে না। প্রদত্ত যে আমার মনে তুলনায় অনেক দ্রুততর এসটিডি :: কপি যে বিষয়ে।

তা ছাড়া সি চিন্তার পদ্ধতিতে প্রবেশ করার বেশ কয়েকটি সুবিধা রয়েছে। সি ++ এ আমি প্রায়শই নিজেকে কিছুটা ওভারজেনারালাইজড এবং বিমূর্ত ব্যবহার করতে দেখি। সিআই-তে সাধারণত গেট-সেট পদ্ধতিগুলির মতো জিনিসগুলি কেটে ফেলা হয় এবং প্রায়শই গতিশীল অ্যারে ব্যবহার না করে স্থির আকারের অ্যারেগুলি প্রাকপলোকট করুন। প্রায়শই আমি সি এর সাথে সংক্ষিপ্ত এবং আরও সহজে ডিবাগড কোড দিয়ে শেষ করি ডেটা স্ট্রাকচারগুলি সাধারণত চাটুকার এবং একটি ডিবাগারে দেখতে সহজ।

ন্যায়সঙ্গত হওয়ার জন্য আমি সি তে কখনও কোনও অ্যাপ্লিকেশন তৈরি করতে পারব না কারণ এটি কাজ করে যে আমি এটি লুয়ার মতো একটি উচ্চ স্তরের ভাষার সাথে একত্রিত করি যা সি এর পরিপূরককে খুব ভালভাবে পরিপূরক করতে পারে, যদি সি এত শক্ত না হয়।

আইডি সফ্টওয়্যার তাদের বেশিরভাগ ইঞ্জিন সিআই-তে বিশ্বাস করে যে, আপনি রিটার্ন টু ক্যাসল ওল্ফেনস্টাইন যা সিতে লেখা হয়েছিল তা দেখতে পারেন believe

আমি প্লেন অ্যারেগুলির তুলনায় সি বনাম সি ++ এবং এসটিএল ভেক্টরের ডাউনসাইডগুলির স্কেলেবিলিটি সম্পর্কে আমার কিছু অভিজ্ঞতা সম্পর্কে লিখেছি


11
এফওয়াইআই, প্রতিটি ক্ষেত্রে আমি যাচাই করেছি (যা আমি মনে করি, ডারউইন জিসিসি এবং ভিসি ২০০৮), এসটিডি :: অনুলিপি কেবল উভয় প্রকারের পিওডি হলে মেমকি-তে একটি কল সংকলন করবে।
ব্র্যাফেল

3
এছাড়াও, আরই: এসটিএল ভেক্টর বনাম প্লেইন অ্যারে, কেন ভেক্টরের সুন্দর অংশগুলি ব্যবহার করবেন না এবং যদি আপনি তাদের পছন্দ না করেন তবে পুনরাবৃত্তির পরিবর্তে সাধারণ সি পয়েন্টার ব্যবহার করবেন না কেন? আপনি কেবল & মাইভেক্টর [এন] করতে পারেন। এটি উভয় বিশ্বের সেরাদের মতো, আপনার সি কোড ধরে নেওয়া একইভাবে মেমরি বরাদ্দ করে। বা, লুপগুলির জন্য, BOOST_FOREach দেখুন। এটিকে সি এর চেয়েও সহজতর করে তোলে
ব্রাফেল

1
স্ট্যান্ড :: কপি মেমকপি সম্পর্কে টিপসের জন্য ধন্যবাদ। আমি এটা জানতাম না। কয়েক বছর আগে যখন আলেকজান্দ্রেস্কু এটি ব্যবহার করেছিলেন তখন ঘটনাটি ঘটেনি। সি ++ পুনরুক্তি সম্পর্কে। এটি মূলত দর্শন সম্পর্কে, আমি প্রোগ্রাম করার চেষ্টা করি যে আমি যাদের সাথে কাজ করি তাদের পক্ষে এবং সি ++ বৈশিষ্ট্যগুলির সুবিধা গ্রহণের জন্য সি ++ কীভাবে প্রোগ্রাম হওয়া উচিত। এটি মূলত এটি উল্লেখ করার জন্য তৈরি করা হয়েছিল যে কিছু সি ++ উন্নতি এসটিএল পাত্রে যেমন পুরানো সি উপায়ে করা হয় তার চেয়ে সবসময় ভাল হয় না।
এরিক এনহিম

7

অন্য কেউ উল্লেখ করেছেন যে, সি ++ এমন বড় কাঁধের সুবিধা নিয়ে আসে যার উপরে আপনি দাঁড়াতে পারেন (বুস্ট, এসটিএল ইত্যাদি)। শেষ পর্যন্ত, এটি ব্যক্তিগত পছন্দ, তবে আমি উপলব্ধ সংস্থানগুলির কারণে সি ++ বেছে নেব। সি ++ তে যদি এমন বৈশিষ্ট্য থাকে যা আপনি ব্যবহার করতে চান না, তবে সেগুলি ব্যবহার করবেন না।


1
নোট করুন যে 99% বাণিজ্যিক এবং অভ্যন্তরীণ গেম ইঞ্জিনগুলি বুস্ট এবং এসটিএল থেকে বিভিন্ন কারণে (পারফরম্যান্স গ্যারান্টি, ডিবাগিবিলিটি, থ্রেড সুরক্ষা, নিয়ন্ত্রণ) থেকে দূরে চলে।
কাজ

42
এবং 99% পরিসংখ্যান গঠিত হয়।
ব্র্যাফেল

আমি মনে করি সমস্ত পরিসংখ্যান উদ্ধৃত করার কিছু নিয়ম হওয়া উচিত।
ম্যাট জেনসেন

3

আমি মনে করি না যে এই দিনগুলিতে কেউ একচেটিয়াভাবে সি ব্যবহার করে, এটি সাধারণত উচ্চ স্তরের ভাষার সাথে মিশ্রিত হয়।

সি তে প্রোগ্রামিংয়ের কিছু সুবিধা রয়েছে, বলুন, সি ++ তে প্রোগ্রামিং। সি ++ ব্যবহারকারীর কাছে অদৃশ্য হুডের নীচে প্রচুর কাজ করতে পারে যা আপনি যত্নবান না হলে কর্মক্ষমতা ক্ষতি করতে পারে। সি ++ পারেন এছাড়াও ভয়ানক হতে যখন এটি ব্যবহার ক্যাশে, যা আবার আপনার কর্মক্ষমতা আঘাত করতে পারে আসে।

সুতরাং এটি গেমের পারফরম্যান্সের সমালোচনামূলক অংশগুলি সি-জাতীয় উপায়ে aতিহ্যগত সি ++ উপায়ে লেখার জন্য কিছু উপকার বয়ে আনতে পারে। সাম্প্রতিক বছরগুলিতে আমি কারওর বিরুদ্ধে কখনও শুনিনি, তবে আসলে সি তে পুরো গেমটি লিখেছে।

কিছু প্ল্যাটফর্মে, আইফোনের মতো, সি ++ ব্যবহার করে আপনার নির্ধারিত আকারটি কিলোবাইটের একটি নির্দিষ্ট অংশের সাথে বাড়িয়ে তুলতে পারে (আমি কতটা দুঃখিত, আমি ভুলে গেছি), এই কারণেই কিছু আইফোন বিকাশকারী তাদের কোড সি এবং উদ্দেশ্যটির মিশ্রণে লিখতে পছন্দ করেন -C।


3

আমি আজ আপনাকে সি ++ এর পরিবর্তে সিটিতে গেম ইঞ্জিনটি লেখার জন্য কেন অযৌক্তিক হবে তার আরও কয়েকটি কারণ দেব: এসটিএল এবং বুস্ট।

listআপনি যখন বাক্সের বাইরে কাজ করে এমন কোডের উপর নির্ভর করতে পারেন (এবং আপনাকে লিখতে হবে না!) এটি কীভাবে অন্য বাস্তবায়নটি লিখবে তা আমি ভাবতে পারি না!


1
কোন বড় স্টুডিও কি আসলে বুস্ট ব্যবহার করে? এমনকি এসটিএল ব্যবহার এখনও বহুল আলোচিত, বহনযোগ্যতার কারণে। অন্তত কনসোল ইঞ্জিনগুলির জন্য।
স্লাইসডলাইম

2
ব্যক্তিগতভাবে, আমি সি ++ / লুয়া ইন্টারঅ্যাকশনের জন্য বুস্ট. ফাংশনটিপগুলি ব্যবহার করছি ( গেমদেব.नेट / রেফারেন্স / প্রোগ্রামিং / ফিচারস / সিপিএলুয়াএক্সপোর্ট / দেখুন ) এবং অভিন্ন র্যান্ডম সংখ্যা জেনারেশনের (কণার সিস্টেমগুলির জন্য) বুস্ট এলোমেলো নম্বর লাইব্রেরি ব্যবহার করছি। এছাড়াও, বুস্ট.ফোরিয়াচ ঝরঝরে। বিটিডাব্লু, বড় স্টুডিওগুলি বুস্ট ব্যবহার না করে তবে কে যত্ন করে? স্ক্র্যাচ থেকে তাদের নিজস্ব এসটিএল লাইব্রেরি লেখার জনবল আছে, আমি তা করি না।
লরিস

1
হ্যাঁ, তবে এটিও বুঝতে পারবেন যে সি এর জন্য একই রকম গ্রন্থাগার রয়েছে।
jsimmons

2
আমি বিশ্বাস করি প্রচুর লোক গেমগুলিতে বুস্ট ব্যবহার করে। তবে এটি আমাদের অনেকের প্রয়োজন (বা এমনকি কাম্য) থেকে অনেক দূরে।
ড্যান ওলসন

6
লোকেরা, আপনি যা বিশ্বাস করেন তা অপ্রাসঙ্গিক: হয় আপনি জানেন বা আপনি জানেন না
o0 '

3

সি তে গেম ইঞ্জিন লেখা যুক্তিসঙ্গত। এটি দ্রুত এবং একাধিক সিস্টেমে পোর্ট করা যায়। উদাহরণস্বরূপ আপনি অ্যান্ড্রয়েডের জন্য (এনডিকে ব্যবহারের সাথে) ব্যবহার করতে পারেন। আপনি এটি আইফোনের জন্য ব্যবহার করতে পারেন (উদ্দেশ্য সি এর কেবলমাত্র একটি এক্সটেনশন)। আপনি এটি লিনাক্স, ম্যাক বা উইন্ডোজের মতো মূল ওএসের জন্যও ব্যবহার করতে পারেন। যদি আপনি সি দিয়ে স্বাচ্ছন্দ্য বোধ করেন তবে আমি আপনাকে এটি ব্যবহার করে দেখুন!


2

অবশ্যই এটি যুক্তিসঙ্গত। আমি ব্যক্তিগতভাবে এটি করতাম না এবং আমি জানি বেশিরভাগ সি ভক্তরা কেবলমাত্র .cpp ফাইলগুলিতে সি-জাতীয় কোড লিখেন। ভাষাগুলি যেখানে এটির কোনও গুরুত্ব দেয় না তার সাথে যথেষ্ট মিল similar

কেন কেউ এই কাজটি বেছে নেবে তা আমি মনে করি এটি বেশিরভাগ ক্ষেত্রে অ্যান্টি-সি ++ দর্শনের মুখের মধ্যে রয়েছে। ব্যক্তিগতভাবে আমি এখনও "সি-স্টাইল সি ++" সি এর চেয়ে বেশি পছন্দ করার উপযুক্ত কারণ বলে মনে করি না। টাইপডেফ স্ট্রাক্ট উন্মত্ততা সি থেকে পরিষ্কার হওয়ার পক্ষে যথেষ্ট কারণ, এবং আরও অনেকগুলি রয়েছে।

দুর্ভাগ্যক্রমে সি এবং সি ++ উভয়ই খুব ভয়ঙ্কর ভাষা it লোকেরা সাম্প্রতিক বছরগুলিতে স্ক্রিপ্টে তাদের কোডগুলি প্রচুর করার চেষ্টা করছে তার এক কারণ।

আপনি যদি সি তে কর্মরত লোকের উদাহরণ সন্ধান করেন তবে আপনি আইডি উপেক্ষা করতে পারবেন কারণ আমার মনে পড়ে যে তারা অনেক আগে সি ত্যাগ করেছেন। যদিও ক্রিপ্টিক স্টুডিওস (স্টার ট্রেক অনলাইন) তাদের সমস্ত ইঞ্জিন বিকাশ সি তে করে। আমি যতদূর বলতে পারি, হ্যাঁ, এটি দর্শনের কারণে কোনও স্পষ্ট লাভের চেয়ে বেশি।


0

হ্যা এবং না. হ্যাঁ আমি কয়েক বছর আগে এটি করে ফেলেছি তবে আমার গেমটি ইউনিক্সে (লিনাক্স নয়) in৪ বিট রিমোট সার্ভারে বোবা টার্মিনালের খেলোয়াড়দের সাথে চালানো দরকার। এটা ছিল না তুচ্ছ। সি সুন্দর হতে পারে আপনি এলইউএ সংহত করতে চান তবে অবশেষে আমি সি ++ এ কাজ করার জন্য লুয়া পেয়েছিলাম তাই আমি বলব হ্যাঁ এটি সম্ভব তবে এটি করবেন না।


0

একটি সম্ভাব্য ভাল উত্তর "উভয় ব্যবহার" হতে পারে?

যেমনটি আমি শুনেছি যে পান্ডা 3 ডি প্রকল্পগুলি অপ্টিমাইজ করা যেতে পারে, কিছু সিথন ব্যবহার করে বাধা বা হত্যা করে সেগুলি পুনরুদ্ধার করতে পারে।

বেশিরভাগ সময়, যে অংশগুলি অপ্টিমাইজ করা প্রয়োজন সেগুলি হ'ল অংশটি প্রচুর পরিমাণে পুনরাবৃত্তি এবং বাসা বাঁধার সাথে বা প্রচুর সংখ্যাগত কম্পিউটিং সহ, সুতরাং আমার (বন্য) অনুমান যে এক সাথে ন্যায্য সমঝোতা উভয় ভাষা ব্যবহার করা হবে, সি ব্যবহার করে যে অংশগুলিতে প্রচুর নিম্ন-স্তরের প্রোগ্রামিং অন্তর্ভুক্ত রয়েছে, আপনি সেই অংশটির জন্য গতি, এবং গেমের বাকি অংশের জন্য সি ++ এর কোনও অপব্যবহার করতে পারবেন না।

আদর্শভাবে আপনি উচ্চ স্তরের কথা মাথায় রেখে ইঞ্জিনের দ্রুত অংশটি করেন এবং তারপরে একটি স্ক্রিপ্টিং ভাষা বা সি ++ ব্যবহার করেন যা নীড় বা লুপগুলি কম ব্যবহার করবে।

অবশ্যই আপনি কোনও ইঞ্জিন তৈরি করতে পারেন নি যা সমস্ত গেমস বিকাশকারীদের করতে হবে, যদি আপনি একটি বিশেষ ধরণের গেমের জন্য নিজের ইঞ্জিনকে উত্সর্গ করেন তবে ...

তবে আমার পরামর্শকে মর্যাদার জন্য গ্রহণ করবেন না যেহেতু আমি একজন অভিজ্ঞ গেম ডেভেলপার বা অভিজ্ঞ বিকাশকারী নই ... আমার মনে হয় সি একটি গেমের মতো বড় প্রকল্পের জন্য ভাল এবং দ্রুত সি ++ কোড লেখার সময় আপনাকে দ্রুত কোড লিখতে বাধ্য করে একটি আলাদা জিনিস ...


0

সি জন কারম্যাকের জন্য কাজ করেছে , আপনি সি ব্যবহার করে অনেকগুলি সুবিধা পেতে পারেন, তবে সেগুলি থেকে আপনি লাভ না করা অবধি আপনাকে কিছুটা সময় নিতে পারে।

এখানে আপনি গেম ইঞ্জিনগুলির একটি তালিকা পেতে পারেন তাদের মধ্যে কয়েকটি সিতে লিখিত রয়েছে, সম্ভবত আপনি তাদের সোর্স কোডের মাধ্যমে সি গেম ইঞ্জিন কীভাবে করবেন সে সম্পর্কে কিছুটা অন্তর্দৃষ্টি পেতে পারেন।


0

সি কোডটি সাধারণত বৈধ সি ++ কোড।

সি ++ এর সাথে মুখ্য সমস্যাগুলি এটি ভুলভাবে ব্যবহার করছে ( লিনাস টরভাল্ডস এ কারণে এটি ঘৃণা করে , গ্রন্থাগারের বহনযোগ্যতার সাথে তার আরও কিছু সমস্যা ছিল এবং তাই কিনে তিনি অপারেটিং সিস্টেমের স্তরে কাজ করছেন এবং প্রতিটি এলোমেলোভাবে জিনিস চালাতে সক্ষম হতে হবে) সেখানে চিপ আউট)।

উদাহরণস্বরূপ সিস্টাইল অ্যারে [] সি ++ স্টেড :: ভেক্টর <> (বা অনুরূপ ধারক) এর উপরে ব্যবহার করার প্রায় কোনও সুবিধা নেই।

ভেক্টরগুলি টাইপসেফ এবং চেক করা বাউন্ডস হতে পারে (আপনি get () বা [] ব্যবহার করে উপাদানগুলিতে অ্যাক্সেস করতে পারেন, এমনকি যদি আপনি অ্যারে পরীক্ষিত পদ্ধতি ব্যবহার না করেন তবে আপনি পয়েন্টারের সাথে চারপাশে কার্টিংয়ের পরিবর্তে আকারটি জিজ্ঞাসা করতে পারেন)।

তবে ভেক্টরগুলি ধীর হতে পারে যদি উদাহরণস্বরূপ, আপনি কনস্ট্রাক্টরে ডিফল্ট আকারটি ঘোষণা করেন না। এছাড়াও কোনও ভেক্টরে জিনিস যুক্ত করা যদি মন্দির প্রয়োজন হয় তবে তার পুনরায় আকার পরিবর্তন করতে হবে। সি ++ 11 অনেক সুবিধা যুক্ত করে যেমন ইউনিফর্ম ইনিশিয়ালাইজেশন (আপনি এখন একই সিনট্যাক্স ব্যবহার করে ভেক্টরকে ডিক্লেয়ার এবং ইনিশিয়েল করতে পারেন) এবং এমন মুভ কনস্ট্রাক্টর রয়েছে যা আপনাকে অনুলিপি এড়াতে দেয়। এমনকি আপনি নিজের কাস্টম ইনিশিয়ালাইজারগুলিও তৈরি করতে পারেন (যদি আপনি কোনও কারণে মলোক ব্যবহার না করে অন্য কিছু করতে চান)।

অথবা অবশ্যই যদি আপনার জিনিসগুলিকে পুনরায় আকার দেওয়ার প্রয়োজন হয় তবে ভেক্টরগুলি এগুলি করা এখনও সহজ, আপনাকে ম্যালোকের সাথে গোলমাল করতে হবে না, ম্যানুয়ালি জিনিসগুলি অনুলিপি করতে হবে এবং এ জাতীয়।

সি ++ আপনাকে অবজেক্ট ওরিয়েন্টেটেড কোড দেয়। সংকলিত যখন এটি ঠিক তত কার্যকর হতে চলেছে যেহেতু কোডের সাথে কাজ করা মানুষের পক্ষে এটি কেবল একটি বিমূর্ততা। যদিও কনস্ট্রাক্টরগুলির মতো জিনিসগুলি বস্তু তৈরির গতি কমিয়ে দিতে পারে। তবে আপনাকে হয় ডিফল্ট মানগুলি নির্ধারণ করতে কনস্ট্রাক্টরের প্রয়োজন হবে অথবা অন্যথায় আপনি কনস্ট্রাক্টর ব্যবহার না করে অবজেক্টগুলি আরম্ভ করতে পারেন (এর) ছেড়ে দিয়ে।

তবে অবজেক্ট ওরিয়েন্টেশন প্রোগ্রামিং গেমগুলিকে অনেক সহজ করে তোলে । গেমগুলি প্রায়শই জিনিসগুলির সাথে ডিল করে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.