সম্পাদনা: এটি কেবল আমার নিজের শেখার অভিজ্ঞতার জন্য, এটি সম্পাদনের কারণে নয় যে আমি এই প্রশ্নটি জিজ্ঞাসা করি।
এটি একটি মাইনক্রাফ্টের মতো টেরিন ইঞ্জিনের সাথে সম্পর্কিত। আমি খণ্ডগুলিতে ব্লকগুলি সঞ্চয় করি (একটি অংশে 16x256x16 ব্লক)। আমি যখন একটি খণ্ড উত্পন্ন করি, তখন অঞ্চল এবং স্থান নির্ধারণের জন্য আমি একাধিক পদ্ধতিগত কৌশল ব্যবহার করি। উত্পাদনের সময়, আমি সম্পূর্ণ খণ্ডের জন্য এক 1D অ্যারে রাখি (কঠিন বা না) এবং শক্ত ব্লকের পৃথক 1D অ্যারে রাখি।
প্রজন্মের পরে, আমি তাদের শক্তিশালী প্রতিবেশীদের চেক করতে শক্ত ব্লকগুলি দিয়ে পুনরাবৃত্তি করি যাতে আমি কেবল এমন ব্লক ফেস উত্পন্ন করি যার শক্ত প্রতিবেশী না থাকে। আমি কোন মুখগুলি তাদের নিজস্ব তালিকায় উত্পন্ন করতে সঞ্চয় করি (এটি lists টি তালিকাগুলি, সম্ভাব্য প্রতিটি মুখ / সাধারণ হিসাবে একটি)। কোনও খণ্ড রেন্ডার করার সময়, আমি ক্যামেরার বর্তমান খণ্ডের সমস্ত তালিকা এবং কেবলমাত্র সমস্ত তালিকাতে ক্যামেরার মুখোমুখি তালিকাগুলি রেন্ডার করি। আমি একটি বাফারে সমস্ত 6 টি তালিকা সংরক্ষণ করে এটি করি, তারপরে আমি কেবল যে রেঞ্জগুলি আঁকব তা কেবল পরিবর্তন করি।
এই ছোট শেডার ট্রিক দিয়ে 2 ডি অ্যাটলাস ব্যবহার করে অ্যান্ড্রু রাসেল পরামর্শ দিলেন, আমি অনুরূপ মুখগুলি একসাথে সম্পূর্ণ একত্রী করতে চাই। এটি হ'ল, যদি তারা একই তালিকায় থাকে (একই সাধারণ), একে অপরের সাথে সংলগ্ন হয়, একই আলোর স্তর থাকে ইত্যাদি I আমি জানি আমি এখনও আয়তক্ষেত্রগুলি দিয়ে শেষ করব তবে এটি সহজেই আমার উল্লম্ব গণনাটি 50% হ্রাস করতে হবে বা আমার অনুমানগুলি সঠিক হলে আরও ভাল।
আমার অনুমান 6 টি তালিকাগুলির প্রত্যেকটির অক্ষর অনুসারে বাছাই করা তাদের প্রত্যেকের অক্ষর অনুসারে বাছাই করা হবে, তারপরে অন্য দুটি অক্ষ দ্বারা (কোনও ব্লকের শীর্ষের জন্য তালিকাটি তার Y মান, তারপরে এক্স, তারপরে জেড অনুসারে বাছাই করা হবে)।
এই একা দিয়ে, আমি সহজেই মুখের স্ট্রিপগুলি খুব সহজেই মার্জ করতে পারি, তবে আমি যখন সম্ভব তখন কেবল একসাথে স্ট্রিপগুলির চেয়ে আরও বেশি সংহত করতে চাই। আমি এই লোভী জালযুক্ত অ্যালগরিদমটি পড়েছি , তবে এটি বুঝতে আমার অনেক সমস্যা হচ্ছে।
সুতরাং, আমার প্রশ্ন: বর্ণিত হিসাবে মুখগুলি মার্জ করা (গতিশীল অঞ্চল / আলোকপাতের জন্য এটি কোনও খারাপ ধারণা কিনা তা উপেক্ষা করে), সম্ভবত এমন কোনও অ্যালগোরিদম রয়েছে যা কার্যকর করা সহজ? আমি খুব খুশিভাবে এমন একটি উত্তর গ্রহণ করব যা লোভী অ্যালগরিদমের মধ্য দিয়ে আমাকে অনেক সহজ উপায়ে নিয়ে যায় (একটি লিঙ্ক বা ব্যাখ্যা)।
এটি প্রয়োগ করা আরও সহজ বা এমনকি যদি কেবল স্ট্রিপগুলি করা থেকে কিছুটা ভাল হয় তবে কিছুটা পারফরম্যান্স হ্রাস করতে আমি আপত্তি করি না। আমি চিন্তিত যে বেশিরভাগ অ্যালগরিদমগুলি কোয়াডের চেয়ে ত্রিভুজগুলিতে ফোকাস করে এবং 2 ডি এটলাসকে আমি যেমনভাবে ব্যবহার করি, আমি জানি না যে আমি আমার বর্তমান দক্ষতার উপর ভিত্তি করে কিছু ত্রিভুজ প্রয়োগ করতে পারি।
PS: আমি ইতিমধ্যে খণ্ড প্রতি কুল হতাশ এবং বর্ণিত হিসাবে, আমি শক্ত ব্লক মধ্যে মুখ খুলি। আমি এখনও এলোমেশন কুল না এবং কখনও হতে পারে না।
* সম্পাদনা করুন: আমি নিজের নিজস্ব প্রযুক্তিটি বাস্তবায়িত করেছি, যার সম্ভবত একটি নাম রয়েছে, তবে আমি কেবল আমার 6 টি তালিকাগুলি দিয়ে যাচ্ছি যার দ্বারা অক্ষরে অক্ষরে সাজানো থাকে, তার পরে ব্লকের ধরণ এবং তারপরে আলোক স্তর। আমি তাদের মাধ্যমে পুনরাবৃত্তি করছি, আমি যেতে যেতে নতুন আয়তক্ষেত্র তৈরি করে একযোগে সেগুলি বাড়িয়েছি (একটি নির্দিষ্ট অক্ষের দিকে ভারী পক্ষপাত নিয়ে)। এটি অবশ্যই সর্বোত্তম নয়, তবে এটি সত্যিই বেশ দ্রুত এবং এটি আমার মেরুবৃত্তির গণনা গড়ে প্রায় 50% কমিয়ে দেয়। বাইট 55 এর মন্তব্যটি একটি আসল উত্তরের জন্য আমি মনে করি এমন কক্ষটি, তবে উত্তর / অনুগ্রহের জন্য আমি এটি নির্বাচন করতে পারি না।
এখানে আমার দ্রুত এবং সরল পদ্ধতিতে আমি কোনও সমস্যা ছাড়াই পুরো প্রাথমিক অঞ্চলটি তৈরির পরে এই সমস্যাটি পরিচালনা করছি। প্রদত্ত সমস্ত বর্গক্ষেত্র একই চিত্র, হালকা স্তর, স্বাভাবিক ইত্যাদি ইত্যাদি ধরে নিচ্ছি প্রতিটি রঙ আলাদা আলাদা কোয়াড যা আমি রেন্ডার করব। আমার তালিকাগুলি সেভাবে সাজানোর সাথে এটি খুব সহজ / দ্রুত পদ্ধতির।