ওপেনজিএল দিয়ে স্ক্র্যাচ থেকে গেম ইঞ্জিন রচনা করা [বন্ধ]


15

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

আমার প্রোগ্রামিংয়ের ভাষা এবং সরঞ্জামগুলি হ'ল:

  • সি / সি ++ কেবলমাত্র সি ব্যবহার করা ভাল?
  • পাইথন
  • যেমন OpenGL
  • git
  • , GDB

আমি এর থেকে কী শিখতে চাই:

  • কোর গেম ইঞ্জিন
  • রেন্ডারিং / গ্রাফিক্স
  • খেলা / বিধি খেলুন
  • ইনপুট (কীবোর্ড / মাউস / নিয়ন্ত্রক, ইত্যাদি)

রেন্ডারিং / গ্রাফিক্সে:

  • 3D
  • ছায়াকরণ
  • প্রজ্বলন
  • texturing

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

8
দুই: একটি প্রচলিত প্রজ্ঞা আছে যা অন্যান্য লোকেরা স্পাউট করবে যে আপনার খেলা ছাড়াই ইঞ্জিন তৈরির দিকে মনোযোগ দেওয়া উচিত নয়। একটি খেলা ছাড়া একটি ইঞ্জিন আপনি তা প্রমাণ করতে আপনার ইঞ্জিন মানে দরকারী । ভাল ইঞ্জিনগুলির জন্য লোকেরা তাদের কুকুরের খাবার যেমন খাচ্ছিল তা খাওয়া প্রয়োজন। এই যুক্তিটির আরও একটি সাধারণ লিঙ্কযুক্ত ব্লগটি এখানে রয়েছে: বৈজ্ঞানিক
ninja.com/blog/write-games-not-engines

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

1
আমি আপনার তালিকার বিন্দুটি দেখতে পাচ্ছি না। আপনি সি / সি ++ এবং পাইথন জানেন যে সত্যটি আমাদের সহায়তা করে তবে আপনি সংস্করণ নিয়ন্ত্রণ এবং একটি ডিবাগার ব্যবহার করতে পারেন তা কেন তালিকাভুক্ত করবেন?
কম্যুনিস্ট হাঁস

2
@ কম্যুনিস্ট ডাক: আরে, এটি কিছু বিকাশকারীদের চেয়ে ভাল। :)
ক্রিস

উত্তর:


11

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

সুতরাং, আমি মনে করি আপনার নিজের ইঞ্জিনটি লেখার ক্ষেত্রে আপনি ঠিক কী শিখতে চান তা নির্ধারণ করা ভাল হবে। গেম ডেভলপমেন্টে অনেকগুলি "ফিল্ড" রয়েছে।

  • কোর গেম ইঞ্জিন

  • রেন্ডারিং / গ্রাফিক্স

  • এআই

  • নেটওয়ার্কিং

  • খেলা / বিধি খেলুন

  • সাউন্ড

  • ইনপুট (কীবোর্ড / মাউস / নিয়ন্ত্রক, ইত্যাদি)

ইত্যাদি .. সেখান থেকে আপনি এমনকি সাব টপিক পেতে পারেন। রেন্ডারিং / গ্রাফিক্সে

  • 2 ডি বা 3 ডি?

  • মূর্তিনির্মাণ

  • ছায়াকরণ

  • প্রজ্বলন

  • texturing

  • GUIs / Huds / ইন্টারফেস।

  • ইত্যাদি

এই সাব-সাব-বিষয়গুলির মধ্যে একটি মাত্র অনেক ঘন্টা (বা বছর!) অধ্যয়ন করতে পারে!

সুতরাং, প্রথমে আপনি কী শিখতে চান তা নির্ধারণ করুন। সহজ শুরু করুন।

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

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

যদি আপনার সি / সি ++ দিয়ে আরামদায়ক হয়; আমি এসডিএল / ওপেনজিএল একবার দেখে পরামর্শ দেব। এটি ইনপুট, শব্দ, উইন্ডো তৈরি করা ইত্যাদির মতো কিছু গৃহকর্ম পরিচালনা করে এবং অন্যান্য জিনিসগুলিতে ফোকাস করতে পারে।


4
আহ যে দিনগুলিতে আমি সি ++ শিখছিলাম এবং কনসোল গেমগুলি ছিল দুর্দান্ত মজা ... [নতুন কনসোল প্রজেক্ট তৈরি করে ...]
নিক বেডফোর্ড

আমি আমার প্রশ্নটি আপডেট করেছি, আশা করি আমাকে প্রচুর দুর্দান্ত উত্স প্রদান করবে :)
Wazery

4

কাস্টম গেম ইঞ্জিন শুরু করার জন্য এসডিএল + ওপেনজিএল একটি দুর্দান্ত পছন্দ।

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

আমি একটি অনুরূপ নৌকায় আছি চেয়ে আমি এল-এবং যেমন OpenGL সঙ্গে আমার এডভেন্ঞার ট্যুরিজম কিছু লিখে একটা ব্লগ (ইন immersedcode.org অন্য ক্ষেত্রে কেউ নেই) আগ্রহী।

সাধারণ আর্কিটেকচারের জন্য আমার কাছে দুটি পরামর্শ রয়েছে: আপনি যদি 3D ইঞ্জিন চান তবে জেসন ল্যান্ডারের "গেম ইঞ্জিন আর্কিটেকচার" বইটি দেখুন। আপনি যদি চান কেবল 2 ডি, নকশাটি যথাসম্ভব সহজ রাখুন এবং এক্সএনএ বা অন্যান্য প্রকল্পের মাধ্যমে নিজেকে অনুপ্রাণিত করুন।

শেষ অবধি: ওপেনজিএলকে সমস্ত জায়গায় কল করবেন না। নিজের পক্ষে একটি সুবিধা করুন এবং এটিকে কয়েকটি জায়গায় আলাদা করুন যাতে আপনি যদি চান তবে পরবর্তী সময়ে ডেস্কটপ ওপেনজিএল / ওপেনজিএল ইএস বা এমনকি ডাইরেক্টএক্সের মধ্যে স্যুইচ করার ক্ষমতা রাখে।


0

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

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

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


4
"ওপেনজিএল বনাম ডিএক্স"। ডাইরেক্টএক্স আরও বেশি ওও যে সত্য তা গুরুত্বপূর্ণ নয়। যতদূর আরও বোধগম্য হোন ... ওপেনজিএল (3 এর পূর্বে) একটি মোটামুটি সরল ইন্টারফেস প্রকাশ করে এবং এটি যা স্ক্যান করা সহজ এটি সমস্তই সি-স্টাইলের আবশ্যক পদ্ধতিতে। "এটিতে প্রক্ষেপণ ম্যাট্রিক্স সেট করুন tri ত্রিভুজগুলি শুরু করুন Here এখানে একটি উল্লম্ব Here এখানে একটি অনুভূমিক Here এখানে একটি উল্লম্ব tri সমাপ্ত ত্রিভুজ রয়েছে" " গ্রাফিক্স প্রোগ্রামিংয়ে আপনার পা ভিজা করার জন্য ওপেনগিএল এপিআইয়ের 1.x সিরিজটি ভাল, এবং এসডিএল (বা এমনকি জিএলইউটি ... urg) এর সাথে মিলিত আপনাকে 30-50 লাইনের কোডের মতো একটি অ্যাপ তৈরি করতে দেয়।
ক্রিসই

2
@ ক্রিস: নিশ্চিত জিনিস। এখানে কিছু বলা আছে extern "C", এবং এটির যথাযথ ব্যবহার একটি সি ইন্টারফেস লেখাকে তুচ্ছ বলে তোলে especially বিশেষত পাইথনের ক্ষেত্রে, যেখানে বুস্টের মধ্যে একটি রূপান্তরকারী উপস্থিত রয়েছে যা এটিকে বাধ্যতামূলক করে তোলে। সি ++ ভাষার বৈশিষ্ট্যগুলি সম্পর্কে কীভাবে? তারা দুর্দান্ত । সি ++ এর ভাষার বৈশিষ্ট্যগুলির বেশি ব্যবহার কোনও প্রকল্পের নির্ভরযোগ্যতা এবং গ্রহণযোগ্য খুব গৌণ পারফরম্যান্স ট্রেড-অফের চেয়ে বেশি পরিমাণে কোডিংয়ের স্বাচ্ছন্দ্য বৃদ্ধি করে। সি এর ভাষার বৈশিষ্ট্য তুলনা করে করুণ are উদাহরণস্বরূপ, একটি আধুনিক সি ++ সংকলকটির সঠিক ব্যবহার কোনও মেমরি ফাঁসের গ্যারান্টি দিতে পারে । সি
তে এটি করুন

1
@ ডিড এমএমজি: ওওপি যদি সত্যিই খুব বড় বিষয় হত তবে, এখানে উত্তরটি জাভা বা সি #, এবং সি ++ নয়। আমি যে বিষয়টির সাথে একমত নই তা হ'ল সি ++ বৈশিষ্ট্যগুলির ব্যবহারটি আপনার কোডটিকে যাদুতে আরও ভাল, দ্রুত বা আরও নির্ভরযোগ্য করে তোলে না; আপনাকে কীভাবে এই বৈশিষ্ট্যগুলি ব্যবহার করতে হবে তা জানতে হবে , এবং কোনও ইঞ্জিনের স্থাপত্যের পাশাপাশি কোনও ভাষা শেখা কি সত্যিই সময়ের কোনও ভাল ব্যবহার? না কারও জন্য এটি প্রথমবারের জন্য নয়। আপনি আরামদায়কভাবে এক বা দু'দিনে সমস্ত সি শিখতে পারেন এবং ভাষা কী করছে তা কখনই ভাবতে পারেন না। ওপেনএল, যে কোনও হারে দরকারী বেসিক কল সেট, একই স্বচ্ছতার প্রস্তাব দেয়।
ক্রিস

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

4
জিএল বনাম ডি 3 ডি তে: জিএল 3/4 কোর কোনও ম্যাট্রিক্স স্ট্যাক নেই এবং কোনও বৈশিষ্ট্য স্ট্যাক নেই। জিএল এবং ডি 3 ডি উভয়ই একই হার্ডওয়্যার আর্কিটেকচারের মানচিত্র, তবে অনেক সময় জিএল পাতলা বোধ করে। নিশ্চিত যে জিএল স্টেট মেশিনটি কিছুটা ঝামেলা, তবে এটিই সত্যিকারের হার্ডওয়্যার;) এর মধ্যে যে কোনওটি শিখাই ঠিক আছে, এবং যতক্ষণ না আপনি বুঝতে পারছেন আসলে কী ঘটছে আপনি সহজেই অন্যটিতে (বা একটি কনসোল এপিআই) স্যুইচ করতে পারেন।
অকার্যকর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.