मैं एक स्तर के संपादन उपकरण पर काम कर रहा हूं जो XML के रूप में अपने डेटा को बचाता है।
यह विकास के दौरान आदर्श है, क्योंकि यह डेटा प्रारूप में छोटे बदलाव करने के लिए दर्द रहित है, और यह पेड़ जैसे डेटा के साथ अच्छी तरह से काम करता है।
हालांकि, नकारात्मक पक्ष यह है कि एक्सएमएल फाइलें बल्कि फूला हुआ है, ज्यादातर टैग और विशेषता नामों के दोहराव के कारण है। इसके अलावा संख्यात्मक डेटा के कारण देशी डेटाटिप्स का उपयोग करने की तुलना में काफी अधिक जगह ले रहा है। एक छोटा स्तर आसानी से 1Mb + के रूप में समाप्त हो सकता है। मैं इन आकारों को महत्वपूर्ण रूप से कम करना चाहता हूं, खासकर अगर सिस्टम को आईफोन या किसी अन्य डिवाइस पर अपेक्षाकृत सीमित मेमोरी वाले गेम के लिए उपयोग किया जाना है।
स्मृति और प्रदर्शन के लिए इष्टतम समाधान, XML को बाइनरी स्तर प्रारूप में परिवर्तित करना होगा। लेकिन मैं ऐसा नहीं करना चाहता। मैं प्रारूप को काफी लचीला रखना चाहता हूं। XML को ऑब्जेक्ट में नई विशेषताओं को जोड़ना बहुत आसान बनाता है, और यदि डेटा का एक पुराना संस्करण लोड किया गया है, तो उन्हें डिफ़ॉल्ट मान दें। इसलिए मैं नाम-मूल्य जोड़े के रूप में विशेषताओं के साथ नोड्स के पदानुक्रम को रखना चाहता हूं।
लेकिन मुझे टैग / विशेषता नामों के बड़े पैमाने पर दोहराव को हटाने के लिए इसे और अधिक कॉम्पैक्ट प्रारूप में संग्रहीत करने की आवश्यकता है। हो सकता है कि विशेषताओं को मूल प्रकार देने के लिए भी, इसलिए, उदाहरण के लिए फ्लोटिंग-पॉइंट डेटा को 4 बाइट प्रति फ्लोट के रूप में संग्रहीत किया जाता है, न कि टेक्स्ट स्ट्रिंग के रूप में।
Google / विकिपीडिया बताते हैं कि 'बाइनरी एक्सएमएल' शायद ही कोई नई समस्या है - यह पहले ही कई बार हल हो चुकी है। यहाँ किसी को भी मौजूदा सिस्टम / मानकों में से किसी के साथ अनुभव मिला है? - खेल के उपयोग के लिए कोई आदर्श हैं - एक नि: शुल्क, हल्के और क्रॉस-प्लेटफॉर्म पार्सर / लोडर लाइब्रेरी (C / C ++) के साथ उपलब्ध हैं?
या मैं खुद ही इस पहिये को सुदृढ़ करूं?
या क्या मैं आदर्श को भूल जाना बेहतर हूं, और बस अपने कच्चे .xml डेटा को संपीड़ित कर रहा हूं (इसे जिप-जैसे संपीड़न के साथ अच्छी तरह से पैक करना चाहिए), और बस मेमोरी / प्रदर्शन को हिट-लोड पर ले जा रहा है?