আমি গেমের শুরুতে তৈরি পদ্ধতিগতভাবে উত্পন্ন বিশ্বের সাথে একটি গেম তৈরি করছি, গ্রিড দ্বারা প্রতিনিধিত্ব করা বেশ কয়েকটি অঞ্চল নিয়ে গঠিত (বলুন, 8x8, 9x6, মাপগুলি আদর্শভাবে নির্বিচারে হবে)। নির্ভরতা তালিকার মাধ্যমে এই অঞ্চলগুলি একে অপরের সাথে সংযুক্ত হওয়ার কথা।
যখন এই গ্রিডের কমপক্ষে 3 স্পেসগুলি দুটি অঞ্চলগুলির মধ্যে প্রকাশিত হয় তখন একটি সংযোগ বিদ্যমান। সেই 3 স্পেস সংযোগ অঞ্চলের মাঝের কক্ষে অঞ্চলগুলির মধ্যে দ্বার way
আমি তাদের সংযোগ করার একটি উপায় বের করার চেষ্টা করেছি, তবে একই সময়ে আপনাকে আরও বেশি ক্ষেত্র বিবেচনা করা এটি ক্রমশ জটিল হয়ে উঠছে।
আমি কিছু কাগজ প্রোটোটাইপিং চেষ্টা করেছি এবং এটি খুব সহজ প্রক্রিয়াটি যখন দৃষ্টিভঙ্গি করে এটি করার সময়, আমি গাণিতিক এক্সপ্রেশনগুলির একটি ভাল সেট খুঁজে পাইনি যা আমাকে কোড অনুসারে একই দক্ষতার সাথে কক্ষগুলি স্থাপন করতে দেয়।
এই মুহুর্তে আমি লড়াই করছি এমন একটি "সাধারণ" উদাহরণ:
- অঞ্চল 'ক' কে 'বি' এবং 'সি' এর সাথে সংযুক্ত করা দরকার
- অঞ্চল 'খ' 'এ' এবং 'ডি' এর সাথে সংযুক্ত হওয়া দরকার
- অঞ্চল 'সি' 'এ' এবং 'ডি' এর সাথে সংযুক্ত হওয়া দরকার
- অঞ্চল 'ডি' 'বি' এবং 'সি' এর সাথে সংযুক্ত হওয়া দরকার
সরলতার জন্য বিবেচনা করুন, আমরা তালিকায় তাদের উপস্থিতির ক্রম অনুসারে কক্ষগুলি রাখছি (আমি অন্যদের চেষ্টা করেছি)। তাই আমি এটি আপনার প্রমিত প্রক্রিয়াজাত ডানজিওন জেনারেশন অ্যালগরিদম হিসাবে পৌঁছে যাচ্ছি।
আমরা বোর্ডে যে কোনও জায়গায় 'এ' রাখি কারণ এটি প্রথম অঞ্চল। এর পরে, আমরা এলোমেলোভাবে একটি প্রাচীর বাছাই করি এবং যেহেতু কিছুই সেই দেয়ালের সাথে সংযুক্ত না থাকে, আমরা সেখানে 'বি' রাখতে পারি:
এখন আমাদের 'সি' স্থাপন করা দরকার, তবে 'এ' বোর্ডে ইতিমধ্যে রয়েছে এবং এর একটি দখল প্রাচীর রয়েছে, তাই আমরা এটিকে অন্য কোনও দেয়ালে রাখার সিদ্ধান্ত নিই। তবে প্রত্যেকটি প্লেসমেন্টটি করবে না, কারণ 'ডি' আসছে এবং এটি 'বি' এবং 'সি' এর সাথেও সংযুক্ত হওয়া দরকার:
আমি একটি সম্ভাব্য সীমাবদ্ধতার চেষ্টা করেছি যে একই রকম নির্ভরতা থাকা 2 টি কক্ষগুলি বিপরীত দেয়ালে থাকতে পারে না, এমনকি এটি সাফল্যের গ্যারান্টি দেয় না:
এবং অন্যান্য ক্ষেত্রে, যেখানে অঞ্চলগুলির বিভিন্ন আকার রয়েছে, বিপরীতে প্রাচীরের থাকা কাজ করতে পারে:
এছাড়াও, ব্যবহৃত প্রাচীর বিবেচনা না করা একটি ত্রুটিযুক্ত অনুমিতি কারণ এটি বৈধ সমাধানগুলি বাতিল করে দেয়:
আমি অন্যান্য প্রসিডেরাল জেনারেশন অ্যালগরিদম বা অনুরূপ যেমন: অনুকূল আয়তক্ষেত্রাকার প্যাকিং এবং গ্রাফ লেআউট আলগোরিদিমগুলির বিষয়ে গবেষণার চেষ্টা করেছি, তবে সাধারণত সেই অ্যালগোরিদমগুলি এই সমস্যার প্রতিটি প্রতিবন্ধকে বিবেচনা করে না এবং একসাথে মিশ্রিত হওয়া শক্ত।
আমি উপযুক্ত প্লেসমেন্ট না পাওয়া পর্যন্ত একটি অঞ্চল এবং ব্যাকট্র্যাক স্থাপন সহ একাধিক পদ্ধতির কথা ভেবেছিলাম, তবে তারা পরীক্ষার এবং ত্রুটির উপর খুব নির্ভরশীল এবং গণনার ক্ষেত্রে ব্যয়বহুল বলে মনে হয়। তবে, আমি উল্লেখ করা শেষ দুটি সমস্যার উপর ব্যাপক গবেষণা দেওয়া, এটিই কি কেবলমাত্র / সেরা সমাধান হতে পারে?
আমি কেবল দেখতে চেয়েছিলাম যে অতীতেও কারওর একইরকম সমস্যা আছে কিনা বা আমাকে এটি নির্ধারণ করতে এবং আমাকে অ্যালগরিদম দিয়ে কোথায় শুরু করা উচিত সে সম্পর্কে কয়েকটি পয়েন্টার দিতে সাহায্য করতে ইচ্ছুক কিনা। অথবা, এটি ব্যর্থ হয়ে, আমি আমার যে সীমাবদ্ধতাগুলি স্থির করেছি তা শিথিল করতে হবে।