अपने इंजन के लिए एक इकाई-घटक प्रणाली को डिजाइन करने में, मैं एक विशेष प्रकार के घटक को संग्रहीत करने और पुनः प्राप्त करने के तरीके में थोड़ा रोड़ा बना हूं।
सबसे पहले, मुझे इस प्रश्न में स्पष्ट शब्दावली का एक सा सेट करने दें:
- मैं एक डेटा संरचना को " घटक " कहता हूं जो किसी विशेष सिस्टम के लिए प्रासंगिक डेटा संग्रहीत करता है।
- मैं " सिस्टम " को उन विधियों और डेटा संरचनाओं का एकत्रीकरण कहता हूं जो उपयोगकर्ता के साथ गेम स्टेट / इंटरफ़ेस को अपडेट करने के लिए घटकों का उपयोग करता है।
- एक " इकाई " मूल रूप से एक आईडी है जिसका उपयोग विशिष्ट घटकों को प्राप्त करने और गेम लॉजिक में उनके डेटा को संशोधित करने के लिए किया जाता है।
प्रत्येक प्रणाली अपने प्रकार के घटक (जैसे फिजिक्स-> PhysicsComponent, AI-> AIComponent, Rendering-> RenderingComponent) के एक (ID-mapped) सरणी का मालिक है, ताकि वह डेटा पर कुशलता से काम कर सके।
सभी घटक विशेष रूप से एक प्रणाली के स्वामित्व में नहीं होते हैं। उदाहरण के लिए, एक ट्रांसफॉर्म घटक एक वस्तु की स्थिति, रोटेशन और पैमाने को संग्रहीत करता है। यह एक इकाई के सबसे महत्वपूर्ण भागों में से एक है (एकता इसे अनिवार्य बनाता है, यहां तक कि), क्योंकि यह बहुत सारे सिस्टम द्वारा उपयोग किया जाता है, जैसे भौतिकी, एआई, रेंडरिंग आदि।
यह बहुत समस्या मैं सामना कर रहा हूँ। चूंकि ट्रांसफ़ॉर्म का उपयोग बहुत सारी अन्य प्रणालियों द्वारा किया जाता है, मुझे प्रत्येक घटक के लिए उपयोग करने के लिए पुनर्प्राप्त करने के बारे में कैसे जाना चाहिए? एक संभावित समाधान जो मैं देख रहा हूं वह यह है कि प्रत्येक कंपोनेंट अपनी स्वयं की एंटिटी आईडी को स्टोर करे। इस तरह के किसी भी घटक को पुनः प्राप्त करना आसान होगा, लेकिन यह उतना कुशल नहीं होगा, और यह एक घटक की अवधारणा के खिलाफ डेटा के एक अलग और स्वतंत्र बंडल के रूप में जाएगा, जो किसी अन्य के बारे में पता नहीं है।
क्या इस समस्या को हल करने का एक उचित तरीका है? क्या ट्रांसफ़ॉर्म भी एक घटक होना चाहिए?