দাবি অস্বীকার: আমার গেম প্রোগ্রামিংয়ের অভিজ্ঞতা ক্লায়েন্ট-সাইড সিঙ্গল প্লেয়ার গেমগুলির চারপাশে ভিত্তিক, তবে আমার ওয়েব অ্যাপ্লিকেশনগুলিতে একটি পটভূমি রয়েছে (বিশেষত মাইক্রোসফ্ট স্ট্যাকের উপর), তাই এই উত্তরটি নিয়ে আমি এখানে এসেছি বলে আমি অনুভব করি যে প্রয়োগ করুন, তবে প্রকৃত গেম সার্ভারটি পরীক্ষা না করে এটি কীভাবে প্রয়োগ হবে তা বলা শক্ত, তবে এখানে যায়। এটি জানুন: আমি কোনও গেম সার্ভার স্থাপন করি নি, কেবল ওয়েব অ্যাপস।
আমি একটি দুই (সার্ভার) স্তরের পদ্ধতির পরামর্শ দেব। একটি ডাটাবেস স্তর এবং একটি "অ্যাপ্লিকেশন" স্তর; তৃতীয় (উপস্থাপনা) স্তরটি আপনার গেমের ক্লায়েন্ট হওয়ার সাথে।
সম্পর্কিত সম্পর্কিত ডাটাবেসগুলি, ডেটা অনুসন্ধানে দুর্দান্ত এবং ডেটা লেখার ক্ষেত্রে শালীন। আপনার ক্লাস্টারটি পরিচালনা করতে সক্ষম আকারের অংশগুলিতে আপনার ডাটাবেসকে লেখার সিরিয়ালাইজ করা কীটি হ'ল। এসকিউএল সার্ভারের আরও উন্নত সংস্করণ (ডেটা সেন্টার / এন্টারপ্রাইজ) ক্লাস্টারিং এবং প্রতিলিপি সমর্থন করে। আমি একটি ছোট ক্লাস্টার তৈরি করে এবং এটি কীভাবে কাজ করে তা দেখতে এর বিরুদ্ধে কিছু অনুসন্ধান চালিয়ে শুরু করব।
অ্যাপ্লিকেশন স্তরে, আপনি যদি "জোনিং" বা এর মতো কিছু করছেন, তবে আপনি সম্ভবত কোনও ক্লাস্টার স্থাপন না করেই চলে যেতে পারেন, এবং কেবলমাত্র প্রতি অঞ্চলতে একটি সার্ভার সেটআপ করে। যদি আপনার অঞ্চলগুলি বড় হয়ে যায় তবে আপনি প্রতিটি জোনের জন্য একটি গুচ্ছ সেটআপ করতে পারেন।
আপনি অ্যাপ্লিকেশন স্তর -> ডাটাবেস স্তর থেকে ডেটা প্রেরণের জন্য একটি সিরিয়ালাইজেশন প্রক্রিয়া তৈরি করতে চাইবেন। কীটি সিরিয়ালাইজেশনের একাধিক স্তরের চলছে। এরকম কিছু :
- স্তর 1: প্রতি এক্স সেকেন্ডে ডিবিতে সংরক্ষণ করুন, সমালোচনামূলক ডেটা অন্তর্ভুক্ত করে:
- প্লেয়ার স্বাস্থ্য
- প্লেয়ার আইটেম / পিকআপস
- স্তর 2: প্রতি 2 এক্স সেকেন্ডে ডিবিতে সংরক্ষণ করুন, মাঝারি ডেটা অন্তর্ভুক্ত:
- প্লেয়ারের অবস্থানগুলি
- এনপিসির অবস্থানগুলি
- স্তর 3: যত শীঘ্র সম্ভব সম্ভব সমস্ত কিছু
এটি আপনার লেখার ধারাবাহিক এবং অনুমানযোগ্য রাখবে, আপনার গেমের প্রকৃতির উপর নির্ভর করে আপনার কাছে খুব কম ডাটাবেস লিখতে পারে। মূল বিষয়টি বুঝতে হবে যে যদি আপনার অ্যাপ্লিকেশন সার্ভারটি ক্র্যাশ হয়ে যায়, আপনাকে আপনার ডাটাবেসে রাজ্য থেকে অনলাইনে ফিরে আসতে হবে, সুতরাং প্রতি 90 মিনিটে প্লেয়ারের তালিকা সিরিয়ালকরণ করা খেলোয়াড়দের মন খারাপ করতে পারে।
ডেটা পড়ার জন্য, আপনি যথাসম্ভব অ্যাপ্লিকেশন স্তরের মেমরিতে যথাসম্ভব লোড করতে চাইবেন, তারপরে নিশ্চিত করুন যে আপনার সমস্ত কোড এই মেমরি পুলটি ব্যবহার করে, পটভূমিতে আপনি ডাটাবেসের সাথে মেমরি পুলটিকে সিঙ্ক্রোনাইজ করতে পারেন। জো যেমন উল্লেখ করেছে, এমন সময় আসবে যখন আপনার "রিয়েল-টাইম" লেনদেনের প্রয়োজন হবে। আপনার বেশিরভাগ লেখকে সিরিয়ালাইজ করে, ডাটাবেস সার্ভার / ক্লাস্টারে পর্যাপ্ত হার্ডওয়্যার অনুমান করে আপনার প্রয়োজনের সময় রিয়েল-টাইম লেনদেন করার জন্য আপনার ডাটাবেসে যথেষ্ট আইও থাকা উচিত।