ফিলিপের উত্তরের সাথে আমি কিছুটা দ্বিমত পোষণ করছি ; বা কমপক্ষে কীভাবে তিনি এটি উপস্থাপন করেছিলেন with এটি এমন ধারণা দেয় যে প্লেয়ারের চারপাশে বিশ্বকে সরিয়ে নেওয়া আরও ভাল ধারণা হতে পারে; যখন এটি ঠিক বিপরীত সুতরাং এখানে আমার নিজস্ব উত্তর ...
উভয় বিকল্পই কাজ করতে পারে তবে বিশ্বজুড়ে খেলোয়াড়ের চেয়ে খেলোয়াড়কে ঘিরে বিশ্বজুড়ে "পদার্থবিজ্ঞান উল্টে দেওয়া" সাধারণত একটি খারাপ ধারণা।
কর্মক্ষমতা ক্ষতি / অপচয়:
পৃথিবীতে সাধারণত প্রচুর অবজেক্ট থাকবে; অনেক না, স্থির বা ঘুমন্ত। খেলোয়াড়ের কাছে একটি, বা তুলনামূলকভাবে কয়েকটি, অবজেক্ট থাকবে। পুরো বিশ্বকে প্লেয়ারের চারপাশে স্থানান্তরিত করা মানে প্লেয়ার বাদে দৃশ্যে সমস্ত কিছু সরিয়ে নেওয়া। স্ট্যাটিক অবজেক্টস, স্লিপিং ডায়নামিক অবজেক্টস, অ্যাক্টিভ ডায়নামিক অবজেক্টস, লাইট-সোর্স, সাউন্ড-সোর্স ইত্যাদি; সমস্ত সরানো আছে।
এটি (স্পষ্টতই) কেবল যা চালিত হচ্ছে তা চালানোর চেয়ে যথেষ্ট ব্যয়বহুল (প্লেয়ার এবং সম্ভবত আরও কয়েকটি স্টাফ)।
রক্ষণাবেক্ষণ এবং এক্সটেনসিবিলিটি:
প্লেয়ারের চারপাশে বিশ্বকে সরানো বিশ্বকে (এবং এর মধ্যে থাকা সমস্ত কিছু) এমন বিষয়বস্তু করে তোলে যেখানে জিনিসগুলি সর্বাধিক সক্রিয়ভাবে ঘটে চলেছে। সিস্টেমে যে কোনও ত্রুটি বা পরিবর্তন এর অর্থ হ'ল, সম্ভাব্যভাবে সমস্ত কিছু পরিবর্তিত হয়। জিনিসগুলি করার এটি কোনও ভাল উপায় নয়; আপনি বাগ / পরিবর্তনগুলি যথাসম্ভব বিচ্ছিন্ন হতে চান, যাতে আপনি যে কোনও জায়গায় পরিবর্তন করেননি এমন অপ্রত্যাশিত আচরণ না পান।
এই পদ্ধতির সাথে আরও অনেক সমস্যা রয়েছে। উদাহরণস্বরূপ, এটি ইঞ্জিনগুলিতে কীভাবে কাজ করার কথা রয়েছে তা নিয়ে অনেক অনুমান ভেঙে যায়। আপনি RigidBody
প্লেয়ার ব্যতীত অন্য কোনও কিছুর জন্য গতিশীল ব্যবহার করতে সক্ষম হবেন না , উদাহরণস্বরূপ; RigidBody
কেনেমেটিকের সাথে সেট না থাকা কোনও সংযুক্ত বস্তুর অবস্থান / ঘূর্ণন / স্কেল সেট করার সময় অপ্রত্যাশিতভাবে আচরণ করবে (যা আপনি প্লেয়ার বাদে দৃশ্যের প্রতিটি বস্তুর জন্য প্রতিটি ফ্রেম করে যাবেন 😨)
তাহলে উত্তরটি কেবল তখনই প্লেয়ারকে সরানো!
ভাল ... হ্যাঁ এবং না । ফিলিপের উত্তরে যেমন উল্লেখ করা হয়েছে, অসীম-রানার ধরণের খেলায় (বা কোনও বৃহত বিরামবিহীন ব্যবহারযোগ্য অঞ্চল সহ যে কোনও খেলা), উত্স থেকে অনেক দূরে গেলে অবশেষে লক্ষণীয় এফপিপিই ( ভাসমান-পয়েন্ট যথার্থ ত্রুটি ) প্রবর্তিত হবে , এবং আরও অবশেষে, সংখ্যার প্রকারকে উপচে পড়ুন, হয় আপনার গেমটি ক্র্যাশ করে দেয় বা মূলত গেম-ওয়ার্ল্ড ধূমপানকে ক্র্যাক করে তোলে ... স্টেরয়েডগুলিতে! 😵 (কারণ এই মুহুর্তে, এফপিপিইস গেমটি ইতিমধ্যে "স্বাভাবিক" ক্রাকে পরিণত করবে)
প্রকৃত সমাধান:
দুটোই কর না এবং কর! আপনার উচিত বিশ্ব স্থির রাখা, এবং প্লেয়ারটিকে তার চারপাশে সরিয়ে নেওয়া। খেলোয়াড় যখন দৃশ্যের মূল (অবস্থান ) থেকে খুব দূরে যেতে শুরু করেন তবে খেলোয়াড় এবং বিশ্ব উভয়ই "রি-রুট" হন । [0, 0, 0]
আপনি যদি জিনিসগুলির আপেক্ষিক অবস্থান (চারপাশের বিশ্বের খেলোয়াড়) রাখেন এবং এই প্রক্রিয়াটি একক ফ্রেম-আপডেটে করেন তবে (প্রকৃত) প্লেয়ারটি এমনকি খেয়াল করবে না!
এটি করতে আপনার কাছে দুটি প্রাথমিক বিকল্প রয়েছে:
- প্লেয়ারটিকে দৃশ্যের মূলে নিয়ে যান এবং প্লেয়ারের তুলনায় বিশ্বব্যাপী তার নতুন অবস্থানে নিয়ে যান।
- গ্রিডের মতো বিশ্বকে ভাবুন; প্লেয়ারটি গ্রিডের যে অংশটি মূলের সাথে রয়েছে সে অংশটি সরান এবং প্লেয়ারটিকে গ্রিডের সেই অংশের তুলনায় নতুন অবস্থানে নিয়ে যান।
কার্যত এই প্রক্রিয়াটির একটি উদাহরণ এখানে
তবে, কত দূরে?
আপনি যদি ইউনিটির উত্স-কোডটি দেখেন তবে তারা 1e-5
( 0.00001
) দুটি ভাসমান-পয়েন্টের মানগুলিকে "সমান" বিবেচনা করার ভিত্তি হিসাবে ব্যবহার করে Vector2
এবং Vector3
(বস্তুর অবস্থানের জন্য দায়ী ডেটা-প্রকার, [এলিউর-] আবর্তন এবং স্কেল)। যেহেতু ভাসমান-পয়েন্ট যথার্থতা ক্ষতি শূন্য থেকে উভয় পথ দূরে ঘটে, তাই এটি ধরে নেওয়া নিরাপদ যে দৃশ্যের মূল / উত্স থেকে দূরে 1e+5
( 100000
) ইউনিটের অধীনে যে কোনও কিছুই কাজ করা নিরাপদ।
কিন্ত! থেকে...
- এই রি-রুটিং প্রক্রিয়াগুলি স্বয়ংক্রিয়ভাবে পরিচালনা করার জন্য একটি সিস্টেম তৈরি করা আরও উপযুক্ত।
- আপনার গেমটি যাই হউক না কেন, বিশ্বের ১০০,০০০ ইউনিট (মিটার [?]) প্রশস্ত হওয়ার জন্য একটি সুসংগত "বিভাগ" দরকার নেই।
... তবে সম্ভবত এটি 100000 ইউনিট চিহ্নের চেয়ে অনেক বেশি তাড়াতাড়ি / আরও প্রায়শই পুনঃনির্মাণ করা ভাল ধারণা। উদাহরণস্বরূপ, আমি যে ভিডিও ভিডিও সরবরাহ করেছি তা প্রতি 1000 ইউনিট বা এরকম করে।