কিভাবে একটি বীজ থেকে এলোমেলো স্তর উত্পাদন করতে? [বন্ধ]


46

গেমের স্তর তৈরি করতে আমি কীভাবে এলোমেলো বীজ ব্যবহার করব? একই বীজ সর্বদা সঠিক একই স্তর উত্পন্ন করা উচিত।

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

তাহলে আমি এই ধরণের স্তর জেনারেটর তৈরি করতে কোথায় শুরু করব? জড়িত হবে কি? এটি কোন ধারণাগুলি ব্যবহার করে?

যে কোনও ভাল লিঙ্কের জন্য বোনাস পয়েন্ট ( কীট বা এটির মতো কীভাবে হয়েছিল সম্পর্কিত কোনও কিছুর জন্য বোনাস বোনাস পয়েন্ট)।

ধন্যবাদ।


এলোমেলো স্তরের জেনারেশন প্রসেসরিয়াল কন্টেন্ট জেনারেশন (পিসিজি) নামেও পরিচিত। এবং এখানে একটি উইকি ঠিক এটির সাথে কাজ করে। pcg.wikidot.com আপনার কিছু ধারণা দেওয়া উচিত! হে)
Kaj

1
ক্রিস ক্রফোর্ডের একটি নিবন্ধ রয়েছে যা আপনি আকর্ষণীয় মনে করতে পারেন। এটি 90 এর দশকের গোড়ার দিকে লেখা হয়েছিল তবে এখনও প্রাসঙ্গিক। কীভাবে একটি বিশ্ব তৈরি করবেন
অ্যান্টনি

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

1
হ্যাঁ, তবে আমি মনে করি কৌশলটি স্তরটি উত্পন্ন করার জন্য প্রথমে প্রথমে একটি বীজ ব্যবহার করছে। আমি এর আগে এলোমেলো স্তরের জেনারেটর তৈরি করেছি, তবে তারা একটি বীজ ব্যবহার করেনি। প্রায়শই আমি এলোমেলো পয়েন্টগুলি বেছে নেব, তারপরে প্রতিটি পয়েন্টের জন্য সেখানে রাখার জন্য একটি এলোমেলো সম্পদ চয়ন করুন। এইভাবে এটি করা এমন কোনও সত্যিকারের বীজ নেই যা সর্বদা একই স্তরের উত্পন্ন করবে, কারণ সেখানে প্রচুর পরিমাণে জিনিস এলোমেলো সংখ্যার নিজস্ব র্যান্ডম সংখ্যা রয়েছে।
অ্যাডাম হার্টে

10
আপনি কি নিশ্চিত যে "বীজ" এর অর্থ কী জানেন? এই, "প্রাথমিক ভেক্টর" প্রক্রিয়ার মাধ্যমে, যেমন পাস হয় srand(int)। পরবর্তী কলগুলি rand()সেই বীজের উপর ভিত্তি করে ক্রমানুসারে মানগুলি সর্বদা একই ক্রমে গণনা করা হবে। আপনি আপনার প্রোগ্রামে একবার বীজ সেট করুন। এর পরে, যদি অ্যালগোরিদম কেবলমাত্র ফলাফলের উপর নির্ভর করে তবে randআপনি প্রতিবার একই ফলাফল পাবেন।
হাননিকট

উত্তর:


7

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

যতক্ষণ আপনি প্রতিবার আপনার বিশ্ব উত্পাদন করার জন্য একই একই পদ্ধতি অনুসরণ করেন, প্রতিটি মান একটি অনন্য প্রজননযোগ্য বিশ্বের প্রতিনিধিত্ব করবে।


4

এখানে একটি পিআরএনজি (সিউডো র্যান্ডম নম্বর জেনারেটর) অ্যাকশনস্ক্রিপ্টে প্রয়োগ করা হয়েছে (এএস 2 বা এএস 3 এ উপলব্ধ)। এটি হালকা ও দ্রুত এবং গেমসের জন্য আদর্শ: http://lab.polygonal.de/2007/04/21/a-good-pseudo-random-number-generator-prng/

উপরের বাস্তবায়নটি পার্ক-মিলার-কার্টা পিআরএনজি ভিত্তিক । এই সাইটটি আপনাকে এই সমস্ত কিছুর পিছনে গণিত সম্পর্কে আরও কিছু অন্তর্দৃষ্টি দেবে।

কৃমির মতো স্তর তৈরি করতে আমি সম্ভবত পার্লিন-নয়েজ ফাংশনটি ব্যবহার করব । যদি আপনি 1 পিএক্স এর উচ্চতা এবং আপনার গেম-ওয়ার্ল্ডের প্রস্থের সাথে পার্লিন শব্দের চিত্র উত্পন্ন করেন তবে আপনি মূলত উচ্চতার মানচিত্র পাবেন, ব্যবহারের জন্য প্রস্তুত। পার্লিন শোনার ক্রিয়াগুলি সর্বদা একই বীজের সাথে একই মানচিত্র তৈরি করে।

তারপরে আপনি মানচিত্রে এলোমেলো অবজেক্টগুলি কোথায় রাখবেন বা মাটিতে কোনও গর্ত কোথায় তৈরি করবেন তা নির্ধারণ করতে উপরে উল্লিখিত PRNG ব্যবহার করতে পারেন। গর্তগুলির জন্য আপনি আবার পার্লিন শব্দের সুবিধাও নিতে পারেন। আপনার মানচিত্রের আকার (x, y) দিয়ে কেবল একটি পার্লিন-শব্দের চিত্র তৈরি করুন এবং তারপরে আপনার মানচিত্রে একটি গর্ত তৈরি করুন যেখানে পিক্সেল-মান একটি প্রদত্ত প্রান্তিকের নীচে রয়েছে (উদাঃ 0.2)।


আমি পার্লিন শব্দের ব্যবহার করব তবে কিছুটা আলাদাভাবে, 3D উচ্চতার মানচিত্র তৈরি করতে এটি ব্যবহার করুন, মানচিত্রটি একটি opeালুতে স্থাপন করুন এবং আপনার প্রান্তিকের চেয়ে কম পিক্সেল সরিয়ে ফেলুন। (যদি পিক্সেল.ইহাইট - (পিক্সেল.ডেসটেন্সটোবটম * স্লোপ ফ্যাক্টর) <ট্র্রেসোল্ড) পিক্সেল = স্বচ্ছ)
নীলস

2

তাত্ত্বিকভাবে যদি আপনি সিউডো-এলোমেলো নম্বর জেনারেটর ব্যবহার করতে পারেন (যেমন পার্লিন-নয়েজ বা মার্শেন টুইস্টার) এর মাধ্যমে মানচিত্রগুলি ভাগ করে নিতে

বীজ সংখ্যাগুলি তখন আপনি কাস্টম মানচিত্র তৈরি করতে এবং সেগুলি বীজে হ্রাস করতে পারবেন, তৈরি করতে সক্ষম না হওয়ার বিষয়টি সমাধান করুন

PRNG ব্যবহার করার সময় কাস্টম মানচিত্র এটি তবে কয়েকটি অনুমানের ভিত্তিতে নির্মিত। যথা: সিউডো-এলোমেলো সংখ্যা জেনারেটর

একটি বিপরীতমুখী প্রক্রিয়া এবং যে কোনও তথ্য পিআরএনজিতে পিছনে দেওয়া কোনও বৈধ বীজ উত্পাদন করবে, একেবারে একটি বীজ ছাড়ুক!

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