আমি কীভাবে এলোমেলোভাবে 2D টাইল-ভিত্তিক সাইড-স্ক্রোলার অঞ্চল তৈরি করতে পারি?


11

নীচের টাইলসেটটি ব্যবহার করে আমি এলোমেলোভাবে 2D পার্শ্বক্রোলার গেমের জন্য একটি মানচিত্র তৈরি করতে চাই: এখানে চিত্র বর্ণনা লিখুন

আমি বিটমাস্কিং প্রক্রিয়াতে কয়েকটি দুর্দান্ত নিবন্ধ পেয়েছি, উদাহরণস্বরূপ: http://www.angryfishstudios.com/2011/04/adouts-in-bitmasking/ http://www.saltgames.com/2010/a-bitwise -method-জন্য-প্রয়োগের-tilemaps /

ক্লজ বা স্যুইচ স্টেটমেন্টটি বিশাল করার পরিবর্তে বিটমাস্ক / টাইলমাস্ক ব্যবহার করার ধারণাটি আমার পছন্দ হয়।

তবে, আমি পুরো প্রক্রিয়াটি কল্পনা করতে সমস্যা করছি এবং এই নিবন্ধগুলির কোনওোটাই এলোমেলো কথা বলার বিষয়ে কথা বলছে না।

আমার টাইলগুলি একাধিক বিভিন্ন উপায়ে একসাথে ফিট করে, কেবল উদাহরণগুলির সাথে সংযুক্ত উদাহরণগুলির মধ্যে টাইলগুলির মতো নয়।

উদাহরণস্বরূপ এখানে কয়েকটি উদাহরণ দেওয়া হল:

এখানে চিত্র বর্ণনা লিখুন

এখানে চিত্র বর্ণনা লিখুন

এখানে চিত্র বর্ণনা লিখুন

এখানে চিত্র বর্ণনা লিখুন

যেহেতু আমার টাইলগুলি অনেকগুলি বিভিন্ন উপায়ে একসাথে ফিট করে আমি মনে করি না যে একটি 8 বিট মুখোশ কাজ করবে। অতএব, আমি আরও বড় বিটমাস্কটি ব্যবহার করার কথা ভাবছিলাম। গৃহস্থালির কাজ [8] বা গৃহস্থালির কাজ ভালো কিছু 4

কেউ যদি সাধারণ অ্যালগরিদমটি কেমন দেখায় তার কয়েকটি সিউডোকোড / উদাহরণগুলি দেখিয়ে দিতে পারলে আমি এর প্রশংসা করব।

উত্তর:


3

হ্যাঁ, মাস্ক আকারটি ক্রমবর্ধমান বিকল্পের সাথে বাড়বে - আপনার নিজস্ব লিঙ্ক http://www.saltgames.com/2010/a-bitwise-method-for-applying-tilemaps/ দ্বিতীয় অংশটি মূল ধারণাটি ব্যাখ্যা করে।

সংক্ষেপে, আপনাকে টাইলসের মধ্যে প্রতিটি 'সীমান্তের' জন্য এক্স সম্ভাবনাগুলি গণনা করতে হবে; আপনার বিশেষ উদাহরণে দেখে মনে হচ্ছে "টাইল শীর্ষ / নীচে" হয় (1) সাদা (2) আচ্ছাদিত বা (3) অর্ধ-কভার হতে পারে - যা কাকতালীয়ভাবে নিবন্ধে দেওয়া 'ট্রাইনারি' উদাহরণের সাথে মেলে।

কিন্তু মুখোশ শুধুমাত্র সাহায্য করবে আপনি ঐ করার টালি সম্ভাবনার যে টানা যেতে পারে সীমিত, নিজে এটি একটি পদ্ধতি যা দেখায় কিভাবে হয় না জেনারেট কোন যুক্তিসম্মত ভাবে প্রকৃত মানচিত্র।

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


আমি মনে করি এটিই আমি উত্তর খুঁজছি, তবে এটি এখনও কিছুটা মেঘলা। আপনার ব্যাখ্যাটির শেষ অংশটি কীভাবে কাজ করবে তা আপনি পাঠ্য বা সিউডোকোডে কিছুটা আরও বিশদ পেতে পারেন? "আপনি কেবল পূর্বের টাইলের পরে কয়েকটি (কয়েকটি) টাইলস আসতে পারেন এবং এলোমেলোভাবে তাদের মধ্যে একটি বেছে নিতে একটি তালিকা তৈরি করে বাম থেকে ডানে যেতে পারেন to"
erebel55

1
প্রতিটি টাইল টাইপের জন্য, তারপরে কী টাইলসের অনুমতি রয়েছে তার একটি তালিকা রাখুন - খুব কম টাইলস রয়েছে, এটি ম্যানুয়ালি দ্রুত সম্পন্ন করা যায়। 'উচ্চতা' পরিবর্তন হবে, নতুন টাইলের নীচে সমস্ত কিছু # 10 এস দিয়ে পূরণ করুন।
পিটারিস

আহ তাই আপনি বিটমাস্কিং এর পরিবর্তে এই পদ্ধতিটি ব্যবহার করতে বলছেন?
erebel55

1
হ্যাঁ, সমস্ত 2 ডি বিষয়বস্তু অর্থবহ হলে বিটমাস্কিং দরকারী, তবে আপনার মানচিত্রগুলি একক স্তরের বলে মনে হচ্ছে, বিভিন্ন উচ্চতার একটি অনুভূমিক পৃষ্ঠ।
পিটারিস

এটি উপলব্ধি করে যে, "পর্বতমালা" বিভিন্ন উচ্চতা হবে এবং একে অপরের মধ্যে প্রবাহিত হবে। অতএব মূলত আপনি পাশাপাশি চলতে চলতে এটি একটি অবিচ্ছিন্ন পর্বত পরিবর্তনের উচ্চতা হবে। কোসাইন / সাইন ওয়েভের মতো বাছাই করুন যা বিভিন্ন স্থানে এলোমেলো আকারের। মানচিত্রটি তৈরি করার সময় আমার কি বাম থেকে ডানে বা উপরে থেকে নীচে চলে যাওয়া উচিত?
erebel55

6

আপনি কি 1 ডি পার্লিন বা সিমপ্লেক্স শোর ফাংশনটি ব্যবহারের কথা বিবেচনা করেছেন? এর অনেকগুলি সুবিধা রয়েছে যার মধ্যে রয়েছে:

  1. অসীম (ভাসমান-বিন্দু নির্ভুলতার ক্ষেত্রের মধ্যে), অ-পুনরাবৃত্তি অঞ্চল

  2. আপনার উদাহরণ হিসাবে রিয়েল-টাইম (এমনকি শেডারেও, যা দ্রুত ) উত্পাদিত হতে পারে বা টেক্সচারে সংরক্ষণ করা যেতে পারে

  3. পার্লিন এবং সিমপ্লেক্স উভয়ই অবিচ্ছিন্ন থাকায় সীমানা স্বয়ংক্রিয়ভাবে মেলে।

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

1D পার্লিন বাস্তবায়নের মোটামুটি বিশদ ব্যাখ্যার জন্য এই লিঙ্কটি দেখুন

একটি খাম হ'ল মূলত একটি স্কেলারের ক্ষেত্র বা ফাংশন যা আপনার আউটপুট সংরক্ষণ বা প্রদর্শন করার আগে শোর ফাংশনটির সাথে গুণিত হয়।

এখানে চিত্র বর্ণনা লিখুন

(প্রাথমিক চিত্র উপরে বর্ণিত নিবন্ধ থেকে ধার করা হয়েছে।)

এই উদাহরণে, লাল রেখার হিসাবে সংজ্ঞায়িত করা টুকরা দিকের ফাংশন উপস্থাপন করে

x < 0.3 : y = (0.3-x)/0.3)
x < 0.5 : 0
x < 0.7 : (x - 0.5) / 0.2
else    : 1

... যা একটি মসৃণ ফাংশন ব্যবহার করে আরও সংজ্ঞায়িত করা যেতে পারে। এই ক্ষেত্রে এটি মালভূমির আগে 0-তে জিনিস স্কেল করে, তারপরে 1 পরে ব্যাক আপ করে।

হালনাগাদ

আমার একটি প্রকল্পের 3 ডি সিম্প্লেক্স "টেরেইন" এর উদাহরণ এখানে রয়েছে, ডিফিউজ + স্পিকুলার লাইটিং প্রয়োগ করা হয়েছে, সম্পূর্ণভাবে একটি ভার্ট + টেস + ফ্রিজ শেডার পাইপের মধ্যে উত্পন্ন। আপনার পরিস্থিতির জন্য, এই অঞ্চলটির opeাল পেতে আমি এর বাইরে একটি উল্লম্ব টুকরো টুকরো করতাম।

এখানে চিত্র বর্ণনা লিখুন

এবং একটি শীর্ষ-ডাউন orthographic ভিউ:

এখানে চিত্র বর্ণনা লিখুন


এটি কী প্রকৃত টাইল চিত্রগুলি নিজেরাই তৈরি করার কৌশল?
erebel55

1
@ erebel55 হ্যাঁ আপনি যেখানে (আপনার উদাহরণের ভিত্তিতে) বিভিন্ন গাছপালার ছবিকে চিত্রের মধ্যে রাখবেন এবং theালু অঞ্চলও তৈরি করতে পারবেন তা স্থির করতে আপনি একটি 2 ডি ফাংশন ব্যবহার করতে পারেন। আমি দুর্দান্ত ফলাফল সহ এটি 3D এ ব্যবহার করেছি।
ডিভে

এটি একটি আকর্ষণীয় পদ্ধতির মতো দেখে মনে হচ্ছে, আমি আমার ইমেজগুলি ইতিমধ্যে তৈরি করেছি বলে আমি এই পথে যেতে চাই না just
erebel55

@ erebel55 হ্যাঁ, বিদ্যমান জিনিসগুলি যদি এটি আপনার পক্ষে কাজ করে তবে টস করার কোনও কারণ নেই।
ডিভে

আমি এখনও এলোমেলো প্রজন্মকে কাজ করতে পারি নি, তবে আমি আশা করি;) আমি আপনাকে এই পদ্ধতির জন্য একটি ভোট দিয়েছি, কারণ এটি আকর্ষণীয় ছিল এবং ভবিষ্যতে আমি এটি কিছু সময় ব্যবহার করতে পারি। আপনাকে ধন্যবাদ
erebel55
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.