আমি কীভাবে একটি প্রধান গেম লুপ লিখব? [বন্ধ]


130

আমি কীভাবে একটি প্রধান গেম লুপ লিখব? গেম লুপে আপনাকে এমন কিছু জিনিস করা উচিত যা গেম লুপে করা উচিত নয়?

আমি এগুলি প্রচুর লিখেছি, তবে আমি কখনই গেম লুপগুলিতে পড়িনি। আমি নিশ্চিত যে আমি তাদের যথেষ্ট উন্নতি করতে পারি, তবে আমি কীভাবে তা নিশ্চিত নই।


4
অশুভ উত্তর: আপনার জন্য এই লুপটি তৈরি করতে কারও ইঞ্জিন ব্যবহার সম্পর্কে কী? :)
ব্যবহারকারী 712092

আপনি ব্যবহারকারীকে মোট কতগুলি ফ্রেম চালাতে চান তা জিজ্ঞাসা করতে পারেন এবং লফের জন্য একটি বার ব্যবহার করতে বাফারের পরিমাণের চেয়ে বার করতে পারেন।
উউর গামাহান

উত্তর:


121

প্রধান গেম লুপটি তিনটি প্রধান কাজ পরিচালনা করে:

  1. ব্যবহারকারীর ইনপুট পান
  2. গেমের অবস্থা আপডেট করুন
  3. গেমটি আঁকুন

একটি সাধারণ গেম লুপ কেবল লুপের মধ্যে এই তিনটি কাজকে মিশ্রিত করে। এর কিছু অযাচিত ফলাফল রয়েছে:

  1. গেমটি বিভিন্ন কম্পিউটারে বিভিন্ন গতিতে চলে।
  2. সিপিইউ (অযথা হতে পারে) 100% ব্যবহারে প্যাগ করা হয়েছে।
  3. "গেমের স্টেটস" / মেনুগুলি গেম কোডের সাথে অনুপস্থিত বা মিশ্রিত।
  4. মূল গেমের লুপটি খুব দীর্ঘ এবং বজায় রাখা শক্ত।
  5. কোড অন্য প্ল্যাটফর্মগুলিতে প্রসারিত / পোর্ট করা কঠিন।

উন্নত গেমড লুপগুলি উপরে তালিকাভুক্ত সমস্যাগুলিকে সম্বোধন করে। এখানে কিছু দরকারী নিবন্ধ:

একটি দুর্দান্ত উদাহরণ গেম লুপের জন্য, অ্যালেগ্রো স্কেটার ডেমো গেমটি একবার দেখুন:

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


1
হ্যাঁ, সন্দেহ হিসাবে, আমি অবশ্যই উন্নতি করতে পারি। ভাল পড়া। এছাড়াও, কোড পোস্ট করার জন্য ধন্যবাদ। এই স্টাফ সহ বাস্তব গেম কোডটি দেখতে দুর্দান্ত great
hokiecsgrad

1
সিপিইউ 100% ব্যবহারে আটকে থাকা উচিত (বা আপনার কমপক্ষে 2 টি কোর থাকলে 50% এর মতো)। চিন্তা করুন. আপনি কীভাবে রক্তক্ষরণ প্রান্তের পদার্থবিজ্ঞান, হত্যাকারী গ্রাফিক্স পেতে চলেছেন, যদি আপনি সেখানে নিজেকে বসে এই বলে বসে থাকেন "ওহ, তবে আমি সিপিইউ সমস্ত ব্যবহার করতে চাই না ।" হ্যাঁ আপনার যদি সম্ভব হয় তবে আপনার 100% সিপিইউ ব্যবহার করা উচিত (এর অর্থ যদিও আজকের কম্পিউটারগুলিতে মাল্টিথ্রেডিং করা যায়, তাই আসলে সমস্ত সময় 4 টি কোরের 100% ব্যবহার করা খুব কঠিন)। আপনি যে মেশিনটি চালাতে পারেন তার সর্বাধিক পান।
বোবোবোবো

5
আমাকে সংযুক্ত করার অনুমতি দিন: ডেস্কটপ প্রোগ্রামগুলির জন্য । পোর্টেবল ডিভাইসে আপনি আরও অনেক বেশি ব্যাটারি জ্বালিয়ে ফেলবেন, সুতরাং আপনি 100% ব্যবহারের জিনিসটি নিয়ে চিন্তিত হবেন।
বোবোবো

1
@ user6003859: আমি লিঙ্কটি ঠিক করেছি।
লেফটিয়াম

1
আর একটি দরকারী লিঙ্ক: গেমপ্রগ্রামিংপ্যাটার্নস.com
game-

51

আমি দৃ frame় ফ্রেমরেট স্বাধীনতা সম্পর্কে গ্লেন ফিডলারের নিবন্ধটি সুপারিশ করব, " আপনার টাইমস্টেপ ঠিক করুন! "

(হাতে থাকা বিষয়টির সাথে কম প্রাসঙ্গিক, তবে সিরিজের অন্যান্য নিবন্ধগুলিও বেশ ভাল - যেমনটি তার সাইটের সবকিছু!)


সেগুলি অবশ্যই কিছু ভাল নিবন্ধ। পোস্ট করার জন্য ধন্যবাদ!
hokiecsgrad

1
আমি একটি দৃust় ফ্রেমরেট স্বাধীন প্রয়োগের জন্য সুপারিশ দ্বিতীয়। আপনার গেমের প্রতিটি জিনিসই আপনি সময় সময় আপডেট করে এমন একটি ব-দ্বীপের মান হিসাবে প্রয়োগ করা উচিত। এবং এটি পরবর্তী সময়ে অগত্যা একই সময়ে অগত্যা করা উচিত নয়। প্রকৃতপক্ষে, আপনি যদি কোনও ফ্রেম এড়িয়ে যান তবে আপনি সম্ভবত 2x ব-দ্বীপ দ্বারা আপনার আপডেট পদ্ধতিগুলি কল করতে চান না। একই ব-দ্বীপের সাথে আপনার আপডেটটি দু'বার কল করা আরও সামঞ্জস্যপূর্ণ। আপনার ফ্রেমরেট এবং আপনার আপডেট চক্র সহ সমস্যাগুলি শিখতে অবশ্যই সময় নিন। এটি পরে আপনার সময় সাশ্রয় করবে।
ডেনিস মুন্সি

4

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

http://www.gamasutra.com/view/feature/1830/multithreaded_game_engine_.php

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