क्या मुझे खेल सामग्री को संग्रहीत करने के लिए डेटाबेस का उपयोग करना चाहिए? [बन्द है]


16

मेरे पास SFML का उपयोग करके C ++ में लिखा गया 2D गेम है। मैं खेल को इस तरह से विस्तार योग्य बनाना चाहता हूं कि किसी फ़ाइल या डेटाबेस में एक पंक्ति / प्रविष्टि / पंक्ति जोड़कर आइटम या संस्थाओं जैसी सामग्री को आसानी से जोड़ा जा सके।

मैं एक ऐसी चीज की तलाश कर रहा हूं, जिसे कार्यक्रम में संकलित करने की आवश्यकता नहीं है, लेकिन इसके बजाय रनटाइम पर पढ़ा और लिखा जा सकता है। डेटाबेस का उपयोग कब करना उचित होगा?


1
कृपया अपनी आवश्यकताओं को और अधिक स्पष्ट करें। डेटाबेस काफी तेज़ हैं, लेकिन बहुत जटिल हैं। क्या आपको वास्तव में गति की आवश्यकता है? सिर्फ टेक्स्ट फ़ाइल का उपयोग क्यों नहीं किया जाता है? क्या आपने एक बेंचमार्क चलाया है?
Anko

आपके पास कितने आइटम हैं? क्या यह एक मिलियन से अधिक है? यह उस सीमा के बारे में है जहां मैं पाठ फ़ाइलों पर डेटाबेस का उपयोग करने पर विचार करूंगा।
फिलीपिंस

मैं कहूंगा कि एक डेटाबेस इसके लिए ओवरकिल है, बस किसी प्रकार की परिभाषा सूची का उपयोग करें। शायद सिर्फ सादा पाठ। XML या JSON पर विचार करें।
ह्यूगो जिंक

1
मैं XML या JSON की भी सलाह देता हूं। मैं XML पसंद करता हूं क्योंकि यह एक इंसान के रूप में मेरे लिए अधिक पठनीय है, लेकिन JSON एक अच्छा विकल्प भी है।
Draco18s अब

मैं डेटा सिस्टम के बारे में अधिक जानकारी रखने का दावा नहीं करूंगा, या वे कैसे खेलों में कार्यान्वित हो सकते हैं, लेकिन मैं कहूंगा कि Microsoft अपने कई सरल ऐप के लिए माइक्रो-डेटाबेस कार्यान्वयन का उपयोग करता है (जिनके पास बहुत अधिक संख्या नहीं है डेटा, या बाहर डेटाबेस की जरूरत है, लेकिन "रिश्तों" आदि के लिए करते हैं)। जब तक आप उपयोग में आसानी को ध्यान में रखते हैं तब तक यह समझ में आता है। (बुरा विचार: एक सुपर-औपचारिक XML नाम स्थान का उपयोग डेटा शुद्धता को अनिवार्य करते हुए)
Katana314

जवाबों:


26

यदि आपको डेटाबेस की आवश्यकता है तो केवल एक डेटाबेस का उपयोग करें। अर्थात्:

  • यदि आपको अक्सर जटिल प्रश्न करने की आवश्यकता होती है।
  • यदि आपके पास जटिल डेटा संबंध हैं।
  • यदि आपका डेटा विशाल है और मेमोरी में फिट होने की संभावना नहीं है।

यदि आपके गेम का डेटा इनमें से किसी भी स्थिति को पूरा करता है, तो आपको डेटाबेस का उपयोग करने से फायदा हो सकता है। ध्यान दें कि ये बहुत आम नहीं हैं, और आप शायद उनमें से किसी को भी संतुष्ट नहीं करते हैं। यदि आप करते हैं, मैं SQLite के साथ जाना होगा या कुछ के साथ एक समान विचार के सर्वर की आवश्यकता नहीं है और सिर्फ एक पुस्तकालय होने के नाते।

अन्यथा, फ़ाइलों का उपयोग करें और स्टार्टअप पर मेमोरी में डेटा लोड करें। यदि आप चाहते हैं कि खेल मध्यम हो, तो इस डेटा को अपने गेम की डायरेक्टरी और मॉड्स की डायरेक्टरी दोनों से लोड करें और परिभाषित करें कि परस्पर विरोधी जानकारी कैसे मर्ज की जा सकती है।

यह भी ध्यान दें कि, यदि आप डेटाबेस का उपयोग करते हैं, तो इससे आपको और मॉड्स दोनों को फायदा हो सकता है, डेवलपर्स अभी भी प्रारंभिक डेटा को पढ़ने के लिए फ़ाइलों का उपयोग करते हैं और केवल डेटाबेस का निर्माण करते हैं जब गेम लोड होता है। जब तक इस डेटाबेस का संभावित आकार बड़ा नहीं होता (यानी, कुछ दर्जन से अधिक MiB), आप इन-मेमोरी डेटाबेस का उपयोग करना चाह सकते हैं, जो :memory:कि डेटाबेस पथ के रूप में निर्दिष्ट करके SQLite में संभव है


3
SQLiteअगर आपकी ज़रूरतें "जटिल" या "विशाल" नहीं हैं, तो भी मैं अत्यधिक विचार करूंगा । वास्तव में बहुत सारे कारण हैं कि क्यों कुछ छोटे और उस तरह एम्बेडेड के साथ, आप अपनी उंगलियों पर एक डेटाबेस होने से अत्यधिक लाभ उठा सकते हैं।
wjl

इसके अलावा, मोबाइल plataforms कुछ informations को स्टोर करने के लिए डेटाबेस का उपयोग करते हैं। Android SQLite का उपयोग करता है। इसका मतलब यह है कि मोबाइल प्लैटफॉर्म के लिए आपका अधिकांश काम पहले से ही (डेटा हैंडलिंग के मामले में) किया जाता है। इसके अलावा, SQLite सेटअप करना और SQLite डेटा ( SQLite स्टूडियो या इसी तरह के कार्यक्रमों के साथ ) को संपादित करना वास्तव में आसान है । यदि यह SQLite का उपयोग करने के लिए है, तो सबसे अच्छा शर्त V3 का उपयोग करना होगा। लेकिन इसके अलावा, पर हाजिर!
इस्माइल मिगुएल

@wjl: सहमत, सामान्यीकरण और संदर्भात्मक अखंडता बाधाओं का लाभ छोटे गेम डेटा सेट के लिए भी इसके लायक है। (अब अगर यह SQLite पाने के लिए उचित रेफ़रेंसियल इंटिग्रिटी बाधाओं को ठीक करने के लिए ऐसा दर्द नहीं था ...)
मेसन व्हीलर

यह एक रिलेशनल डेटाबेस का उपयोग करने के खिलाफ एक तर्क है। एक साधारण अनुक्रमित कुंजी-मूल्य स्टोर अभी भी सार्थक हो सकता है।
मार्क

1
@ मर्क यदि आप किसी गेम में की-वैल्यू स्टोर का उपयोग करने जा रहे हैं तो आपके पास मेमोरी में हैशमैप या समान होना चाहिए।
डार्कहॉग

5

मैं वास्तव में गेम डेवेलपमेंट के लिए MongoDB पसंद करता हूं, इसका वास्तव में अच्छा प्रदर्शन है और यह वास्तव में लचीला है, उपयोग करने में आसान है और json- आधारित है।

आप NoSQL आर्क के कारण किसी भी संग्रह में अपनी ज़रूरत के अनुसार कोई भी फ़ील्ड जोड़ सकते हैं, इसलिए यह गेम जैसे किसी भी "डायनामिक" वातावरण में वास्तव में अच्छी तरह से फिट बैठता है।

इसे एक झलक दे

यदि आप किसी प्रकार के MMO टर्न आधारित रणनीति गेम का विकास कर रहे हैं, तो शायद आपको CouchDB के बारे में पढ़ना चाहिए , यह एक NoSQL डेटाबेस है जिसमें वास्तव में अच्छी संस्करण प्रणाली है।


अच्छा जवाब नहीं। सवाल यह नहीं था कि "मुझे किस डेटाबेस का उपयोग करना चाहिए" बल्कि "मुझे एक डेटाबेस का उपयोग करना चाहिए"।
उल्टी गवाह

1

CastleDB एक अच्छा विकल्प है क्योंकि यह केवल एक संपादक है जो एक डेटाबेस को JSON फ़ाइल के लिए बाद में कनवर्ट करता है। मैंने बहुत से उत्तर देखे हैं कि एक सादा फ़ाइल सबसे अच्छा है, इसलिए कैसलबडी शायद दोनों दुनिया में सबसे अच्छी है।


एक बुरा जवाब नहीं है, लेकिन सवाल याद करता है। सवाल यह नहीं था कि "मुझे किस डेटाबेस का उपयोग करना चाहिए" बल्कि "मुझे एक डेटाबेस का उपयोग करना चाहिए"।
उल्टी गवाह
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.