इकाई प्रणालियों ( 1 , 2 ) के बारे में दो प्रश्न पूछने और उन पर कुछ लेख पढ़ने के बाद , मुझे लगता है कि मैं उन्हें पहले से बहुत बेहतर समझता हूं। मेरे पास अभी भी कुछ अनिश्चितताएं हैं, मुख्य रूप से एक कण एमिटर, एक इनपुट सिस्टम और एक कैमरा बनाने के बारे में। मुझे स्पष्ट रूप से इकाई प्रणालियों को समझने में अभी भी कुछ समस्याएं हैं, और वे वस्तुओं की एक पूरी अन्य श्रेणी पर लागू हो सकती हैं, लेकिन मैंने इन तीनों को चुना क्योंकि वे बहुत अलग अवधारणाएं हैं, एक बहुत व्यापक जमीन को कवर करना चाहिए, और मुझे इकाई प्रणालियों को समझने में मदद करनी चाहिए और कैसे इन समस्याओं को संभालें, स्वयं, जैसे वे साथ आते हैं।
मैं जावास्क्रिप्ट में एक इंजन का निर्माण कर रहा हूं, और मैंने अधिकांश मुख्य विशेषताओं को लागू किया है, जिसमें शामिल हैं: इनपुट हैंडलिंग, फ्लेक्सिबल एनिमेशन सिस्टम, कण उत्सर्जक, गणित वर्ग और कार्य, दृश्य हैंडलिंग, एक कैमरा और एक रेंडर, और एक पूरा गुच्छा। अन्य चीजों के लिए जो इंजन आमतौर पर समर्थन करते हैं। मैंने बाइट 56 के उत्तर को पढ़ा, जिससे मुझे एक इकाई प्रणाली में इंजन बनाने में दिलचस्पी हुई। यह अभी भी एक HTML5 गेम इंजन बना रहेगा, जिसमें मूल दृश्य दर्शन है, लेकिन इसे घटकों से संस्थाओं के गतिशील निर्माण का समर्थन करना चाहिए।
अब मेरे पास जो समस्या है, वह मेरे पुराने इंजन कॉन्सेप्ट को इस नए प्रोग्रामिंग प्रतिमान में फिट कर रही है। ये पिछले प्रश्नों में से कुछ परिभाषाएँ हैं, जिन्हें अद्यतन किया गया है:
एक इकाई एक पहचानकर्ता है। इसका कोई डेटा नहीं है, यह कोई वस्तु नहीं है, यह एक साधारण आईडी है जो सभी संस्थाओं की दृश्यों की सूची में एक सूचकांक का प्रतिनिधित्व करता है (जो मैं वास्तव में एक घटक मैट्रिक्स के रूप में लागू करने की योजना बना रहा हूं)।
एक घटक एक डेटा धारक है, लेकिन उन तरीकों के साथ जो उस डेटा पर काम कर सकते हैं। सबसे अच्छा उदाहरण एक
Vector2D
या "स्थिति" घटक है। यह डेटा है:x
औरy
, लेकिन यह भी कुछ तरीकों कि डेटा थोड़ा आसान पर काम करना:add()
,normalize()
, और इतने पर।एक प्रणाली एक ऐसी चीज है जो कुछ आवश्यकताओं को पूरा करने वाली संस्थाओं के एक समूह पर काम कर सकती है; आम तौर पर संस्थाओं को घटकों का एक निर्धारित समूह होना चाहिए, जिस पर काम किया जाए। सिस्टम "लॉजिक" भाग है, "एल्गोरिथम" भाग, घटकों द्वारा आपूर्ति की गई सभी कार्यक्षमता विशुद्ध रूप से आसान डेटा प्रबंधन के लिए है।
कैमरा
कैमरे में एक Vector2D
स्थिति संपत्ति, एक रोटेशन संपत्ति और एक बिंदु के आसपास इसे केंद्रित करने के लिए कुछ विधियां हैं। प्रत्येक फ्रेम, यह एक रेंडरर को खिलाया जाता है, एक दृश्य के साथ, और सभी वस्तुओं को इसकी स्थिति के अनुसार अनुवादित किया जाता है। तब दृश्य प्रस्तुत किया जाता है।
मैं एक इकाई प्रणाली में इस तरह की वस्तु का प्रतिनिधित्व कैसे कर सकता हूं? क्या कैमरा एक इकाई, एक घटक या संयोजन (मेरे उत्तर के अनुसार ) होगा?
कण एमिटर
मेरे कण उत्सर्जक के साथ मुझे जो समस्या है, वह फिर से है, क्या होना चाहिए। मुझे पूरा यकीन है कि कण खुद को अस्तित्व में नहीं होना चाहिए, क्योंकि मैं उनमें से 10,000 से अधिक का समर्थन करना चाहता हूं, और मुझे विश्वास है कि बहुत सारी संस्थाओं का निर्माण मेरे प्रदर्शन पर भारी पड़ेगा।
मैं एक इकाई प्रणाली में इस तरह की वस्तु का प्रतिनिधित्व कैसे कर सकता हूं?
इनपुट मैनेजर
आखिरी मैं इस बारे में बात करना चाहता हूं कि इनपुट कैसे संभाला जाना चाहिए। इंजन के मेरे वर्तमान संस्करण में, एक वर्ग है जिसे कहा जाता है Input
। यह एक हैंडलर है जो ब्राउज़र की घटनाओं की सदस्यता लेता है, जैसे कि कुंजी प्रेस और माउस स्थिति में परिवर्तन होता है, और एक आंतरिक स्थिति को भी बनाए रखता है। फिर, खिलाड़ी वर्ग के पास एक react()
विधि है, जो एक तर्क के रूप में एक इनपुट ऑब्जेक्ट को स्वीकार करता है। इसका फायदा यह है कि इनपुट ऑब्जेक्ट को .JSON में क्रमांकित किया जा सकता है, और फिर नेटवर्क पर साझा किया जा सकता है, जिससे चिकनी मल्टीप्लेयर सिमुलेशन की अनुमति मिलती है।
यह एक इकाई प्रणाली में कैसे परिवर्तित होता है?