আমার পরামর্শ
অনেকগুলি ছোট পিএনজি প্রচুর নেটওয়ার্ক ওভারহেড যুক্ত করবে (এইচটিটিপি অনুরোধের আকারের কারণে, তবে পিএনজি শিরোনাম এবং সম্ভবত আরও গুরুত্বপূর্ণভাবে, দক্ষতার সাথে সংকোচনের অক্ষমতা)। অন্যদিকে, একটি খুব বড় পিএনজির ত্রুটি রয়েছে যা লোড হতে কিছুটা সময় নেয় এবং স্মৃতিতে অবিচ্ছিন্ন অংশে স্থায়ীভাবে মেমোরিতে (10,000 টাইলের জন্য 40 মেগাবাইট) থাকা প্রয়োজন।
আমি মাঝের জমিটি সুপারিশ করছি : বেশ কয়েকটি যুক্তিসঙ্গত আকারের পিএনজি, উদাহরণস্বরূপ 32 × 32 আকারের 1024 টাইল । হতে পারে থিম অনুসারে গ্রুপ করা (উদাহরণস্বরূপ, বন টাইলস সহ একটি পিএনজি, একটি পর্বত টাইলস সহ, অন্য একটি শহরের টাইলস - আমি আপনার গেমটির থিম জানি না, তবে আপনি ধারণাটি পেয়েছেন)।
ক্যাশে দক্ষতা সম্পর্কে নোট
মেমোরি অ্যাক্সেস দক্ষতার কারণে আপনার স্প্রিটশিটগুলি কখনও প্রশস্ত করা উচিত নয় । একটি 128 × 8192 চিত্র থেকে ব্লিটিং টাইলস 8192 × 128 চিত্র থেকে ব্লিটিংয়ের চেয়ে সবসময় দ্রুত হবে।
কল্পনা করুন আপনি একটি 8192 × 128 চিত্রের মধ্যে প্রথম টাইলটি ব্লিট করতে চান। সরলতার জন্য, ধরে নিন 1 পিক্সেল 1 বাইট পিক্সেলের প্রথম দুটি লাইন এইভাবে ছড়িয়ে দেওয়া হয়েছে (সেলগুলি মেমরিতে তাদের বাইট নম্বর ধারণ করে):
┌────┬────┬───┬────┬──────────┬─────┐
│ 0 │ 1 │...│ 31 │ .... │ 8191│ 1st line of pixels: bytes 0 to 8191
├────┼────┼───┼────┼──────────┼─────┤
│8192│8193│...│8223│ .... │16383│ 2nd line of pixels: bytes 8192 to 16383
├────┼────┼───┼────┼──────────┼─────┤
│ .. │ .. │...│ .. │ .... │ ... │
তাই যাতে blit করার জন্য প্রথম লাইন প্রথম শিরোনাম, ব্রাউজার ইঞ্জিন উদ্ধার করবে বাইট 0
থেকে31
। Blit করার দ্বিতীয় লাইন , এটা পুনরুদ্ধার করবে বাইট 8192
থেকে8223
, ইত্যাদি 32nd লাইন যেখানে বাইট পর্যন্ত 253952
করতে253983
পুনরুদ্ধার করা হয়েছে।
প্রক্রিয়াজাত বাইটগুলির মোট সংখ্যা 32 × 32 হবে। তবে মোট মেমরির পরিধি 253984 বাইটের বেশি। একটি আধুনিক সিপিইউতে, এর অর্থ 32 বা 33 ক্যাশে স্টল । বিপরীতে, চিত্রটি যদি 128 × 8192 হয়, মেমরির পরিধিটি কেবল 4000 বাইট হতে হবে, যার অর্থ দুটি ক্যাশে স্টলের বেশি নয়।
কারণ আজকের সিপিইউগুলি খুব দ্রুত, ক্যাশে স্টলগুলি খুব ব্যয়বহুল এবং হ্যাং কম্পিউটেশন। সুতরাং কোনও 8192 × 128 চিত্রের পরিবর্তে 128 × 8192 চিত্র ব্যবহার করা কমপক্ষে তত্ত্বের ক্ষেত্রে কমপক্ষে 8 গুণ দ্রুত গতিযুক্ত। অনুশীলনে এটি নির্ভর করবে যে ব্লিটিং কীভাবে বাস্তবায়িত হয়: সমস্যাটি হ্রাস করার জন্য অন্তর্নিহিত ইঞ্জিন নিজেই চিত্রগুলিকে টাইলগুলিতে বিভক্ত করে তোলে।
এটি সঠিকভাবে ব্যাখ্যা করা সহজ নয় এবং আমি খুব বেশি বিস্তৃত হওয়ার আশা করিনি। আমি এটা জ্ঞান করে তোলে আশা করি!