ক্লায়েন্টের পক্ষের পূর্বাভাস সহ রিয়েলটাইম এলোমেলো আন্দোলন কীভাবে পরিচালনা করবেন


10

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

আমি ভাবছি কীভাবে আমি প্রাকৃতিকভাবে এলোমেলোভাবে দেখা চলাচল রাখতে পারি তবে কিছু ধ্রুবক ব্যবহার করব যা ক্লায়েন্ট এবং সার্ভারকে একই উপসংহারে পৌঁছে দেবে।


4
সিউডো এলোমেলো সংখ্যা ক্রম থেকে একই র্যান্ডম সিকোয়েন্স তৈরি করা সহজ। শক্ত জিনিসটি এই ক্রমটির ব্যবহারটি সিঙ্ক্রোনাইজ করছে izing আপনি আপনার গেমকে লজিক ডিটারমিনিস্টিক তৈরি করতে হবে, এই অর্থে নয় যে আপনি কোনও এলোমেলো ক্রম ব্যবহার করছেন না, তবে এলোমেলো ক্রমটি একটি নির্মাতামূলক উপায়ে ব্যবহার করতে হবে। এটি অর্জনের সহজতম উপায়টি সাধারণত গেম লজিক লুপে কোনও সমঝোতা এড়ানো সম্ভব হয়, তবে যতক্ষণ না থ্রেডগুলি PRNG এর সময় নির্ধারণ এবং ক্রমবর্ধনের উপর নির্ভর করে না যখন এলোমেলো মানের জন্য PRNG জিজ্ঞাসা করে। এখানে ড্রাগন হও
মিথ্যা রায়ান

উত্তর:


14

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

আপনি ক্লায়েন্টকে আসল বীজ না পাঠানোর সিদ্ধান্ত নেওয়ার আগে আপনার কী জানা উচিত:

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

3

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

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