জেনারগুলির নিছক সংখ্যার কারণে আপনার প্রশ্নটি সত্যই বিস্তৃত, তবে এখানে পেশাদার সফটওয়্যার বিকাশকারীের দৃষ্টিভঙ্গি।
আপনি কোন মানদণ্ডের প্রক্রিয়াটি ব্যবহার করেন তা নির্ধারণ করতে আপনি যে মানদণ্ডের ব্যবহার করতে চান তা সরবরাহ করে। সেগুলো ছিলো:
- প্রকল্পের আকার।
- প্ল্যাটফর্মটি গেমটি দ্বারা চিহ্নিত।
- ডেটা কাঠামোর জটিলতা।
- অনেক প্রকল্পের মধ্যে ডেটা বহনযোগ্যতা।
- কতবার ডেটা অ্যাক্সেস করা উচিত
- একই অ্যাপ্লিকেশনটির জন্য একাধিক ধরণের ডেটা
- কী ব্যবহার করবেন তা সিদ্ধান্ত নেওয়ার সময় আপনার মনে হওয়া অন্য কোনও বিষয় আগ্রহের বিষয়।
প্রথমে আমাদের প্রতিষ্ঠিত করতে হবে যে আমাদের কাছে কোন বিকল্প উপলব্ধ। যেহেতু আপনি কোনও ভাষা বা প্রযুক্তি নির্দিষ্ট করেন নি, ঠিক এটি বলা শক্ত, তবে আপনি সম্ভবত এক্সএমএল এবং রিলেশনাল ডাটাবেস স্টোরেজের মধ্যে সিদ্ধান্ত নেওয়ার চেষ্টা করছেন ।
করতে একটি গুরুত্বপূর্ণ পার্থক্য হল এক্সএমএল সত্যিই একটি সংগ্রহস্থলের হয় প্রক্রিয়া এত একটি ধারাবাহিকতাতে কৌশল হিসাবে। এটি আপনার গেমের জন্য মেমরি স্ট্রাকচার উপস্থাপন করার একটি উপায়। এটি দেওয়া, আপনি সত্যিই ফ্ল্যাট ফাইল বনাম সম্পর্কিত সম্পর্কিত ডাটাবেস স্টোরেজ সম্পর্কে কথা বলছেন । এগুলি একমাত্র বিকল্প নয়, তবে সেগুলি সর্বাধিক সাধারণ, তাই আমি সেগুলি ব্যবহার করতে যাচ্ছি।
ফ্ল্যাট ফাইলগুলির জন্য:
- এক্সএমএল
- তাদেরকে JSON
- YAML
- XAML
- সাধারণ পাঠ্য
ডাটাবেসের জন্য:
- SQL সার্ভার
- মাইএসকিউএল
- DB2
- আকাশবাণী
- আরো অনেক
সম্পাদনা: আপনি ফাইল এবং সম্পর্কিত ডেটাবেসগুলি বাদ দিয়ে অন্য ধরণের প্রক্রিয়া সম্পর্কে জিজ্ঞাসা করেছিলেন। কেবলমাত্র উল্লেখযোগ্য ধরণের ডাটাবেস যা আমি নিয়মিত ব্যবহার করতে দেখেছি সেগুলি হ'ল "বার্কলে-স্টাইল" ডাটাবেস, যা মূলত মূল-মান ভিত্তিক। ডেটা গঠনে এগুলিতে বি-ট্রি ব্যবহার করার প্রবণতা রয়েছে যাতে লুকআপগুলি দ্রুত হয়। এগুলি কনফিগারেশন / সেটিং দেখার জন্য দুর্দান্ত যেখানে আপনি ঠিক কী চান তা জানেন (উদাহরণস্বরূপ, "স্তর 1" এর জন্য আমাকে সমস্ত টেলিমেট্রি ডেটা দিন)।
এখন যেহেতু আমাদের সমস্ত বুনিয়াদি বাইরে চলে গেছে, আসুন আপনার কয়েকটি মানদণ্ড স্পর্শ করুন।
প্রকল্পের আকার।
কিছু মতানৈক্য হতে পারে, কিন্তু আপনার প্রকল্পের আকার অগত্যা আপনার ডেটা অধ্যবসায় ব্যবস্থায় একটি বিশাল প্রভাব ফেলবে না। আপনি যে কোনও প্রক্রিয়া থেকে ডেটা সঞ্চয় / লোড করে এমন ফাংশনগুলির একটি পুনরায় ব্যবহারযোগ্য গ্রন্থাগার তৈরি করতে চাইবেন। আমি এমনকি একটি বিমূর্ত স্তর বাস্তবায়নের পরামর্শ দেব ( অ্যাডাপ্টার প্যাটার্নটি পরীক্ষা করে দেখুন ) যাতে আপনার প্রয়োজন হয় তবে আপনি সহজেই আপনার অধ্যবসায় ব্যবস্থাটি পরিবর্তন করতে পারেন।
এই বলে যে, ছোট প্রকল্পগুলির জন্য, ফাইল সিস্টেমে এক্সএমএল ব্যবহার করা ভালভাবে কাজ করতে পারে তবে আপনি আপনার সুরক্ষা সংক্রান্ত কয়েকটি উদ্বেগকে (যেমন, এনক্রিপশন) সমাধান করতে চাইবেন যাতে খেলোয়াড়রা ইচ্ছামত ডেটা পরিবর্তন করতে না পারে।
প্ল্যাটফর্মটি গেমটি দ্বারা চিহ্নিত।
প্ল্যাটফর্মটি খুব একটা বিশাল সমস্যা হয়ে উঠবে না। লক্ষ্য প্ল্যাটফর্মের চেয়ে আপনার বিকাশ প্ল্যাটফর্ম সম্পর্কে আপনার আরও উদ্বিগ্ন হওয়া উচিত। এর কারণ হ'ল কিছু ভাষা বাক্সের বাইরে থাকা কিছু ধরণের মার্কআপ বা ডেটাবেসকে অন্যের চেয়ে ভাল পরিচালনা করে। এর মানে এই নয় যে আপনি উপরের কোনওটি প্রায় কোনও ভাষায় ব্যবহার করতে পারেননি, তবে কখনও কখনও আপনার কাছে উপলব্ধ সমর্থিত সরঞ্জামগুলি ব্যবহার করা ভাল। যে কোনও প্ল্যাটফর্ম ফ্ল্যাট ফাইলগুলিকে সমর্থন করবে এবং এক্সএমএলকে পার্স করবে, তবে মোবাইল প্ল্যাটফর্মে আপনি যদি সম্ভব হয় তবে বাইনারি সিরিয়ালাইজেশন বিবেচনা করতে পারেন, বা কমপক্ষে আপনার এক্সএমএল স্টোরেজের জন্য অনুকূলিত করতে পারেন।
ডেটা কাঠামোর জটিলতা।
এটি একটি কৌশলযুক্ত। প্রাসঙ্গিক ডাটাবেসগুলি কেবল এটির জন্য দুর্দান্ত ... সত্ত্বা এবং তাদের সম্পর্ক সংরক্ষণ করে। ফাইল সিস্টেমের ফাইলগুলির চেয়ে আপনি রিলেশনাল স্টোরেজ রিপোজিটরি ব্যবহার করে কাঠামো প্রয়োগের আরও ভাল ক্ষমতা অর্জন করতে পারেন। আপনার সত্তার মধ্যে সম্পর্কের ধরণের পাশাপাশি আপনি কতবার তাদের পরিবর্তন করছেন বা সম্পর্কিত সত্ত্বাগুলি সন্ধান করছেন তা বিবেচনা করুন। অত্যন্ত জটিল কাঠামোর জন্য, আমি ডাটাবেস রুটে যাওয়ার পরামর্শ দেব।
অনেক প্রকল্পের মধ্যে ডেটা বহনযোগ্যতা।
যখন এটি বহনযোগ্যতার কথা আসে তখন আপনার এই তথ্যটি বিবেচনা করা উচিত যে ডাটাবেসগুলি ফাইলের চেয়ে স্বাভাবিকভাবেই বেশি ভারী ওজনযুক্ত। ইনস্টলেশন এবং কনফিগারেশন ওভারহেড রয়েছে, বিভিন্ন প্ল্যাটফর্ম ইত্যাদির জন্য বিভিন্ন ডাটাবেসগুলি উপলভ্য হবে S ইত্যাদি এসকিউএলাইট এটির পক্ষে একটি দুর্দান্ত উপায়। যাইহোক, যখন এটি পোর্টেবিলিটির কথা আসে, আপনি এক্সএমএল এর মতো ফাইল-ভিত্তিক সমাধানগুলির সাথে একটি সহজ সময় পাবে।
সম্পাদনা: আপনার মন্তব্যগুলির মধ্যে একটিতে বহনযোগ্যতা সম্পর্কে আপনি উল্লেখ করেছেন এমন আরও কিছু উদ্বেগ রয়েছে। শেষ পর্যন্ত আপনি চান না যে কোনও তথ্য বা ফাইলের ধরণের সাথে আপনার ডেটা খুব শক্তভাবে মিলিত হোক। এটি চূড়ান্তভাবে সেরা যদি আপনি স্টক ডেটা (স্তর, শত্রু ইত্যাদি) কোনও ধরণের বিমূর্ত বিন্যাসে (ট্যাব বিস্মৃত ফাইল, এক্সএমএল ইত্যাদি) সঞ্চয় করতে পারেন যা আপনি সহজেই সংকলন বা লোডে একটি ডাটাবেস / ফাইল সিস্টেমে পার্স করতে এবং সঞ্চয় করতে পারেন সময়। এর অর্থ হ'ল আপনি আপনার স্টোরেজ মেকানিজমটি ঝিম ঝিমিয়ে নিতে পারেন এবং পার্সিং টুকরোটি আবার লিখতে পারেন।
কতবার ডেটা অ্যাক্সেস করা উচিত
প্রচুর ডেটা অ্যাক্সেসের অর্থ হ'ল প্রচুর আই / ও যদি আপনার কাছে কোনও ধরণের ক্যাচিং ব্যবস্থা না থাকে। ডাটাবেসগুলি স্ট্রাকচারগুলিকে মেমরিতে রাখে এবং ডেটা ম্যানিপুলেশন এবং পুনরুদ্ধারের জন্য দুর্দান্ত। আপনি যদি সত্যই অবিচ্ছিন্নভাবে ডেটা চালিয়ে যান, আপনি হয়ত একটি ডেটাবেস দিয়ে থাকতে চান want
একই অ্যাপ্লিকেশনটির জন্য একাধিক ধরণের ডেটা
ভলিউম অবশ্যই বিবেচ্য বিষয়, তবে আপনি যদি হাজার বা লক্ষ লক্ষ বস্তু টিকিয়ে রাখার কথা বলছেন না তবে ফাইল সিস্টেম এখনও সমাধান হিসাবে গ্রহণযোগ্য হবে।
খেলার ধরণ
আপনি যে ধরণের গেমটি তৈরি করছেন তা আপনার চয়ন করা প্ল্যাটফর্মটিতে একটি বিশাল প্রভাব ফেলতে পারে। হ্যাঁ, বেশিরভাগ ক্লায়েন্ট-কেবল একক প্লেয়ার গেমসের জন্য, আপনি একটি সংক্ষেপিত বা এনক্রিপ্ট করা ফাইল সিস্টেম-ভিত্তিক সমাধান ব্যবহার করে ভাল হয়ে যাচ্ছেন। আপনি যদি কোনও অনলাইন উপাদান সহ গেমগুলির বিষয়ে কথা বলছেন তবে তা উন্মাদ হবে। ডাটাবেস রুটে যান এবং নিজেকে মাথা ব্যথা বাঁচান। ব্যাক-এন্ড ক্লাস্টার ব্যবহার করে সার্ভারটিকে আপনার সমস্ত ডেটা পরিচালনা করতে দিন।
আশা করি এই মতামতগুলির কয়েকটি সাহায্য করবে। এটি কোনওভাবেই বিস্তৃত নয় এবং সিদ্ধান্ত নেওয়া শেষ পর্যন্ত আপনার উপর নির্ভর করে তবে আমার ভাষ্যটি আপনাকে কিছু চিন্তাভাবনা করা উচিত।
সম্পাদনা: কিছু সময় আছে যেখানে হাইব্রিড পদ্ধতির গ্রহণ করা অনেক অর্থবোধ করে। উদাহরণস্বরূপ, ধরা যাক আপনি একটি এমএমওরপিজি বিকাশ করছেন। ক্লায়েন্টের পক্ষ থেকে, আপনি অন্য খেলোয়াড়দের সম্পর্কে সম্পর্কিত না হওয়া ডেটাবেসে (উপরে বর্ণিত হিসাবে) ক্যাশেড ডেটা সঞ্চয় করতে পারেন। সার্ভারের দিক থেকে, আপনি সমস্ত গেমের ডেটা এটি চালিয়ে যাওয়ার জন্য একটি সম্পর্কিত ডেটাবেজে সংরক্ষণ করছেন। এবং তারপরে আবার ক্লায়েন্টের পক্ষে আপনি সম্ভবত সহজে অ্যাক্সেসযোগ্যতার জন্য এক্সএমএল / ফ্ল্যাট ফাইলগুলিতে লগ ডেটা, কনফিগারেশন ডেটা ইত্যাদি সংরক্ষণ করছেন।
অন্য একটি পোস্টারে আরও উল্লেখ করা হয়েছে যে কখনও কখনও এটি দুর্দান্ত হয়, এমনকি আপনি কোনও ডাটাবেজে উত্পাদনের জন্য ডেটা সংরক্ষণ করে থাকেন, এমনকি পরিবর্তে ফ্ল্যাট ফাইলগুলি ব্যবহার করতে পারেন এমন উপায় রাখার জন্য ... মিশ্রণ থেকে অন্য পণ্যটি সরানো সহজতর হতে পারে ।