সম্পর্কিত
এগুলি আসলে একটিতে দুটি প্রশ্ন। সবার আগে আমি দক্ষতার সাথে বিশাল পরিমাণে টাইলের ডেটা সঞ্চয় করার উপায় খুঁজছি। অন্যান্য দিকটি ডেটা সেট জিজ্ঞাসা করা এবং টাইল প্রদর্শন করার সাথে সম্পর্কিত। প্রথমে আপনাকে কিছু ব্যাকগ্রাউন্ড দেই।
আমরা ক্যানভাসে রেন্ডার করার জন্য ক্রাফটিজেএস লাইব্রেরি ব্যবহার করে একটি ব্রাউজার ভিত্তিক মাল্টিপ্লেয়ার টাইকুন গেমটি তৈরি করছি। জিইউআই এর পটভূমিতে আমরা পিএইচপি-তে ইয়ে ফ্রেমওয়ার্ক চালাচ্ছি এবং এটি সমস্ত পাইথনের এলোমেলো মানচিত্রের জেনারেটর এবং গেম ইঞ্জিনের সাথে সংযুক্ত।
প্রথম রুক্ষ মানচিত্রটি এভাবে দেখায়: http://i.imgur.com/khAXtl.png
মানচিত্রের ডেটা সংরক্ষণ করা
গেমের জগতটি প্রতিবার খেলা শুরু হওয়ার সাথে সাথে এলোমেলোভাবে উত্পন্ন হয়। প্রতিটি খেলোয়াড়ের জন্য আকারটি 100x100 ষড়ভুজ টাইল। তার মানে তিনটি প্লেয়ার গেমের জন্য এখানে 90.000 টাইলস তৈরি করা হয়েছে। বর্তমানে আমি একটি জাভাস্ক্রিপ্ট অ্যারে তৈরি করেছি যা থেকে আমি মানচিত্রটি রেন্ডার করি।
এটি রেন্ডারিংয়ের জন্য দুর্দান্ত কাজ করে, তবে মানচিত্রের সাথে যে কোনও ধরণের মিথস্ক্রিয়ার জন্য আমাদের কোন খেলোয়াড় টাইলের মালিক, এটির উপরে কী ধরণের কাঠামো তৈরি করা উচিত, এটি বর্তমান দাম এবং আরও অনেক কিছু সংরক্ষণ করতে হবে। প্রথমে কমপক্ষে প্রোটোটাইপের জন্য, আমরা মাইএসকিউএল ব্যবহার করতে চেয়েছিলাম, তবে কিছু পরীক্ষার পরে, এটি আমার মতো ঠিক তত দ্রুত নয়। মংগাডিবি-র মতো কোনও অবজেক্ট স্টোর কোনও এসকিউএল টেবিলের পরিবর্তে টাইলের ডেটা সঞ্চয় করার জন্য আরও উপযুক্ত। নাকি অন্য কিছু হতে পারে?
মানচিত্র প্রদর্শন করা হচ্ছে
আর একটি সমস্যা যা আমি দেখছি তা মানচিত্রের চারদিকে চলছে। বর্তমানে আমি প্রতিটি টাইলের জন্য কৌতুক সত্তা তৈরি করছি এমনকি এটি ভিউপোর্টে না থাকলেও। এটি ধীর, কারণ যদিও ক্র্যাফটি কেবল ভিউপোর্টে কেবলমাত্র রেন্ডার করে, এটি প্রতিটি রেন্ডার ইভেন্টের সমস্ত টাইলগুলির মধ্যে সঞ্চয় করে এবং সম্ভবত পুনরাবৃত্তি করে। আমার কাছে বর্তমানে একটি টানা উত্পন্ন মানচিত্র যা লোড করা খুব ধীর এবং আপনি যখন ঘুরে বেড়ান তখন তো এখন আমি এটি খেলতে সক্ষম করতে চাই।
আমার প্রথম ধারণাটি ভিউপোর্টে থাকা টাইলগুলির প্রদর্শিত উপসেটটি লোড করা ছিল। কিন্তু যখন কোনও প্লেয়ার ভিউপোর্টটি একটি ফাঁকা জায়গায় নিয়ে যায়, তখন আমাকে সার্ভারটি জিজ্ঞাসা করতে হবে এবং প্রতিক্রিয়াটির জন্য অপেক্ষা করতে হবে, তবেই মানচিত্রটি রেন্ডার করা যায়। দেশীয় অ্যাপ্লিকেশনটিতে এটি সূক্ষ্ম হবে, তবে এটি একটি ওয়েব গেমের চেয়ে পিছিয়ে।
মানচিত্র থেকে মসৃণ পারফরম্যান্স পাওয়ার উপায়টি জাভাস্ক্রিপ্ট অ্যারেতে টাইলগুলির একটি বৃহত উপসেটটি আগে লোড করা এবং এটি ক্যাশে হিসাবে ব্যবহার করা হতে পারে। প্লেয়ারটির কয়েকটি স্ক্রিন "ক্যাশেড" থাকবে এবং যখন সে ভিউপোর্টটি সরিয়ে ফেলবে, আমি জেএস "ক্যাশে" আরও টাইলস লোড করতাম।
আমি কি সঠিক দিকে যাচ্ছি? যিনি অনুরূপ কিছু করেছেন তার কাছ থেকে আমি আরও কিছু তথ্য পেতে চাই। আমি গেমের বিকাশে নতুন, তবে গত কয়েক সপ্তাহ ধরে আমি প্রচুর উত্সের মধ্য দিয়ে যাচ্ছি।