যদিও আমি এই সংবেদনের সাথে একমত: "এটি যদি কোনও প্রমাণিত সমস্যা না হয় তবে এটি নিয়ে চিন্তা করবেন না", আমি মনে করি এটি প্রথম দিকে চিন্তা করা উপযুক্ত: আমি একটি সমাধানকে বিপরীতমুখী করে তোলা আরও বেদনাদায়ক। এবং হ্যাঁ, কেবল 'নিকটবর্তী' টাইলগুলি আপডেট করা তাদের যাওয়ার উপায়। পারফরম্যান্সের কারণে আপনার গেমের জগতের আইটেমগুলির দক্ষতার সাথে স্টোরেজ এবং ঠিকানার দক্ষতা অত্যন্ত গুরুত্বপূর্ণ important
আপনি এখানে যা ভাবছেন তা হ'ল একটি বিচ্ছিন্ন ডাটা-সেট: এমন কিছু যেখানে সম্ভাব্য সূচীগুলি বড় (বা সীমাহীন), তবে কেবলমাত্র একটি সামান্য অনুপাতই ব্যবহৃত হয়। মূল বিষয়টি হ'ল কোন অনুপাতটি সঠিকভাবে ব্যবহার করা হবে তা আপনি জানেন না।
একটি বিচ্ছুরিত ডেটা-সেট সমস্যার স্ট্যান্ডার্ড সমাধান হ'ল সূচি / ঠিকানাটিকে প্রকৃত ডেটা স্টোরেজ থেকে আলাদা করা। সুতরাং যদি টাইলের জিনিসটি ব্যয়বহুল হয় তবে এটি একটি কমপ্যাক্ট ফর্ম (যেমন একটি ফ্ল্যাট অ্যারে) এ সঞ্চয় করুন। তবে এটি কোনও সস্তা সামগ্রীর মাধ্যমে সূচীকরণের অনুমতি দিন। এর সর্বাধিক আকারে এটি একটি 2 ডি (বা 3 ডি) ম্যাট্রিক্স হতে পারে যা আপনি সহজেই সমন্বয় করে সূচক করতে পারেন, তবে ম্যাট্রিক্সের প্রতিটি আইটেম কেবল একটি সূচক। তারপরে আপনি সেই সূচকটি আলাদা, কমপ্যাক্ট অ্যারেতে প্রকৃত টাইল সামগ্রী অনুসন্ধান করতে ব্যবহার করুন। যদি টাইল সামগ্রীগুলি এখনও বিদ্যমান না থাকে তবে অ্যারের শেষে এগুলি যুক্ত করুন এবং সূচকটি 3D ম্যাট্রিক্সে সংরক্ষণ করুন।
সমাধানটি আরও জটিল হয়ে ওঠে যদি আপনি বিষয়বস্তু মোছার সমর্থন করতে চান (যেহেতু এটি সামগ্রীর অ্যারে খণ্ডিত করে) এবং যদি আপনার টাইল সামগ্রীগুলি সস্তা হয়, তবে সূচকের অতিরিক্ত ওজন (32-বিট বা 64-বিট সূচক) প্রতি একক সম্ভাব্য টাইল সংরক্ষণ না করে সম্ভবত সঞ্চয়গুলি মুগ্ধ করবে। এটি একটি অতিরিক্ত অনুসন্ধান, যা আপনার ক্যাশের কার্যকারিতা ক্ষতি করে।
ইন্ডিরিয়ারেশনের অতিরিক্ত স্তরগুলি চালু করে আপনি আরও বেশি স্টোরেজ দক্ষতা অর্জন করতে পারেন। ধরা যাক আপনি আপনার টাইলসকে অংশগুলিতে সাজিয়েছেন এবং খণ্ডগুলিতে 64x64x64 এর গ্রানুলারিটি রয়েছে। 125, 1, 132 এ একটি টাইল দেওয়া, আপনি জানেন যে এটি খণ্ডে রয়েছে (1,0,2)। সুতরাং আপনার কাছে একটি বিশ্ব রয়েছে যা একটি কমপ্যাক্ট খণ্ড অ্যারে এবং মাপ সূচকগুলির একটি ম্যাট্রিক্স রয়েছে (-1 যদি শঙ্কটি বিদ্যমান না থাকে)। প্রতিটি অংশের বিষয়বস্তু (উপস্থিত থাকলে) টাইল সূচকগুলির একটি 64x64x64 ম্যাট্রিক্স (-1 যদি টাইলটি উপস্থিত না থাকে), এবং ব্যবহৃত টাইলগুলির একটি কমপ্যাক্ট অ্যারে। এইভাবে, আপনি খণ্ডগুলির জন্য প্রচুর পরিমাণে টাইল সূচকগুলি পোড়াবেন না যা কখনও ব্যবহৃত হয় না। এই ধরণের পদ্ধতির অনুসরণ করে এবং খাঁটি গ্রানুলারিটির জন্য বুদ্ধিমান সংখ্যা বাছাই করে আপনি আপনার মহাবিশ্বকে ব্যাপক আকারে বাড়িয়ে তুলতে পারেন এবং আপনার স্মৃতি ব্যবহার নিয়ন্ত্রণে রাখতে পারেন। আসলে, যদি আপনি নিজের অংশগুলি 32x32x32 করেন,
আপনি ছদ্মবেশী কৌশলগুলিও করতে পারেন, যেমন বিশেষ কিছু বোঝাতে আপনার অংশ বা টাইল সূচকগুলির হাই অর্ডার বিট ব্যবহার করা। সুতরাং যদি টাইল ম্যাট্রিক্সে একটি এন্ট্রি শীর্ষ বিট সেট করে থাকে, তবে নীচের 31 টি বিট একটি টাইল সূচক বোঝায় না, পরিবর্তে এর অর্থ একটি 'ওয়ার্প সূচক' বা অনুরূপ কিছু, এবং আপনি এটি আলাদাভাবে বজায় রাখা তালিকায় দেখতে পারেন এটি যে স্থানাঙ্কগুলি বাড়ে তার সন্ধান করতে।