আমি মাইনক্রাফ্টের অসাধারণ বিশাল পৃথিবী নেভিগেট করতে অত্যন্ত ধীর পেয়েছি, এমনকি একটি কোয়াড কোর এবং মাংসযুক্ত গ্রাফিক্স কার্ড সহ।
আমি ধরে নিচ্ছি মাইনক্রাফ্টের স্বচ্ছলতা এসেছে:
- জাভা, যেমন স্থানীয় পার্টিশন এবং মেমরি পরিচালনা স্থানীয় সি ++ তে দ্রুত হয়।
- দুর্বল বিশ্ব বিভাজন।
আমি উভয় অনুমান ভুল হতে পারে। যাইহোক, এটি আমাকে বড় ভক্সেল ওয়ার্ল্ডগুলি পরিচালনা করার সর্বোত্তম উপায় সম্পর্কে ভাবতে বাধ্য করেছে। এটি একটি সত্যিকারের 3-ডি বিশ্ব, যেখানে একটি ব্লক পৃথিবীর যে কোন প্রান্তে মধ্যে উপস্থিত পারে, এটা মূলত একটি বড় 3D অ্যারে [x][y][z]
, যেখানে বিশ্বের প্রতিটি ব্লক একটি টাইপ আছে (অর্থাত BlockType.Empty = 0
, BlockType.Dirt = 1
ইত্যাদি)
আমি ধরে নিয়েছি যে এই ধরণের বিশ্বকে ভাল পারফর্ম করার জন্য আপনার প্রয়োজন হবে:
- সমস্ত কিউবগুলি বিভক্ত করার জন্য কিছু জাতের ( অক্ট / কেডি / বিএসপি ) গাছ ব্যবহার করুন ; দেখে মনে হচ্ছে একটি অক্ট / কেডি ভাল বিকল্প হবে, আপনি কেবল প্রতি কিউব স্তরে পার্টিশন করতে পারবেন না প্রতি ত্রিভুজ স্তর হিসাবে।
- কোন ব্লকটি বর্তমানে দেখা যায় তা নিয়ে কাজ করার জন্য কিছু অ্যালগরিদম ব্যবহার করুন কারণ ব্যবহারকারীর নিকটবর্তী ব্লকগুলি ব্লকগুলি পিছনে পিছনে ফেলে দিতে পারে, যাতে এগুলি রেন্ডার করা অর্থহীন হয়ে পড়ে।
- ব্লক অবজেক্টটি নিজেরাই হালকা করে রাখুন, তাই গাছগুলি থেকে এগুলি যুক্ত এবং সরিয়ে ফেলা দ্রুত is
আমি অনুমান করি এর সঠিক কোনও উত্তর নেই তবে আমি এই বিষয়ে মানুষের মতামত দেখতে আগ্রহী হব। একটি বৃহত ভক্সেল ভিত্তিক বিশ্বে আপনি কীভাবে পারফরম্যান্সকে উন্নত করবেন?