কোনও স্তর পুনরায় চালু করার সময় কেন গেমস আপাতদৃষ্টিতে পুরো স্তরটি পুনরায় লোড করে?


47

খেলার সময় ডেটা কি এতটা সংশোধন করে?

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

এটি কনসোলগুলিতে আরও লক্ষণীয়, তবে এটি পিসি গেমগুলিতে অলক্ষিত নয়।


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

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

প্রশ্নটি কালো ও সাদা নয়। পুনরায় লোড করা হয় কত রাজ্য? প্রচুর গেমগুলি কোনও উপযুক্ত কারণে পুরো টেক্সচার সেটগুলি পুনরায় লোড করে। অবশ্যই, স্তর 5 থেকে স্তর 6 এ যাওয়ার অর্থ নতুন টেক্সচার লোড করা হতে পারে, তবে এর অর্থ এই নয় যে প্রতিবার আপনি পুনরায় স্তর 6 শুরু করবেন
ম্যাসাল্টারস

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

আমার মনে হয় কোনও উত্তরাধিকার ব্যবস্থাতে কেউ উইং কমান্ডার তৃতীয় খেলছেন।
এরিক Reppen

উত্তর:


54

এখন ঠিক আছে - মোকাবেলা করার জন্য কী সহজ কিন্তু আকর্ষণীয় প্রশ্ন।

কোনও স্তর পুনরায় লোড করার সময় এমন অনেকগুলি বিষয় রয়েছে যা বিবেচনায় নেওয়া দরকার যে উত্তরটি অনেকগুলি দিক যেতে পারে।

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

ভেবে দেখার জন্য একটি ভাল উদাহরণ হ'ল প্রথম ব্যক্তি শ্যুটার সেই ভূখণ্ডের ধ্বংস / বুলেট ডেসাল ব্যবহার করত যা সেই খেলাগুলির সময় দৃistant়রূপে অবস্থিত ছিল তবে আপনি যদি সেই চেকপয়েন্ট বা স্তরটি আবার চালু করেন তবে থাকবেন না

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

  • সেই প্রাচীরের জন্য কোনও গতিময়ভাবে উত্পন্ন গীবগুলি সরান (তবে আপনি যে রাষ্ট্রটি বোঝা করেছেন সেগুলি থেকে সরান না)
  • বুলেট গর্ত থেকে ধুলার জন্য কণা প্রভাবটি সরান
  • আপনার তৈরি গর্ত থেকে মুক্তি পেতে প্রাচীরটি প্রতিস্থাপন / মেরামত করুন
  • প্লেয়ার গোলাবারুদ পুনরায় সেট করুন
  • ইত্যাদি ...

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

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

সুতরাং বড় সামগ্রীর স্তরের জন্য - গণনা এবং "রিওয়াইন্ডিং" এর পরিবর্তে একটি একক রাষ্ট্র লোড করা:

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

তবে, একটি পাল্টা উদাহরণ হিসাবে লড়াইয়ের খেলা (স্ট্রিট ফাইটার 4 হিসাবে দুর্দান্ত বাস্তব জীবনের উদাহরণ) কোনও স্তর পুনরায় আরম্ভ করার জন্য এতগুলি সম্পদ পুনরায় লোড করার প্রয়োজন নাও হতে পারে। 2 জন খেলোয়াড়, স্তর স্তরটির জন্য পরিবেশগত পরিস্থিতি এবং সাধারণ স্তরের টাইমারগুলি বেশিরভাগ স্থির এবং গতিশীল নয় (প্লেয়ারের স্বাস্থ্য সর্বদা প্রতিটি রাউন্ডে 100% এ পুনরায় উঠবে, টাইমারগুলি 90 সেকেন্ডে পুনরায় সেট হবে এবং স্তরের কোনও বুলেট গর্ত নেই [বা এটি হয়!]) ) এবং তাই স্তরটিকে পুনরায় সেট করা যুদ্ধের সম্পূর্ণ স্বাস্থ্যকে ফিরিয়ে আনা এবং পরিবেশকে তার মূল অবস্থানে ফিরিয়ে আনার বিষয় (কিছু স্তরের দর্শকদের মতো like)

সুতরাং পুনরায় ম্যাচ করার সময় একটি লড়াইয়ের খেলার জন্য (বৃত্তাকার থেকে অন্যদিকে নয়) আপনার প্রয়োজন:

  • স্বাস্থ্য এবং শক্তি সর্বাধিক বা ডিফল্টে পুনরায় সেট করুন (সর্বদা অক্ষর হিসাবে একই)
  • টাইমার পুনরায় সেট করুন
  • অক্ষর শুরুর অবস্থানগুলি পুনরায় সেট করুন
  • ভূখণ্ডকে ডিফল্ট অবস্থায় পুনরায় সেট করুন (ঠিক করতে বা পুনরায় লোড করার জন্য বুলেট গর্ত নেই!)

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

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

আমি আশা করি এটি আপনার প্রশ্নের উপর কিছুটা আলোকপাত করেছে।


7
"কম কাজ devs 'বিন্দু জন্য উচ্চ তালিকা ... কিন্তু সম্ভবত তার ইঞ্জিন বাস্তবায়ন ভালো হতে পারে যে: গ্রেট উত্তর ... আমার কঠোর পার্শ্ব, আপনার করা হবে।
মেষ

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

9
কম কাজ অর্জনের জন্য একটি viর্ষণীয় লক্ষ্য, লজ্জার বিষয় নয়। আপনি একটি রিওয়াইন্ড সিস্টেম তৈরি করতে এবং এক মাস সমস্ত বাগ খুঁজে পেয়ে, বা পুনরায় লোড করে এবং অন্যান্য বৈশিষ্ট্যগুলিতে সজ্জিত করতে ব্যয় করতে পারেন =)
প্যাট্রিক হিউজ

1
আমি মনে করি ব্যয় এখানে সবচেয়ে গুরুত্বপূর্ণ যুক্তি। যদি না একটি স্তর পুনরায় লোড একটি ঘটে অনেক ব্যবহারকারীকে এবং একটি প্রধান বিরক্তি হয়ে আরো দ্রুত একটি রিলোড করতে অপ্টিমাইজ কোড লিখতে কোন উদ্দীপক আছে। এটি একটি সাধারণ লোডের জন্য কোডটি পুনরায় ব্যবহার করতে কেবল কম ব্যয় করে।
orlp

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

14

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

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

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

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

নেক্সট-জেন কনসোলগুলি এবং তাদের 8 গিগাবাইটের স্মৃতিতে জিনিসগুলি মারাত্মকভাবে পরিবর্তিত হতে পারে। বা এগুলি কেবল উচ্চতর-রেজোলিউশন মডেল এবং উপকরণ এবং প্রচুর সংখ্যক সক্রিয় ইন-গেম অবজেক্টের সাথে থাকতে পারে। সময় বলে দেবে. পিসি গেমস সাধারণত 2 গিগাবাইট র‌্যাম এবং 512 এমবি ভিআরএম সহ মেশিনগুলিকে লক্ষ্য করে তোলে (যদিও এটি অনেকগুলি বৃহত্তর মানের হতে পারে তবে), ন্যূনতম বেসলাইনগুলি যেতে 8 গিগাবাইট নতুন কনসোলগুলি বেশ বিলাসবহুল। আমরা শীঘ্রই আসন্ন বছরগুলিতে একটি 64-বিট সিপিইউ / ওএস এবং 4-8 জিবি র‌্যামের 1-2 গিগাবাইট ভিআরএমের দাবিতে গেমগুলিতে স্থানান্তর দেখতে পাব। দ্রুত স্ন্যাপশ্যাটিংয়ের জন্য মেমরিতে একাধিক রাজ্য সংরক্ষণ করা তখন খুব সহজ হওয়া উচিত।


+1 চমত্কার তথ্য এবং কেন কনসোলগুলি পুনরায় লোড করার ক্ষেত্রে লক্ষণীয়ভাবে ধীরে ধীরে হয় তার দুর্দান্ত ব্যাখ্যা।
টম 'ব্লু' পিডক

7

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

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

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


3
আপনি প্রযুক্তিগত কেসের উদাহরণের জন্য শানের উত্তরটি পরীক্ষা করে দেখতে চাইতে পারেন যেখানে আপনি "রিসেট" করে একটি স্তর পুনরায় লোড করতে চাইতে পারেন
স্পার্টানডনুট

2

সীমিত মেমরির সাথেও বৃহত্তর স্তরের বা সীমাহীন স্তরের গেম খেলার অনুমতি দেওয়ার জন্য (মেমরিটি সর্বদা খুব ছোট থাকে, প্রশ্ন আপনি যদি প্রথম র‌্যামের মধ্যে সীমাটি হিট করেন তবে বা গ্রাফিক্স কার্ডে) আরও একটি কৌশল রয়েছে:

কেবলমাত্র মেমরির স্তরের অংশটিই প্লেয়ারের বর্তমানে প্রয়োজন হয় বা কয়েক সেকেন্ডের মধ্যে তার প্রয়োজন হবে। মডেল, অঙ্গবিন্যাস, শব্দ নমুনা, ... যা সম্ভবত আর প্রয়োজন হয় না স্মৃতি থেকে মুছে ফেলা হয়।

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

প্রায়শই একটি তাজা পুনরায় লোড হ'ল সহজতম উপায়, সস্তারতম উপায় এবং সম্ভবত দ্রুততম উপায়।

সম্পাদনা করুন: এখানে অন্ধকূপ অবরোধের লোডিং প্রক্রিয়া সম্পর্কিত একটি গবেষণাপত্র: অন্ধকূপের অবরোধের ধারাবাহিক বিশ্ব


ভাল কথা, আমি ধারাবাহিক বা বিরামবিহীন স্তর সম্পর্কে ভাবি নি। এটির জন্য সম্পূর্ণ ভিন্ন স্তরের লোডিং সিস্টেমের প্রয়োজন হবে।
টম 'ব্লু' পিডক

2

শারীরিক প্ল্যাটফর্মের সীমাবদ্ধতা এবং কন-কন সিদ্ধান্ত সম্পর্কে শন এবং ব্লুয়ের দুর্দান্ত উত্তরের সাথে, আমি একটি মন্তব্যকে একটি ভিন্ন পদ্ধতির মধ্যে প্রসারিত করতে যাচ্ছি:

আপনার সম্ভবত স্তরের স্তরটি সম্পূর্ণ পুনরায় লোড করা উচিত

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

এখন আপনি যখন স্তরটি সম্পন্ন করেন, বা মেনুতে পালাতে বা খেলাটি থেকে বেরিয়ে আসেন, আপনি মসৃণ অভিজ্ঞতার অনুমতি দেওয়ার জন্য আপনি যে সমস্ত সংস্থান এবং মেমরিটি ধারণ করেছেন তা মুক্ত করার জন্য আপনি আনলোডলভেল () কল করুন।

এখন, আপনি যখন "পুনঃসূচনা স্তর" বৈশিষ্ট্যটি যুক্ত করতে চান তখন কী হবে? আচ্ছা ...

unloadLevel(currentLevel);
loadLevel(currentLevel);
startPlay();

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

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

আহ, তবে এখন আপনার স্তরগুলি বৃদ্ধি পাচ্ছে এবং আপনার টেক্সচার আরও বিশদ আকার ধারণ করছে এবং প্রতিটি ভয়েস এবং বাদ্যযন্ত্রের জন্য পৃথক চ্যানেল সহ সাউন্ডট্র্যাকটি 512 কেবিপিএসে ছিঁড়ে গেছে (সময়টি এটি একটি ভাল ধারণা বলে মনে হয়েছিল, তবে কেন আপনি তা মনে করতে পারেন না)। ..) এবং "রাষ্ট্র-উত্স নির্ভর নির্ভর ভক্সেল রে ট্রেসিং মাল্টিমাইডেনশনাল ফুরিয়ার ট্রান্সফর্ম ম্যাট্রিক্স" সম্পর্কে যা আপনার মনে হয় যে পুরোপুরি তৈরি এবং বাস্তব জিনিস নয়, এবং স্তর লোডিং আসলে কিছুটা সময় নেয় এবং এটি আপনাকে বিরক্ত করতে শুরু করে। এমনকি আপনি প্রকৃত লোকদের সাথেও পরীক্ষা করেছেন এবং অপেক্ষার সময়গুলির জন্য এটি একই ধরণের গেমগুলির চেয়ে খারাপ হিসাবে প্রকৃতপক্ষে একটি বিপর্যয় দেখায় (আপনি এমএমওআরপিজি রাজধানী শহরটির প্রত্যাশা করছেন না যে 100 জন খেলোয়াড় সম্পূর্ণ <2 সেকেন্ডে লোড করবে, আপনি কি?), এবং এটি একটি সমস্যা।

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

প্রথমে আসল সমস্যাটি ঠিক করুন!

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

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

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

আপনার গেমটি সহজ হলেও, আপনি যা করেন তা কোনও ব্যাপার নয়, আপনি স্তরটি প্লেয়ারের ভিত্তিতে তৈরি অস্পষ্ট বাগগুলিতে যেতে চলেছেন যখন কোনও স্তর পুনরায় আরম্ভ করা হয় যা আপনার সাথে প্রথমবারের স্তরটি লোড হয় না। সুতরাং আপনি যেমন পাঠ্য সঙ্গে গেম আপডেট লিখতে পেতে:

"একটি টাইলের উপরে বোমাতে একটি হেলমেট ফেলে রাখা যার কাছে একটি ক্ষেপণাস্ত্রটি প্রায় 200 পিক্সেলের জলের মধ্যে বিস্ফোরিত হয়েছিল যার ফলে আপনার গেমের ডেটাটি আর দূষিত হবে না বা গেমটি ক্রাশ হবে না।"

আসল কারণ সর্বাধিক গেমগুলি বিরক্ত করবেন না

আপনি কি কখনও খেয়াল করেছেন যে বেশিরভাগ লোকেরা কেবল বেস স্তরে নামার পরিবর্তে কেবল তাদের বিদ্যমান দেয়ালগুলিতে আঁকেন বা ড্রাইভওয়াল করেন, বা কার্পেটগুলি উপরে টানার পরিবর্তে শক্ত কাঠের মেঝেতে রেখে দেন?

সাধারণ সত্যটি হ'ল ন্যূনতম পুরষ্কারের জন্য এটি আরও সমস্ত কাজ। আপনার বিদ্যমান দেয়ালগুলির উপরে রঙ করা বেশিরভাগ সময় সূক্ষ্মভাবে কাজ করে এবং শক্ত কাঠের মেঝেগুলি ছিটিয়ে দেওয়ার মান প্রায়শই ন্যূনতম বা অস্তিত্বহীন।

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

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


0

কারণ স্থিতিশীল গেমের ডেটা (যেমন টেক্সচার, ভূতত্ত্ব সম্পর্কিত তথ্য, অকার্যকর জনতা) স্মৃতিতে রাখা এবং কেবল গতিশীল ডেটা (যেমন প্লেয়ারের অবস্থান, প্লেয়ারের পরিসংখ্যান, অনুসন্ধানের স্থিতি, তালিকা) পুনরায় লোড করা সম্পর্কিত বিপরীত আচরণটি বিকাশ করা শক্ত er ।

যেহেতু এটির জন্য বেশি অর্থ এবং সময় ব্যয় হয়, গেম ডেভেলপাররা সাধারণত এটি করে না।


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

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

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

সুতরাং, আপনার প্রতিক্রিয়াটি আমার প্রথম লাইনের উত্তরের জন্য যা "বিবরণীর প্রয়োজন নেই" সম্পর্কে সঠিক? যদি আমি সেই লাইনটি সরিয়ে ফেলি, আপনি কি -1 পয়েন্ট পিছনে নেবেন?
এক্সট্রো

মজাদারভাবে যথেষ্ট - হ্যাঁ এটি দেওয়া সম্ভব যেখানে বিশদটি কখনই হতাশ করবেন না এবং আপনি সাধারণত দেখতে পাবেন যে আপনার উত্তরগুলি আরও বেশি প্রশংসা অর্জন করবে।
টম 'ব্লু' পিদ্ডক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.