ग्रेगरी वियर का उत्तर यह है कि कई भूमिकाएं निभाने के लिए आइटम उदाहरणों की संरचना कैसे की जाती है।
फ़ाइल से लोड करने के लिए:
सबसे पहले, YAML का उपयोग करें। YAML एक विशिष्ट डेटा विवरण भाषा है; यह मनुष्यों द्वारा अपेक्षाकृत जल्दी से पढ़ा, संपादित और संपादित किया जा सकता है, बाइनरी डेटा का समर्थन करता है, और अधिकांश जावा सहित प्रोग्रामिंग भाषाओं के लिए पुस्तकालय मौजूद हैं। यह "मैं फ़ाइलों में वस्तुओं से डेटा कैसे प्राप्त करूं?"
दूसरा, फ्लाईवेट पैटर्न का उपयोग करें । उन फ़ाइलों से पढ़ा जाने वाला अधिकांश डेटा स्थिर है। यह प्रति उदाहरण बदलने नहीं जा रहा है ("कुल्हाड़ी 1d10 आधार को नुकसान पहुंचाती है और लकड़ी को तोड़ती है लेकिन पत्थर को नहीं" - यह एक खिलाड़ी के सभी पांच कुल्हाड़ियों का सच है)। क्या आप वास्तव में YAML फ़ाइलों से पढ़ते हैं ये प्लैटॉनिक परिभाषा हैं, और आपके व्यक्तिगत आइटम उदाहरणों में इनका उल्लेख नहीं है (और लगातार), प्रति-उदाहरण डेटा के साथ जैसे "मैं कितने ब्रेक से पहले झूलता हूं?", "क्या खिलाड़ी ने दिया था?" मुझे एक कस्टम नाम? ", और इसी तरह।
किसी एकल ऑब्जेक्ट में क्रॉस-इंस्टेंस डेटा को साझा करके, आप बहुत सारी मेमोरी को संरक्षित करते हैं, और गेम स्टेट (गेम या प्लेयर डेटाबेस को बचाने) के बिना आइटम को अपडेट करना आसान बनाते हैं।
तो आपकी कक्षा संरचना कुछ इस तरह दिखती है:
- वर्ग आइटम - प्रति आइटम एक उदाहरण
- मालिक-एक हथियार उदाहरण
- एक उपकरण उदाहरण के मालिक हैं
- एक कस्टम नाम है, आदि।
- वर्ग हथियार - (ऊपर) प्रति आइटम एक उदाहरण
- एक आइटम है
- रेफर-टू वेपनडेफ
- हैस बोनस बोनस स्तर, आदि।
- क्लास टूल - (प्रति आइटम) एक उदाहरण के लिए
- एक आइटम है
- रिफ़र-टू टूलडिफ
- हैस टिकाऊपन, आदि।
- वर्ग हथियार - एक प्रकार का हथियार प्रति उदाहरण
- किसी फ़ाइल से पढ़ें, फ़ील्ड स्थिर होनी चाहिए।
- आधार क्षति राशि, 1 या 2 हाथ, आदि है।
- क्लास टूलडेफ - उपकरण के प्रति एक उदाहरण
- किसी फ़ाइल से पढ़ें, फ़ील्ड स्थिर होनी चाहिए।
- एक आधार स्थायित्व है, जो सामग्री इसे तोड़ सकती है, आदि।