উত্তর:
আমরা করেছি, আশা করি বেন জেড আমার চেয়ে বেশি কারণগুলির সম্পর্কে আরও ভাল ব্যাখ্যা দেবেন কারণ তিনি আসলে আমাদের ডাটাবেসের মূল লেখক ছিলেন। সংক্ষিপ্ত সংস্করণটি হ'ল খেলাগুলির জন্য রিলেশনাল ডিবিগুলি খুব কার্যকর নয় কারণ তারা কার্যকরভাবে কাঠামোগত কাঠামোগত শ্রেণিবিন্যাসের ডেটা সংরক্ষণ করতে পারে না, যা এমএমওর সাধারণ ক্রিয়াকলাপের জন্য প্রয়োজনীয় বিশাল পরিমাণের ডেটা তৈরি করে। আমরা একটি কাস্টম অবজেক্ট ডাটাবেস এবং বিতরণ লেনদেন প্রক্রিয়াকরণ সিস্টেমের অংশটি তৈরি করতে বেছে নিয়েছি, যা এখন আমাদের দুটি লাইভ গেমস উত্পাদন এবং শক্তিতে রয়েছে।
আপনি যদি একই কাজ করা উচিত? সম্ভবত না, কমপক্ষে প্রথমে না। আমি এখনও এসকিউএল এড়িয়ে চলার পক্ষে বলব, তবে "নোএসকিউএল" বিশ্বে আরও অনেক বিকল্প রয়েছে যা কয়েক বছর আগে উপস্থিত ছিল না।
এটি বলেছিল, বেশিরভাগ এমএমওগুলি এসকিউএল (সম্পর্কিত) ডাটাবেসে চালিত হয়। আমি জানি যে কয়েকটি কয়েকটি-টিবি র্যামসান শীর্ষে বসে একটি এসকিউএল সার্ভার ইনস্টলেশন চালিয়ে যায় (আমি সম্ভবত আমার জীবনে কখনই এই জিনিসগুলির ব্যয় করার মতো টাকা পাব না)।
সম্পাদনা করুন: আশা রাখি, তিনি আমাকে কিছু মনে করবে না এই এখানে পোস্ট, কিন্তু এই উপস্থাপনা আমরা আমাদের ডাটাবেসের সম্পর্কে GDC'08 দিয়েছেন সম্পর্কে কিছু লিঙ্ক এবং মন্তব্যের সঙ্গে একটি ব্লগ এন্ট্রি।
ঠিক আছে এই উত্তরটি একটি পর্যবেক্ষণের আরও বেশি।
সম্পূর্ণ প্রকাশ আমি এমএমওআরপিজিতে কাজ করি নি। ২০০৯ সালে আমি প্রথম ১০ টি সর্বাধিক পরিদর্শন করা সাইটগুলির মধ্যে একটিতে কাজ করেছি এবং আমি গেম ইঞ্জিন সংস্থায় কাজ করেছি যা ভেবেছিল তারা এমএমওআরপিজি প্রযুক্তি তৈরি করছে (আমি জানি না শিপানো হয়েছে কিনা)।
যদি আপনি বৃহত্তর স্কেল অর্জনকারী সংস্থাগুলি (গুগল, ফেসবুক, টুইটার ইত্যাদির দিকে নজর দেন) তবে আমি জানি তারা গেম সংস্থাগুলি নয়, তবে তারা এই জায়গাগুলিতে সন্ধান করার পক্ষে মূল্যবান) দুটি বিষয় আছে যা আমি মনে করি গুরুত্বপূর্ণ।
একটি বড় ভুলটি হ'ল কিছু ব্যয়বহুল টার্নকি জিনিসটি ধরে নেওয়া এবং এটি আপনার জন্য যাদুর স্কেল আশা করে। এটি সেভাবে কাজ করে না। স্কেলিংয়ের মূল চাবিকাঠি প্রতিটি নতুন চ্যালেঞ্জকে যথাযথভাবে মোকাবেলা করা। সমাধানগুলি ব্যবহারের জন্য আপনার নমনীয় সহজ প্রয়োজন যা আপনি সহজেই বাইরে চলে যেতে পারেন।
তাই আমার কাছে আমার পরামর্শটি হ'ল যদি আপনার প্রারম্ভিক সূচনার শুরু হয় তবে মোকাবেলা করার জন্য কমপক্ষে মাথাব্যথা বলে মনে হয় get
মূলত, সম্পূর্ণ পন্থাগুলি রয়েছে এবং আমি মনে করি যে তারা ডেটাবেসের বৈশিষ্ট্যগুলির মতো তাদের বিকাশকারীদের অভিজ্ঞতার ভিত্তিতে আরও বেছে নেওয়া হয়েছে। এক প্রান্তে, অনেক এমএমও স্ট্যান্ডার্ড রিলেশনাল ডাটাবেস ব্যবহার করছে - যেমন। Camelot এর অন্ধকার যুগে ব্যবহৃত / ব্যবহার (তারা এখনও যাচ্ছি?) মাইএসকিউএল , FreeRealms একটি পরিবর্তিত ব্যবহার PostgreSQL ইত্যাদি
স্কেল ধরে চলন্ত, আপনার গিল্ড ওয়ারস রয়েছে: এগুলি এসকিউএল সার্ভার ব্যবহার করে তবে তারা তাদের ডেটা সেখানে একটি একক বিএলওবি হিসাবে আটকে রাখে। এর অর্থ তারা একটি সাধারণ ডাটাবেস সরবরাহ করে এমন কিছু বেনিফর্মের সাথে তাদের সাধারণ বাইনারি ফর্ম্যাটগুলির সুবিধা পান। বলা বাহুল্য, আপনি সম্ভবত এই পদ্ধতির কিছু অসুবিধাগুলিও দেখতে পাচ্ছেন, তবে ফ্ল্যাট ফাইলগুলি নিয়ে কাজ করার অভ্যস্ত একটি সংস্থার পক্ষে এটি সম্ভবত এখনও এক ধাপ।
তারপরে সম্ভবত কিছু আনুষ্ঠানিক নোএসকিউএল পদ্ধতির ব্যবহার করে এমন কিছু জায়গা রয়েছে, যদিও এটি এখনও প্রথম দিনগুলি। ফার্মভিল স্পষ্টত মুখস্থ করা মেমচেডের ভিত্তিতে মেমব্যাস ব্যবহার করে যা তারা এ উদ্দেশ্যে তৈরি করেছিল। এটি মংগোডিবি, কাউচডিবি ইত্যাদির মত অনেকগুলি বৈশিষ্ট্য ভাগ করে নিচ্ছে আবার এই পদ্ধতির সাথে আপনি সাধারণত নিজের স্টোরেজ ফর্ম্যাটগুলি ঘুরিয়ে নিচ্ছেন তবে বিতরণ, ক্যাচিং, রিডানডেন্সি ইত্যাদির সুবিধা পান
কিছু তাদের নিজস্ব নোএসকিউএল পুরোপুরি ঘূর্ণায়মান: ক্রিপটিক বলেছেন যে তারা অনুরূপ কিছু করেছে তবে তারা আরও বলেছে যে তারা এটি উত্পাদনে ব্যবহার করছে না। ( সম্পাদনা করুন : তবে নীচে মন্তব্য দেখুন see)
এবং তারপরে আপনি এমন লোকদের কাছে আসেন যারা ফ্ল্যাট টেক্সট বা বাইনারি ফাইলগুলি ব্যবহার করছেন - আমি এটি বুঝতে পেরেছি যে পুরানো গেমস যেমন আলটিমা অনলাইন, এভারকোয়েস্ট, ইত্যাদি সমস্তই এই পথে চলে গেছে, এবং গেম ডেভেলপমেন্টের অভিজ্ঞতা সম্পন্ন একটি সংস্থার জন্য তবে অল্প ডাটাবেসের অভিজ্ঞতা এটি ভালভাবে কাজ করে খুব।
এছাড়াও খেয়াল করুন যে শব্দটির কিছুটা databaseিলে senseালা অর্থে আপনি নিজের ডেটাবেস লেখার আশেপাশে কখনই পাবেন না - গেমসে আপনার কাছে সর্বদা স্পষ্ট ডেটা থাকবে যা আপনাকে মেমোরি বা অন ডিস্কে এমনভাবে পরিচালনা করতে হবে যা নিজেরাই ndণ দেয় না in জেনেরিক সফ্টওয়্যার। আপনি যখনই কোনও ডেটা চান ততবার আপনি এসকিউএল কোয়েরি করতে পারবেন না তাই কোডের মধ্যে আপনার প্রচুর তথ্য মিররিংয়ের দরকার হবে আপনি কী পিছনেই ব্যবহার করবেন না কেন।
জ্বলন্ত সমুদ্রের জলদস্যুদের উপর, আমরা মাইএসকিউএল দিয়ে সরে দাঁড়ালাম (যদিও সততার সাথে আমি পোস্টগ্রিসকেই পছন্দ করতাম) এবং যখন এটি লোডের নিচে নেমে যেতে শুরু করে, আমরা মাইক্রোসফ্ট এসকিউএল সার্ভারে স্যুইচ করেছিলাম। সত্য, যদিও, আমি সম্ভবত ভবিষ্যতে আর সেই পথে যেতে পারব না। পটবিএসের বেশিরভাগ ডেটা যাইহোক চালিয়ে যাওয়ার আগে প্রাক-সিরিয়ালযুক্ত করা হয়, সুতরাং ডিবিতে যা আছে তার একটি বড় অংশ একটি ওভারগ্রাউন কী / মান স্টোর ছাড়া আর কিছুই নয়। সর্বোপরি, আমাদের অধ্যবসায় স্তর থেকে আরও ভাল পারফরম্যান্স পেতে, এবং কীভাবে ডেটা মেমরিতে ক্যাশে হয়েছিল তার আরও ভাল নিয়ন্ত্রণের জন্য, আমরা একটি ক্যাচিং সার্ভার লিখে শেষ করেছিলাম যা ডাটাবেসের সামনে বসে ছিল।
কাইলোটনের খুব সঠিক কথা, আপনি নিজের স্তরের কিছুটা স্তরে ঘুরতে যাবেন না। গেমস ডেটা ব্যবহার করার জন্য এসকিউএল রিলেশনাল ডাটাবেস সার্ভারগুলি ডিজাইন করা হয়নি। রিলেশনাল ডিবি সার্ভারগুলি ডেটাবেসগুলির সমাপ্তি হিসাবে ধরে নেওয়ার পরিবর্তে, কোনও সরঞ্জাম বাছাই করার আগে আমাদের কী সুবিধাগুলি সন্ধান করা উচিত তা সম্পর্কে আমাদের আরও চিন্তা করা উচিত ছিল।
পরের বারের মতো, আমি বার্কলেডিবি বা অন্যান্য নোএসকিউএল-স্টাইলের ডিবিগুলির মতো কিছুগুলিতে আরও নজর দেব look
অন্য একটি বিষয় লক্ষণীয় হ'ল যদি আপনার কাছে (তুলনামূলকভাবে) স্ট্যাটিক ডেটা সেট থাকে তবে এটি কোনও ডাটাবেজে সংরক্ষণ করবেন না! আপনার বানান সংজ্ঞা, আইটেম সংজ্ঞা, মানচিত্র, ইত্যাদি একটি ডাটাবেসে সংরক্ষণ করার সত্যিকারের কোনও ভাল কারণ নেই। আপনি নাম বাদে খুব কমই তাদের জিজ্ঞাসা করছেন। আমি দেখতে পাচ্ছি প্রচুর লোক গেম ডেভলপমেন্টে এই জিনিসগুলি স্ট্রোরের পাশাপাশি খেলোয়াড়ের ডেটা সংরক্ষণ করে, এবং এটি সম্পূর্ণ ভিন্ন শ্রেণীর বিষয় class
এগুলির জন্য আপনার একটি ফাইল সিস্টেমের মতো একটি ডেটা স্টোর দরকার। উন্নয়নের বাইরে আপনার এসিডি লাগবে না, আপনার সিআরইউডি লাগবে না, এই জাতীয় ডেটার জন্য আপনার কোনও ডাটাবেস লাগবে না। বিকাশের অভ্যন্তরে আপনার একটি ডাটাবেস দরকার, তবে আপনার কোনও উপায়ে ভিসিএস প্রয়োজন, এবং আপনার ভিসিএসের পছন্দটি আপনার জন্য সেই ডাটাবেসের পছন্দটি তৈরি করবে।
(আপনি যদি এমন কোনও গেমের সাথে কাজ করছেন যেখানে খেলোয়াড়েরা কাস্টম বানান বা আইটেমগুলি বা কোয়েস্ট তৈরি করতে পারে তবে ভাল, তবে সেই ডেটা প্লেয়ারের ডেটার সমান এবং আপনার আবার একটি ডেটাবেস প্রয়োজন))
এমএমওআরপিজিগুলি নিবিড় অ্যাপ্লিকেশন এবং এটি একটি বিশাল উদ্যোগ। আপনি যদি গেমের বিকাশ দিয়ে শুরু করছেন তবে আমি দৃ strongly়ভাবে আপনাকে আরও ছোট কিছু করার পরামর্শ দিচ্ছি।
এটি বলেছে যে আপনার সেটআপের বাইরে আপনার দুটি স্কিজে শীর্ষের পারফরম্যান্সের প্রয়োজন হবে। আপনার অবশ্যই একটি সার্ভার ফার্ম / মুরগির প্রয়োজন হবে। নেটওয়ার্ক যোগাযোগ তুলনামূলকভাবে ব্যয়বহুল হওয়ায় (এবং বেশিরভাগ এমএমওআরপিজিগুলি রিয়েলটাইম হয়) আপনি আপনার প্রতিটি গেম সার্ভারে আপনার কেন্দ্রীয় ডাটাবেসটি প্রতিলিপি করতে চাইতে পারেন (আপনার পছন্দের ডেটাবেজে রিয়েলটাইম নিম্ন-বিলম্বিত প্রতিরূপের সমতুল্য)।
যদি আপনার প্রতিটি সার্ভার গেম ওয়ার্ল্ডের নির্দিষ্ট অংশে (যেমন ওয়ার্ল্ড ওয়ার্কস) কাজ করে; বিতরণকারী পার্টিশনড ভিউয়ের মতো কিছু । ডিপিভিগুলি আপনাকে বিভিন্ন সার্ভার জুড়ে আপনার ডাটাবেসের সারিগুলিকে বিভাগ করতে দেয়; প্রতিটি সার্ভারে কলামে সীমাবদ্ধতা অনুসারে। এমএসএসকিউএল এবং ওরাকল উভয়ই কেবল এমন সার্ভারের সাথে কথা বলার জন্য যথেষ্ট স্মার্ট যার মধ্যে আপনার WHERE বা ON ক্লজের মধ্যে থাকা ডেটা রয়েছে। আমি নিশ্চিত নই যে ওপেন সোর্স অফারগুলির কোনওটির ডিপিভি রয়েছে কিনা।
এই সমস্তের নেট ফলাফলটি হ'ল আপনি কী ডিবি ব্যবহার করেন তা বিবেচ্য নয় , কেবল একটি ভাল নাম সহ একটি ব্যবহার করুন: এমএসএসকিউএল, ওরাকল, মাইএসকিউএল, পোস্টগ্রিসকিউএল। আপনার ডাটাবেসটি এএনএসআই এসকিউএল-এ লিখুন এবং দেখুন যে সিস্টেমটি সবচেয়ে ভাল কাজ করে - এটিই একমাত্র উপায় out
নোএসকিউএল রুটটিও একটি ভাল ধারণা হতে পারে কারণ এটি উচ্চ সংমিশ্রনের জন্য ডিজাইন করা হয়েছে। প্রাণির পরামর্শটি কৌশলটি করতে পারে।
আমি মঙ্গোডিবি (নোএসকিউএল) ব্যবহার করেছি, এটি খুব দ্রুত একটি ডকুমেন্ট স্টোর যা টিসিপিতে প্রবেশ করা যায়। একবার চেষ্টা করে দেখো! এটা অসাধারণ!
আপনার নিজের ডিবি লেখা একটি দুরূহ কাজ। আমি আপনাকে পরামর্শ দিয়েছি যে সেখানে আগে থেকেই কী আছে এবং আপনি যদি নির্দিষ্ট মানদণ্ডের সাথে মেলে এমন কোনও জিনিস খুঁজে না পান, তবে নিজের তৈরি করুন। ওহ, এবং এটি উত্স খুলতে ভুলবেন না। :)
আমি অনুমান করি এটি আপনার পক্ষে কী ধরণের ডেটা সঞ্চয় করা প্রয়োজন এবং কোন ফর্মের অধীনে এটি বেশ ভারী নির্ভর করে।
আমি মনে করি এখানকার বেশিরভাগ লোকেরা প্লেয়ারের তথ্যের মতো "ডায়নামিক" ডেটার জন্য "স্ট্যান্ডার্ড" এসকিউএল ডাটাবেস ব্যবহার করেন, এটি এসকিউএল সার্ভার, মাইএসকিউএল, পোস্টগ্রিসকিউএল হোক।
তবে, "অভ্যন্তরীণ" ডেটা (বিশ্বের রাষ্ট্র, সামগ্রী, ....) যে কোনও ফর্মের অধীনে সংরক্ষণ করা যেতে পারে এবং আমার ধারণাটি হবে যে বেশিরভাগ সংস্থাই তাদের নির্দিষ্ট প্রয়োজনের জন্য উপযুক্ত অংশের জন্য কমপক্ষে আংশিকভাবে কাস্টম ডাটাবেস সিস্টেম লিখবে ।
এই প্রশ্নটি বরং পুরানো তবে এটি কীভাবে পরিচালনা করতে হবে তার আমার ধারণাটি আজকের মতোই যেমন জিজ্ঞাসা করা হয়েছিল তেমন বৈধ।
আপনি যদি কোনও রিলেশনাল ডাটাবেস ব্যবহার করছেন তবে আপনার এতে বোঝা হ্রাস করতে হবে যাতে এই ধারণাটি সহায়তা করে।
প্রতিটি ক্লায়েন্ট সিস্টেমের পাশাপাশি সার্ভার ডিবিতে সমস্ত স্থানীয় তথ্য স্থানীয় ডিবিতে সঞ্চয় করুন।
ক্লায়েন্ট ডাটাবেসে আইটেমগুলি সহ সমস্ত সারণী সংরক্ষণ করুন। পরিসংখ্যানগুলির জন্য সেই অস্ত্রের উপরে মাউস দেওয়ার সময় ক্লায়েন্টটি সার্ভারের দিকে তাকানোর পরিবর্তে ক্লায়েন্ট কেবলমাত্র পরিসংখ্যানগুলির জন্য স্থানীয় ডাটাবেসটি পরীক্ষা করে। হিসাব করার সময় পরিসংখ্যানগুলি টানানোর জন্য সার্ভারের নিজস্ব ডেটাবেস রয়েছে এবং ক্লায়েন্টদের কাছে কেবল ক্ষয়ক্ষতি এবং স্বাস্থ্যের জন্য এগিয়ে রয়েছে।
এই ধারণাটির সাথে সবচেয়ে খারাপ পরিস্থিতি হ'ল তারা যদি ক্লায়েন্টের ডাটাবেসে প্রবেশ করতে পরিচালিত হয় তবে তারা সমস্ত অস্ত্রের পরিসংখ্যান দেখতে পাবে। যদিও তারা মান পরিবর্তন করে তা সত্ত্বেও কিছু যায় আসে না, সার্ভারের ডাটাবেস মানগুলি গেমটিতে গণনা করে does