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