অসীম স্তরের কার্যপ্রণালী জেনারেশন


16

প্রক্রিয়াগতভাবে অসীম 2 ডি স্তর উত্পাদন করার জন্য কিছু ভাল পন্থা কী কী? স্তরটি উভয় মাত্রায় সীমাবদ্ধ হতে পারে তবে অগত্যা নয়।

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

আলোচনার জন্য, আপনি স্তরটিকে শীর্ষে গ্রহাণু ক্ষেত্র হিসাবে পাওয়ার আপগুলি সহ ছড়িয়ে ছিটিয়ে থাকা ইত্যাদি হিসাবে ভাবতে পারেন।


2
এটি সম্পর্কিত বলে মনে হচ্ছে: গেমদেব.স্ট্যাকেক্সচেঞ্জ
প্রশ্নগুলি

thus এবং এইভাবে এটি ডান পাশের "সম্পর্কিত" কলামে রয়েছে। লিঙ্ক করার দরকার নেই।
রিকিট

7
এবং তারপরে এটি "সংযুক্ত" পাশাপাশি "সম্পর্কিত" - ঝরঝরে, হাহ? :)
জ্যাকোমে

উত্তর:


6

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

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


4
এই সমস্যাটি মাঝে মাঝে বিশ্বকে কেন্দ্র করে সমাধান করা যেতে পারে।
জোনাথন ফিশফফ

এছাড়াও কেবল পূর্ণসংখ্যার মোড়কের আশেপাশে নয়, যখন ভাসমান পয়েন্ট সংখ্যা বেশি হলে ছোট ভাসমান বিন্দু পরিবর্তনের ভুল ব্যবহার সম্পর্কে সচেতন হন। এটি চেষ্টা করুন: float pos = 1000000000.0f; float nextPos = pos + 0.001f; float diff = nextPos - pos; আমার মেশিনে, পার্থক্য 0

এগুলি সব ভাল পয়েন্ট। আমি মনে করি প্রতিবার নতুন স্কোয়ার তৈরি হওয়ার সময় স্থানাঙ্কগুলি পুনর্নির্মাণ করা উপযুক্ত হবে যতক্ষণ না এটি যথেষ্ট দক্ষ।
কলিন গিস্লসন

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