আমি রিয়েলটাইম মাল্টিপ্লেয়ার গেমটিতে কাজ করছি যার জন্য একটি ডেটাবেস প্রয়োজন হবে (প্লেয়ার প্রোফাইল, বন্ধু, আনলক, সংবাদ ইত্যাদি বৈশিষ্ট্যের জন্য) এটি একটি স্ট্যান্ডার্ড পিসি গেম (ব্রাউজার-ভিত্তিক নয়) এবং ক্লায়েন্ট-সার্ভার ব্যবহার করবে স্থাপত্য। আমি ডাটাবেসগুলি ব্যবহারে নতুন এবং আমি উত্তপ্ত বিতর্কে হোঁচট খেয়ে গত কয়েকদিন ধরে কিছু গবেষণা করেছি: আরডিবিএমএস বনাম নোএসকিউএল। বর্তমানে আমি নোএসকিউএল এর দিকে ঝুঁকছি তবে প্রতিটি (আরডিবিএমএস এবং নোএসকিউএল) এর ব্যবহার সম্পর্কে পড়ার পরে, আমি উভয়ই ব্যবহার করতে প্ররোচিত হই। আমি জানি এটি অদ্ভুত মনে হতে পারে তবে আমার পরিস্থিতিটি আমাকে ব্যাখ্যা করতে দিন:
আমার টিমের একটি শেয়ারড ওয়েবহোস্টিং প্যাকেজ রয়েছে যা সীমাহীন মাইএসকিউএল স্টোরেজ এবং ব্যান্ডউইদথ সরবরাহ করে, এটি কেবলমাত্র আমাদের একসাথে কেবল 25 টি সংযোগ খোলা থাকতে পারে (শেয়ারিং হোস্টিংয়ের নিয়ম)। আমি নিউজ আপডেটগুলি পোস্ট করতে, সম্প্রদায়ের বৈশিষ্ট্যগুলিকে সমর্থন করতে (মতামত জানাতে, ফ্যান আর্ট ইত্যাদি আপলোড করা) এবং এ জাতীয় পছন্দ করতে আমার ওয়েবসাইটের জন্য (একটি সাধারণ ব্যবহারে সন্দেহ নেই) সন্দেহ করার চেষ্টা করছি। সব ঠিক আছে এবং ভাল - কিন্তু! এখানেই জিনিসগুলি আকর্ষণীয় হয়ে ওঠে ... আমি আমার ওয়েবসাইটে পোস্ট করা একই তথ্যটি খেলতে চাই। এর অর্থ আমার ওয়েবসাইট এবং আমার গেম উভয়ের জন্য মাইএসকিউএল ব্যবহার করা। নিউজ পোস্ট এবং লাইক ছাড়াও, আমি চ্যাট এবং সার্ভার তালিকার মতো জিনিসের জন্য এটিকে গেমটি ব্যবহার করার পরিকল্পনা করি। আমি প্রায় 25-সংযোগ-বিধি সম্পর্কে উদ্বিগ্ন।
যা আমাকে প্রশ্ন # 1 জিজ্ঞাসা করতে পরিচালিত করে: এটি কি কাজ করবে এবং এর চেয়ে আরও ভাল বিকল্প আছে?
এখন এটির পাশাপাশি, আমি নোএসকিউএল কতটা ভাল পারফর্ম করে এবং রিয়েলটাইম গেমসের জন্য উপযোগী তা সম্পর্কে আমি পড়েছি (আমি ভুল হতে পারি, আমি এখানে পৌঁছানোর জন্য NoSQL শিখা যুদ্ধ বনাম একটি বিশাল আরডিবিএমএস পেরিয়েছি এবং সম্ভবত পুড়ে গেছে)। মূলত, আমি আমার সমস্ত গেমের অবজেক্টের ডেটার জন্য মঙ্গোডিবি ব্যবহার করতে চাই।
And again, it will be helpful if I provide some context: I have found a host (MongoLab) which offers a 240MB MongoDB package for free, which I intend on using until it's necessary to upgrade. Given 240MB, I've calculated that I will be able to store roughly 60,000 players (if each player is roughly 4KB and we ignore other things that might be stored). The storage space, and having to pay for more in the future (should our game be successful) is not a problem. The only reason I currently intend on using MongoDB for all of my game object data is because of how often this game object data will be accessed (such as whenever a player is killed, picks up an item, fires a gun, etc.) I also like the straight forward schema-free documents (which make it easier to map game object data). I should note that, at one time, there will only ever be one server writing to a player's profile in the database (the server the player is in).
আমি প্লেয়ার প্রোফাইলের তথ্য প্রদর্শন করার জন্য, আমার ওয়েবসাইটে একই মঙ্গোডিবি ব্যবহার করার ইচ্ছা নিয়েছি (আমি সম্পূর্ণ ধারাবাহিকতায় উদ্বিগ্ন নই, গেম আপডেটগুলি থেকে কিছুটা বিলম্ব করা ঠিক আছে)। যা আমাকে আমার দ্বিতীয় প্রশ্নের দিকে নিয়ে যায়, প্রশ্ন # 2: এটি কি একটি ভাল ধারণা বা আমার আরও ভাল কিছু করা উচিত?
গেমটির সাথে শুরু করার মতো অভিজ্ঞতা থাকবে:
- ক্লায়েন্ট লগ ইন (মঙ্গোডিবি)
- ক্লায়েন্ট ইন-গেমের হোম পেজে ডাব্লু / চ্যাট রুমে রয়েছে (মাইএসকিউএল)
- ক্লায়েন্ট সার্ভার তালিকায় যায় (মাইএসকিউএল)
ক্লায়েন্ট একটি সার্ভারের সাথে সংযোগ স্থাপন করে এবং এতে প্লে করে
সার্ভার সমস্ত প্লেয়ারের জন্য আপডেট যোগাযোগ করে (মঙ্গোডিবি)
এটি কল্পনা করেছিলাম এটি ঠিক কাজ করবে। এটি কি আপনার কাছে ভাল দেখাচ্ছে, বা কীভাবে এই পরিকল্পনাটি উন্নত করা যায় সে সম্পর্কে আপনার কাছে পরামর্শ রয়েছে?