वास्तव में गेम इंजन/तर्क कोड से प्रतिपादन कोड को अलग करने का सबसे अच्छा तरीका क्या है? और क्या उनको अलग करना भी एक अच्छा विचार है?खेल का पृथक्करण और तर्क प्रस्तुत करना
मान लीजिए कि हमारे पास नाइट नामक गेम ऑब्जेक्ट है। उपयोगकर्ता को देखने के लिए नाइट को स्क्रीन पर प्रस्तुत किया जाना है। अब हम दो विकल्पों के साथ छोड़ दिया गया है। या तो हम नाइट को Render/Draw
विधि देते हैं जिसे हम कॉल कर सकते हैं, या हम एक रेंडरर क्लास बनाते हैं जो सभी शूरवीरों को प्रस्तुत करने का ख्याल रखता है।
परिदृश्य में जहाँ दो नाइट अलग होती है चाहिए नाइट अभी भी सभी जानकारी उसे प्रस्तुत करना करने के लिए आवश्यक होते हैं, या इस रूप में अच्छी तरह अलग किया जाना चाहिए में?
आखिरी परियोजना में हमने बनाया है कि हमने ऑब्जेक्ट के अंदर किसी ऑब्जेक्ट को संग्रहीत करने के लिए आवश्यक सभी जानकारी देने का निर्णय लिया है, लेकिन हमारे पास वास्तव में उस जानकारी को पढ़ने और वस्तुओं को प्रस्तुत करने के लिए एक अलग घटक था। ऑब्जेक्ट में आकार, रोटेशन, स्केल, और वर्तमान में कौन सी एनीमेशन चल रही थी, इस पर आधारित होगा और इस पर आधारित रेंडरर ऑब्जेक्ट स्क्रीन तैयार करेगा।
एक्सएनए जैसे फ्रेमवर्क ऑब्जेक्ट में शामिल होने के बारे में सोचने लगते हैं और प्रतिपादन एक अच्छा विचार है, लेकिन हम एक विशिष्ट प्रतिपादन ढांचे से बंधने से डरते हैं, जबकि एक अलग प्रतिपादन घटक का निर्माण हमें फ्रेमवर्क को बदलने की अधिक स्वतंत्रता देता है किसी भी दिये गये समय।
XNA के कार्यान्वयन पर ध्यान न दें। जितना मैं इसे प्यार करता हूं, वेब पर और किताबों में उदाहरण देखने वाले "डिफ़ॉल्ट" तरीके से भयानक है। प्रत्येक ऑब्जेक्ट गेम बेस क्लास के बारे में जानता है और बदले में, सबकुछ जानता है कि कैसे आकर्षित करना है और इसी तरह। यह अच्छा नहीं है। थॉमस का समाधान आदर्श है, और कितने लोग करते हैं। – Finglas