मुझे लगता है कि मैंने तय कर लिया है कि मुझे वास्तव में इवेंट हैंडलर पसंद हैं। मैं विश्लेषण पक्षाघात से थोड़ा पीड़ित हो सकता हूं, लेकिन मैं अपने डिजाइन को अनिच्छुक बनाने या अपने डिजाइन निर्णयों के लिए कुछ अन्य अप्रत्याशित परिणाम में भाग लेने के बारे में चिंतित हूं।
मेरा गेम इंजन वर्तमान में एक पैनिंग ओवरहेड कैमरा के साथ बुनियादी स्प्राइट-आधारित प्रतिपादन करता है। मेरा डिज़ाइन इस तरह दिखता है:
SceneHandler
इसमें उन वर्गों की एक सूची शामिल है जो सीनलेनिस्टनर इंटरफ़ेस (वर्तमान में केवल स्प्राइट्स) को लागू करते हैं। टिक के अनुसार एक बार रेंडर (), और ऑनकैमरा यूपीडेट () भेजता है; SceneListeners को संदेश।
InputHandler
प्रति बार एक बार इनपुट को पोल करता है, और InputListeners को एक सरल "onKeyPressed" संदेश भेजता है। मेरे पास एक Camera InputListener है जो एक SceneHandler उदाहरण रखता है और updateCamera () को ट्रिगर करता है; इनपुट क्या है पर आधारित घटनाएँ।
AgentHandler
टिक के अनुसार किसी भी एजेंट (एआई) पर डिफ़ॉल्ट क्रियाओं को कॉल करता है, और पंजीकृत किसी भी नई घटनाओं के लिए एक स्टैक की जांच करेगा, जो उन्हें आवश्यकतानुसार विशिष्ट एजेंटों को भेज रहा है।
इसलिए मेरे पास बुनियादी स्प्राइट ऑब्जेक्ट हैं जो एक दृश्य के चारों ओर घूम सकते हैं और यात्रा करने के लिए अल्पविकसित स्टीयरिंग व्यवहार का उपयोग कर सकते हैं। मैं टक्कर का पता लगाने पर मिल गया है, और यह वह जगह है जहाँ मुझे यकीन नहीं है कि मेरी डिजाइन अच्छी है। क्या कई, छोटे ईवेंट हैंडलर का होना अच्छा अभ्यास है? मुझे लगता है कि मैं जिस तरह से जा रहा हूं, मुझे लगता है कि मुझे किसी तरह के CollisionHandler को लागू करना होगा।
क्या मैं एक अधिक समेकित एंटिटीहैंडलर के साथ बेहतर होगा जो एआई, टकराव अपडेट और एक वर्ग में अन्य इकाई इंटरैक्शन को संभालता है? या क्या मैं ठीक कई उप-इवेंट हैंडलिंग सबसिस्टम को लागू करना ठीक होगा, जो एक-दूसरे को संदेश देते हैं कि यह किस तरह की घटना है? क्या मुझे एक EntityHandler लिखना चाहिए जो इन सभी उप घटना संचालकों के समन्वय के लिए ज़िम्मेदार है?
मुझे कुछ मामलों में एहसास हुआ, जैसे कि मेरा इनपुटहैंडलर और सीनहैंडलर, वे बहुत विशिष्ट प्रकार के आयोजन हैं। मेरे गेम कोड का एक बड़ा हिस्सा इनपुट के बारे में परवाह नहीं करेगा, और एक बड़ा हिस्सा दृश्य के प्रतिपादन में विशुद्ध रूप से होने वाले अपडेट की परवाह नहीं करेगा। इस प्रकार मुझे लगता है कि मेरी उन प्रणालियों का अलगाव उचित है। हालाँकि, मैं इस प्रश्न को विशेष रूप से गेम लॉजिक प्रकार की घटनाओं से संपर्क कर रहा हूँ।