গেম বিকাশের মৌলিক বিষয়গুলি কী কী? [বন্ধ]


12

কোনও ভিডিও গেম কীভাবে কোড করা যায় তা আমি পুরোপুরি বুঝতে পারি না।

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

উত্তর:


14

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

আপনি যদি নিজের মেনুটি তৈরির কথা ভেবে থাকেন তবে আপনি একটি পয়েন্ট পেয়েছেন তবে ব্যবহারকারী যদি কোনও কী চাপায় যা উপলভ্য বিকল্পের অংশ নয়,

  1. আপনার আবেদন প্রস্থান করবে, বা
  2. ব্যবহারকারী "প্রস্থান" কী টিপ না দেওয়া অবধি কি এটি চালিয়ে যেতে হবে?

আমার বাজিটি # 2 হবে, ব্যবহারকারী কনসোল অ্যাপ্লিকেশন থেকে প্রস্থান করার জন্য স্পষ্টভাবে কীটি চাপ না দেওয়া পর্যন্ত অ্যাপ্লিকেশনটি চলতে থাকবে।

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

আপনাকে সবেমাত্র গেম লুপের সাথে পরিচয় করিয়ে দেওয়া হয়েছে। একটি গেম হ'ল অন্য একটি প্রোগ্রাম যা এটি ব্যবহারকারী দ্বারা স্পষ্টভাবে না বের হওয়া অবধি চালিত হয়।

গেম লুপে থাকাকালীন, আপনি যখন গেমটি খেলছেন, তখন চলগুলি হ'ল চিত্রগুলি নির্দিষ্ট স্থানাঙ্কের স্ক্রিনে আঁকা are যখন ব্যবহারকারী / প্লেয়ার একটি দিকনির্দেশক কী টিপে যেমন চাপায় [Left], তখন আপনি নিজের চিত্রটির এক্স স্থানাঙ্ককে হ্রাস করার সময় এর স্থানাঙ্কগুলি রিফ্রেশ করে তুলবেন যাতে আপনি বাম দিকের দিকে গতির প্রতিচ্ছবি দিন। খেলোয়াড় তার চরিত্র / জাহাজের পরবর্তী পদক্ষেপটি কী করতে চায় তার ক্রিয়া পেতে আপনি এই ইনপুটগুলি পেয়েছিলেন। তারপরে, গেমটি শেষ না হওয়া অবধি গেম লুপটি প্লেয়ারের কাছ থেকে অন্য কাঙ্ক্ষিত ক্রিয়া না পাওয়া পর্যন্ত লুপ অবিরত থাকে।

ভাল, আমি ভীত এই উত্তরটি যথেষ্ট দীর্ঘ হতে শুরু করে, তাই আপনার আগ্রহী হতে পারে এমন দুটি আরও প্রশ্ন আপনাকে আমাকে নির্দেশ করার অনুমতি দিন, আমি আশা করি।

  1. গেমস, কোনও টিউটোরিয়াল বা এর মতো লেখা কোথায় শুরু করবেন?
  2. ক্লাস ব্যবহার করে এক্সএনএতে আমার স্প্রিটটি সরানো

এই তৃতীয় লিঙ্কটি কীভাবে গেমগুলি লিখতে শুরু করবেন তা নয়, তবে কীভাবে স্ক্রিনে স্প্রিট মুভ করবেন about যেহেতু আপনি গ্রাফিকগুলি কীভাবে পর্দায় সরানো যায় সে সম্পর্কেও জিজ্ঞাসা করেছিলেন, তাই আমি ভেবেছিলাম এটি আপনার আগ্রহী হতে পারে।

আশা করি এটা কাজে লাগবে! =)


4

আপনি কনসোল অ্যাপ্লিকেশনগুলি তৈরি করার সময়, আপনি সম্ভবত মুদ্রণ () বা পড়া () পড়ুন বা লিখুন () নামে ফাংশন ব্যবহার করেন। এর পরিবর্তে, গ্রাফিকাল গেমগুলি অন্যান্য ফাংশনগুলি ব্যবহার করে যা স্ক্রিনে পৃথক পিক্সেলের রঙ নির্ধারণ করতে পুরো ফ্রেমওয়ার্কগুলিতে সেট_পিক্সেল () এর মতো নিম্ন স্তরের হতে পারে যা আপনাকে প্রচুর প্রভাব সহ ত্রিমাত্রিক মডেল আঁকতে দেয়।

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

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

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

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

সামনে অনেক দীর্ঘ পথ রয়েছে তবে মনে রাখবেন মজাটি আসলে এটির মধ্য দিয়ে চলছে।

ভাল কাজগুলো করতে থাকো!


4

একটি কম্পিউটার গেম একটি অন্তহীন লুপ:

  • আপডেট: গেম স্টেটের এক অতি ক্ষুদ্র সময়ের স্লাইস (১/৮০ সেকেন্ডের মতো) এর অগ্রিম করুন।
  • বর্তমান গেমের স্থিতি আঁকুন।

এর বিভিন্নতা রয়েছে। কিছু গেমের প্রতিটি পেইন্টের মধ্যে আরও আপডেট থাকে, বা বিভিন্ন মেশিনে গেমের প্রবাহকে সমানভাবে মসৃণ করতে এগুলি পরিবর্তিত হতে পারে। তবে তা প্রযুক্তিগত বিবরণ।

আপডেট পর্ব যা প্রতি সেকেন্ডে 50 থেকে 100 বারের মধ্যে ঘটে (হ্যাঁ এটি প্রায়শই হয়) এটি করে:

  • গেমস পদার্থবিজ্ঞানের আপডেট করুন। বলুন যে একজন অভিনেতার বেগ আছে। আপডেটটি তাকে সঠিক দিকে এক সামান্য সরানো উচিত। এছাড়াও, আপনি যদি পদার্থবিজ্ঞানের ইঞ্জিন ব্যবহার করেন তবে এটি অন্যান্য অ্যাক্টো বা বাধাগুলির সাথে সংঘর্ষের জন্য পরীক্ষা করা উচিত।
  • গেমস বিধি আপডেট করুন। পদার্থবিজ্ঞানের পরীক্ষা নয় এটি এটিকেই একটি খেলা করে তোলে। বলুন যে একটি গুলি খেলোয়াড় অভিনেতাকে আঘাত করেছিল। গেমের নিয়মগুলি খেলোয়াড়কে স্বাস্থ্যের এক্স পয়েন্ট এবং বুলেটটি অদৃশ্য হওয়ার জন্য বলে দেয়।
  • এআই আপডেট। কখনও কখনও কম্পিউটার নিয়ন্ত্রিত অভিনেতাদের করণীয় অনুধাবন করা উচিত। বাম না ডান? সুন্দর জায়গা হওয়ার জন্য একটি পথ সন্ধান করুন। একটি অস্ত্র আগুন।
  • ইনপুট নিয়ন্ত্রণ। কীবোর্ডে টিপানো বোতামগুলি অনুযায়ী প্লেয়ার অভিনেতা আপডেট করুন।
  • দৃশ্য গ্রাফ আপডেট করুন। এটি অ্যানিমেশনটিকে এক ধাপ এগিয়ে নিয়ে যেতে বা খেলোয়াড়ের এখন 10 পয়েন্ট কম স্বাস্থ্য রয়েছে তা দেখানোর জন্য জিইউআই আপডেট করা যেতে পারে। এটি কেবল উদ্দেশ্যটি হ'ল গেমটি দেখতে সুন্দর লাগছে।

আপনি কোথায় শুরু করবেন?

গ্রাফিকাল গেমের প্রাথমিক প্রয়োজন হ'ল প্রোগ্রাম গ্রাফিক্স। নিশ্চিত হয়ে নিন যে আপনি একটি উইন্ডো খুলতে পারেন এবং এতে একটি বল আঁকতে পারেন।

আমি ধরে নিলাম আপনি কিছু ধরণের ক্লাস করতে পারেন। একটি বল ক্লাস করুন। এর নিম্নলিখিত সদস্যগণ রয়েছে: x, y, ডেল্টেক্স, ডেল্টাওয়াই। সমস্তগুলি পূর্ণসংখ্যা এবং পিক্সেল স্কেলগুলিতে। এখন, এই লুপ লিখুন।

forever, do this {
  start measure time (in milliseconds)
  //physics part
  add deltaX to x
  add deltaY to y
  if x is bigger than the screen width, assign -deltaX to deltaX
  if y is bigger than the screen height, assign -deltaY to deltaY
  if x is less than 0, assign -deltaX to deltaX
  if y is less than 0, assign -deltaY to deltaY

  //paint
  paint the ball at x, y
  stop measuring time, assign this to workTime
  make the thread sleep for (25 - workTime) milliseconds
}

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

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

(25 - ওয়ার্কটাইম) মিলিসেকেন্ডের জন্য কেন ঘুমাবেন? আপনি যদি এটির মতো এটি করেন তবে সিমুলেশনটি প্রতি সেকেন্ডে 40 টি আপডেট এবং পেইন্টগুলির বিপরীত গতিতে চলবে। এটি বেশ মসৃণ হবে। আপনি যদি ঘুমের অংশটি এড়িয়ে যান তবে অ্যানিমেশনটি ঝাঁকুনিযুক্ত হবে এবং 100% সিপিইউ গ্রহণ করবে। এছাড়াও, বলের গতি নির্ভর করে এটি চালিত মেশিনের গতির উপর। এখন, বল উল্লম্ব গতি প্রতি সেকেন্ডে 40 * ডেল্টাওয়াই পিক্সেল।


2

আপনার কনসোল প্রোগ্রামটি গণিত করে নিন এবং তারপরে আপনি যখন সঠিক উত্তর দিয়েছিলেন তখন তা কিছুটা কনফিটি বন্ধ করে দিন ... এটি একটি গেম হয়ে উঠেছে (আমার পাশের কেউ ম্যাথ ব্লাস্টারকে ছোটবেলায় খেলবে? :))।

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

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

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

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


লল, "খুব দ্রুত সীমাবদ্ধ ডেটা-সেট ডেটাবেস হিসাবে ভিডিও গেমস" সম্ভবত বিভ্রান্তি যোগ করছে।
michael.bartnett

1

আপনার যা বোঝার দরকার তা হ'ল ম্যাট্রিক্স। তারা গেমগুলি আন্ডারপিন করে। একবার আপনি ম্যাট্রিকের শক্তি বুঝতে পারলে আপনি দেখতে পাবেন যে গেমগুলি কীভাবে সাধারণ গণিতে কমে যায়।

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

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