গেম লোডিংয়ের সময় পূর্ব গেম লোডিংয়ের সময় বনাম


9

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

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

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

কোন পরামর্শ, মতামত, মতামত, সাহায্য করবে।

সম্পাদনা:

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


8
এই মুহুর্তে, এটি প্রাক-অনুকূলকরণ হবে। সমস্যা না হওয়া পর্যন্ত আমি এটিকে ঠিক তেমনি রেখে দিই।
জন ম্যাকডোনাল্ড

3
এবং @ জনম্যাকডোনাল্ডের সাথে কিছুটা বাজে কথা বলার জন্য, আপনি যদি এই পাথগুলি মধ্য-গেমটি গণনা করতে পারেন এবং এটি লক্ষণীয় নয়, তবে লোডের সময় তারা কতটা অবদানকারী উপাদান হতে পারে?
জেমস

উত্তর:


6

বারিককুক সঠিকভাবে ধারণাটি প্রকাশ করেছেন। যদি তারা এখন সঠিকভাবে কাজ করে তবে গণনাগুলি কোথায় তা ছেড়ে দিন।

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

তবে একটি জিনিস: যদি আপনার গণনাগুলি মিড গেমটি চালানোর জন্য প্রয়োগ করা হয় তবে আপনি সর্বদা এটিকে যেভাবেই লোড করার সময় সম্পাদন করতে বাধ্য করতে পারেন।

অসংখ্য সমাধান রয়েছে:

  • স্তর তৈরি / লোড করার সময় পাথগুলি গণনা / লোড করুন
  • পাথ গণনা করতে দ্বিতীয় থ্রেড ব্যবহার করুন
  • আপনার অ্যালগোরিদম অনুকূলিত করুন
  • আপনার যদি থ্রেডিংয়ের অ্যাক্সেস না থাকে তবে একটি বাধা ব্যবস্থা ব্যবহার করুন use

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

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


সম্পাদনা করুন : @ কিপারকে উত্তর দিচ্ছেন

"বাধা অ্যালগরিদম" কেবলমাত্র আমাদের প্রতিবন্ধকতার কারণে কার্যকর ছিল useful মূলত আমরা মাল্টিথ্রেডিংয়ের অভাবকে ঘটিয়েছি।

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

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

কেবলমাত্র ব্যয়বহুল ক্রিয়াকলাপগুলি পৃথক বস্তুতে বিভক্ত হয়েছিল এবং সঠিক স্থানগুলি খুঁজতে আমরা কিছু সময় নিয়েছিলাম যেখানে আমরা গণনাগুলি থামাতে পারি, তবে শেষ পর্যন্ত এটি খুব ভালভাবে কাজ করে।

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

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


ধন্যবাদ, এটি খুব আকর্ষণীয় মনে হচ্ছে। আপনি কি "বিঘ্নযোগ্য সিস্টেম" (কেন এবং কীভাবে) এর ধারণাটি সম্পর্কে বিস্তারিত বলতে পারেন। (গুগল করা এতটা সহায়ক ছিল না ..)। আমি প্রশ্নের সাথে কিছু বিশদ যুক্ত করব।
রক্ষক

@ কিপার আমি আশা করি বাধাপ্রাপ্ত অংশ সম্পর্কে আপনার প্রশ্নের উত্তর দিয়েছি। এটি করার ব্যথা এবং এটি বেশিরভাগ আধুনিক সিস্টেমে প্রাসঙ্গিক নয়।
কোয়েট

যদিও আমি আপাতত এই পদ্ধতিটি ব্যবহার করতে যাচ্ছি না, আপনি আমার চোখ নতুন করে খুলেছেন। আপনার উত্তরটি গ্রহণযোগ্যতার দাবিদার।
রক্ষক

8

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

দীর্ঘ প্রাথমিক লোডিং সময় ক্ষমাযোগ্য, তবে খেলার সময় র্যান্ডম এফপিএসের ওঠানামা সাধারণত হয় না।


2

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

প্রাথমিক প্রক্রিয়াটি হ'ল:

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

আপনাকে অতিরিক্ত কয়েকটি প্রান্তের কেসগুলিও নজর রাখতে হবে (যেমন অনুরোধটি প্রক্রিয়া করার আগে যদি প্রাণীটি মারা যায় তবে কী হবে) what


2
যদি আপনি থ্রেডিং প্রবর্তন করতে না চান তবে আপনি নিজের পথটি ক্রমশ গণনা করতে পারেন (যেমন প্রতি ফ্রেমে কিছু পদক্ষেপ গণনা করুন)।
bummzack
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.