मिसाल
जब तक यह उत्तर लिखा गया था, तब तक यहां अन्य पोस्ट किए गए उत्तर सभी गलत हैं।
यह पूछने के बजाय कि गेम के लिए डोमेन-ड्रिवेन डिज़ाइन अच्छा है या नहीं। आपको पूछना चाहिए कि "डोमेन मॉडलिंग" खेलों के लिए अच्छा है या नहीं।
क्या डोमेन मॉडलिंग खेलों के लिए अच्छा है?
जवाब है: कभी-कभी यह बिल्कुल शानदार है। हालाँकि, यदि आप एक वास्तविक समय के खेल जैसे कि एक platformer या FPS या जो भी (कई प्रकार के खेल) बना रहे हैं, तो नहीं। यह जरूरी नहीं कि उन प्रणालियों के लिए अच्छी तरह से अनुकूल हो। हालाँकि, इस प्रणाली के भीतर वे खेल हो सकते हैं जिनमें डोमेन मॉडल पैटर्न को लागू करना प्रभावी है।
जैसा कि दूसरों ने यहां बताया है, घटक-इकाई रूपरेखा बहुत लोकप्रिय हैं, और अच्छे कारण के लिए। हालांकि, खेल-विकास संस्कृति में स्तरित आर्किटेक्चर की एक अलग कमी प्रतीत होती है। फिर से, यह अधिकांश खेलों के अच्छे कारण के रूप में है कि लोग संस्थाओं पर सिर्फ उत्परिवर्ती राज्य विकसित करने जा रहे हैं और उभरते परिणामों को खेल बनने दें।
सभी सॉफ़्टवेयर आपके द्वारा बनाए जा रहे सॉफ़्टवेयर का नहीं है। कुछ दूसरों से काफी अलग हैं।
डोमेन के कुछ उदाहरण जिनमें डोमेन मॉडलिंग अच्छी तरह से काम करता है, कार्ड गेम, बोर्ड गेम और अन्य प्रकार के सिस्टम हैं जो इवेंट-चालित हैं।
कोर डोमेन अवधारणाओं के रूप में समय डेल्टास द्वारा निर्धारित आंदोलन आदि के साथ एक्स फ्रेम दर पर चलने वाले खेल शायद एक महान फिट नहीं हैं। इस मामले में, हमारा "डोमेन" अक्सर इतना सरल होता है कि डोमेन मॉडलिंग की कोई आवश्यकता नहीं होती है। टकराव का पता लगाना, नई संस्थाओं का निर्माण, मौजूदा संस्थाओं पर बलों का प्रभाव आदि के कारण अधिकांश गेमप्ले को कवर किया जाता है।
हालाँकि, जैसा कि चीजें जटिल हो जाती हैं, आप कुछ प्रकार के व्यवहार और गणना को संभालने के लिए डेवलपर्स को अपनी संस्थाओं के भीतर डोमेन मॉडल को लागू करना शुरू करते हैं।
गेम आर्किटेक्चर में डोमेन मॉडल पैटर्न
आपका गेम इंजन (उदाहरण के लिए, यूनिटी 3 डी) अक्सर घटक-इकाई उन्मुख होता है। एक प्लेटफ़ॉर्मर में, आपके पास अपने चरित्र के लिए एक इकाई हो सकती है और इसकी स्थिति को अद्यतन स्थिति आदि के लिए निरंतर उत्परिवर्तित किया जाता है।
हालाँकि, अधिक ईवेंट-चालित गेम में, यह अधिक संभावना है कि घटक-इकाई ढांचे की भूमिका उपयोगकर्ता इंटरफ़ेस के रूप में मौजूद है। आप एक स्तरित वास्तुकला के साथ समाप्त होते हैं।
यूआई उपयोगकर्ता के लिए खेल राज्य प्रदान करता है। उपयोगकर्ता UI के साथ इंटरैक्ट करता है, सर्विस लेयर में कमांड को ट्रिगर करता है। सेवा परत डोमेन ऑब्जेक्ट्स के साथ इंटरैक्ट करती है। डोमेन ऑब्जेक्ट्स ने डोमेन ईवेंट्स को उठाया। इवेंट श्रोता यूआई में घटनाओं को सुनते हैं और परिवर्तनों को ट्रिगर करते हैं।
UI> सेवा परत> डोमेन मॉडल
संक्षेप में, एक सेवा परत कार्यान्वयन के साथ मॉडल-दृश्य-नियंत्रक के साथ अंत।
इस वास्तुकला का उपयोग करते हुए, आपके पास एक पूरी तरह से इकाई-परीक्षण योग्य गेम कोर (गेम डेवलपमेंट कल्चर में एक दुर्लभता, और यह एक इवेंट-संचालित इंटरफ़ेस के साथ दिखाता है)।
ठीक है अब, DDD क्या है?
डोमेन-संचालित डिज़ाइन विशेष रूप से विश्लेषणात्मक पैटर्न पर जोर देने की एक संस्कृति / आंदोलन है जो डोमेन के बारे में जानने के लिए उपयोग किया जाता है, ताकि आप वास्तव में सही चीज़ का निर्माण कर रहे हों, और फिर कार्यान्वयन पैटर्न जो आपको एक मॉडल परत को लागू करने के लिए सशक्त बनाते हैं जो प्रतिनिधित्व करता है अपनी भाषा के मुहावरे का उपयोग करके डोमेन मॉडल में अवधारणाएँ। DDD एक ऐसे समुदाय से बाहर आता है जो जटिल डोमेन के साथ काम करता है और हमेशा डोमेन मॉडलिंग पर ध्यान केंद्रित करके अपने अनुप्रयोगों में उच्च जटिलता का प्रबंधन करने के तरीकों की तलाश कर रहा है।
DDD इतनी अच्छी तरह से नहीं करता है यदि आपका लक्ष्य केवल कोडिंग शुरू करना है, सिस्टम के साथ खेलना है और फिर पता लगाना है कि आप बाद में क्या बनाना चाहते हैं, आदि यह मानता है कि अस्तित्व में कम या ज्यादा डोमेन है। इसलिए, यदि आपको पता नहीं है कि आपका खेल क्या होने जा रहा है .. तो, यह काम करने वाला नहीं है।