অফস্ক্রিন এআই হ্যান্ডেল করার ভাল উপায়?


16

উদাহরণস্বরূপ:

  • ধরা যাক বিশ্বে 10 টি কক্ষ রয়েছে।
  • এবং আসুন আমরা পৃথিবীতে 10 টি সত্তা দ্বারা আবাসস্থ।
  • এবং প্রতিটি সত্তার নিজস্ব "দৈনিক রুটিন" রয়েছে যেখানে এটি ঘরে নির্দিষ্ট ক্রিয়া সম্পাদন করে এবং পাশাপাশি কক্ষগুলির মধ্যে চলাচল করতে পারে।

প্লেয়ারটি একসাথে কেবলমাত্র একটি ঘরে থাকতে পারে তা প্রদত্ত যে অন্যান্য সংস্থাগুলি অন্য কক্ষের অফস্ক্রিনে যে ক্রিয়াকলাপ সম্পাদন করছে তার খোঁজ রাখার একটি ভাল উপায় কী?

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

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

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


1
এই প্রশ্নটি আমাকে এমন একটি ডেভ-ব্লগের স্মরণ করিয়ে দেয় যা আমি প্রজেক্ট জোম্বয়েড নামে একটি গেমের জন্য পড়েছিলাম।
সুমুরাই

উত্তর:


12

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

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

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

যদি আপনার গেমটি এত বড় হয় যে আপনি পুরো জিনিসটি সর্বদা স্মৃতিতে রাখতে পারবেন না, তবে একটি ভাল সমাধান হ'ল রুমের সংরক্ষিত ডেটাতে শেষ আপডেটের সময় সংরক্ষণ করা এবং তার সিমুলেশন অফস্ক্রিন পুনরায় খেলানো (তার সর্বনিম্ন রেজোলিউশনে) কখন এটা ব্যাক আপ লোড করা হয়।

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


1

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

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

যদি কোনও সত্ত্বা এক ঘর থেকে অন্য ঘরে ভ্রমণ করে তবে এর উদাহরণটি অন্য ঘরে সংরক্ষণ করা উচিত এবং সত্তার পরবর্তী আপডেটটিও আপডেট করা উচিত।

এই মুহুর্তে আপনার কেবলমাত্র বর্তমান ঘরটি এবং যে ঘরগুলি নির্ধারিত আপডেট রয়েছে সেগুলি আপডেট করতে হবে, অন্য কক্ষগুলি আপডেট করা কেবলমাত্র alচ্ছিক (তবে আপনার যদি এমন একটি এআই থাকে যা প্লেয়ার যখনই চলবে বা কিছু করবে তখন আপডেট হয়) ।

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