एक इकाई घटक प्रणाली में वैश्विक संदर्भ डेटा को कैसे संग्रहीत किया जाएगा?


10

मेरा सवाल यह है:

कोई वैश्विक संदर्भ डेटा को कैसे संग्रहीत करेगा, अर्थात। एक इकाई घटक प्रणाली में विश्व डेटा जानकारी, वर्तमान विश्व समय, आदि?

मुझे लगता है कि C ++ में एक बौने किले की शैली के खुले अंत में विश्व सिमुलेशन गेम बनाने की दिशा में काम करने की सोच रहा हूं। मैंने केवल मनोरंजन के लिए एक इकाई घटक शैली गेम इंजन का निर्माण किया है, और मैं वर्तमान में यह पता लगाने की कोशिश कर रहा हूं कि मैं उन सभी विशेषताओं में काम करने जा रहा हूं जो मैं चाहता हूं। मानक खेल खेलने के अलावा (प्रतिपादन, भौतिकी, इकाई-विशिष्ट घटक डेटा, आदि), मैं कुछ वैश्विक संदर्भ डेटा भी लेना चाहूंगा, जिसकी सभी प्रासंगिक प्रणालियों तक पहुंच होगी (यानी, विश्व डेटा जैसे वर्तमान में यह किस वर्ष है? , चाहे ग्लोबल वार्मिंग हो रही हो, किसी भी तरह की चीज जो किसी दुनिया का अनुकरण करने के लिए प्रासंगिक होगी)। मैंने मूल रूप से एक "दुनिया" घटक बनाने के बारे में सोचा था, लेकिन यह व्यर्थ और मुश्किल लगता है यदि विभिन्न प्रणालियों के बहुत से इस तार्किक "वैश्विक" डेटा तक पहुंच की आवश्यकता होती है।

यह एक "दुनिया" घटक है या मुझे इस डेटा को किसी अन्य तरीके से संग्रहित करना चाहिए?

मैंने भी केवल इस डेटा को वैश्विक बनाने के बारे में सोचा था, इस प्रकार किसी भी सिस्टम को एक्सेस देना जो इसका उपयोग करना चाहेगा; यह सामान्य रूप से इकाई-घटक सिद्धांतों के उल्लंघन की तरह लगता है, और शायद अन्य कारणों से गड़बड़ है, लेकिन मुझे लगा कि यह वास्तव में काम कर सकता है।

दूसरी चीज जिसके बारे में मैंने सोचा था वह वास्तव में प्रासंगिक विश्व-संदर्भ डेटा को सीधे सिस्टम में स्वयं एम्बेड करना होगा। उदाहरण के लिए, यदि मेरे पास AgeSystem"वृद्ध" सभी संस्थाएं हैं जिनके पास एक getsWeakerAsTimePassesघटक या व्हाट्सएप है, तो शायद यह प्रणाली दुनिया के लिए प्रासंगिक समय डेटा को सीधे सदस्य डेटा के रूप में संग्रहीत कर सकती है जिसका उपयोग समय बीतने और कितना करने के लिए गणना करेगा। उम्र और लोगों को कमजोर करना, आदि यह तीसरा विकल्प मेरा सबसे कम पसंदीदा था, लेकिन कुछ ऐसा जो मेरे दिमाग में आया था।

क्या कोई सलाह दे सकता है?


3
डाउनवोट के लिए औचित्य न केवल ओपी, बल्कि अन्य उपयोगकर्ताओं के लिए विनम्र और उपयोगी है।
MichaelHouse

2
आपने एक हथौड़ा बनाया है और अब सब कुछ एक नाखून की तरह दिखता है। मैं आपको अपने कार्यक्रम में डेटा को रखने और हेरफेर करने के लिए केवल ईसीएस से अधिक का उपयोग करने की अनुमति देता हूं क्योंकि सब कुछ एक कील नहीं है।
पैट्रिक ह्यूजेस

जवाबों:


10

कोई भी तरीका जो काम करता है वह एक तरीका है जो काम करता है। यह सुनने में अटपटा लगता है, लेकिन वास्तव में, आपका खेल आपकी वास्तुकला से 1000 गुना अधिक महत्वपूर्ण है। अपनी पसंद का कोई भी तरीका चुनें और उपयोग में आसान पाएँ।

जिन लोगों को मैंने असली शिपिंग गेम्स में देखा है (घटक-आधारित डिज़ाइन का उपयोग करते हुए, विशेष रूप से ईसीएस नहीं; मैंने कभी भी शुद्ध ईसीएस को "जंगली में नहीं देखा है", हालांकि कई घटक डिजाइनों में ईसीएस-जैसे तत्व हैं) शामिल हैं:

  • एकमात्र
  • "संदर्भ" वस्तुएं उन घटकों / प्रणालियों को पारित की गईं जिनमें सभी प्रासंगिक अन्य प्रणालियों के संदर्भ हैं
  • घटक कारखाने जो सिस्टम पास करते हैं वे व्यक्तिगत घटकों को संभालते हैं
  • घटक जो किसी वस्तु पदानुक्रम की जड़ में सिस्टम को संदर्भित करते हैं (केवल कुछ ऑडबॉल में एकता के खेल)
  • एकवचन "इंजन" ऑब्जेक्ट सिस्टम या घटक को दिया गया जो अन्य सभी प्रणालियों के संदर्भ रखता है
  • स्ट्रिंग-आधारित संसाधन लुकअप सिस्टम (आपको C ++ में कुछ ऐसा करने की अनुमति देता है handle<PhysicsSystem> = GetResource<PhysicsSystem>("/systems/physics"), हाँ, वास्तव में)
  • वैश्विक डेटा और सी-शैली मुक्त कार्यों के ढेर जो उन पर काम करते हैं
  • रिक्त स्थान / उप-स्थान और साथ में वीडियो

वे सभी काम करते हैं। मैं कुछ दृष्टिकोण और एक स्पष्ट पसंदीदा के साथ पकड़ है, लेकिन वे सभी एएए खेल जहाज करने के लिए इस्तेमाल किया गया है। कभी-कभी एक ही परियोजना में कई दृष्टिकोण (40-100 + इंजीनियर टीमें अगुआ डुप्लिकेट कोड, अलास) बनाने के लिए करते हैं।


2
मैं यह जानने के लिए उत्सुक हूं कि आपका स्पष्ट पसंदीदा कौन सा है।
ashes999

मेरे द्वारा दिए गए लिंक मेरी स्लाइड्स और मेरे एक वीडियो के विषय पर बात कर रहे हैं, अगर यह कोई संकेत है। :)
शॉन मिडिलडविच

आह, इसलिए आपका पसंदीदा स्थान / उप-स्थान है । :)
ashes999

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