क्या SpriteKit MVC पैटर्न का पालन करता है?


11

मैं वर्तमान में पुराने फ्रैंक नामक एक iOS परियोजना पर काम कर रहा हूं जिसे मैं एमवीसी डिजाइन पैटर्न का पालन करने की कोशिश कर रहा हूं।

इसका सार है।

GameObjects(model) <- Scene(controller) -> Sprites "SpriteKit" (View)

अब अगर मैं एमवीसी को सही ढंग से समझता हूं तो आप बहुत सारी सुविधाओं का उपयोग नहीं कर सकते हैं जो स्प्रिटकिट को पेश करना है यदि आप एमवीसी का पालन करना चाहते हैं। उदाहरण के लिए किसी भी SKAction, टक्कर का पता लगाना, आदि।

क्या यह उस मॉडल तक नहीं है जहां गेम ऑब्जेक्ट्स स्थित हैं और अन्य वस्तुओं को छूने पर उन्हें कैसे प्रतिक्रिया देनी चाहिए? क्या यह समय के साथ स्थान निर्धारित करने के लिए मॉडल तक नहीं है?

स्प्राइटकिट के कुछ हिस्से हैं जिन्हें रेंडरिंग के अलावा MVC में "व्यू" के रूप में उपयोग करने के लिए ओकेटो माना जाएगा?


"मैं एक एमवीसी डिजाइन पैटर्न का पालन करने की कोशिश कर रहा हूं" - क्यों?
पॉल डी। वेइट

2
@ पॉलड.क्या मुझे अपने मॉडल को अलग रखने का विचार पसंद है। इस सिद्धांत में किसी अन्य प्लेटफॉर्म पर पोर्ट या रीक्रिएट करना आसान हो जाता है। यह दृढ़ता को प्रबंधित करने के लिए एक टन को भी आसान बनाता है जो अब तक का सबसे बड़ा कारण रहा है।
स्केलेर लॉरेन

पकड़ लिया। दृढ़ता लक्ष्य को प्राप्त करने के लिए, स्मृति चिन्ह पैटर्न MVC से अधिक लागू हो सकता है। आपके स्प्राइट्स प्रवर्तक हो सकते हैं, और उनके पास अपने राज्य के एक सक्षम-सक्षम प्रतिनिधित्व का निर्माण करने और बाद में खुद को इस प्रतिनिधित्व से पुनर्स्थापित करने की जिम्मेदारी होगी। आपका दृश्य नियंत्रक वह चीज़ हो सकती है जो उनसे प्रतिनिधित्व का अनुरोध करती है।
पॉल डी। वेइट

इसका परिणाम यह भी हो सकता है कि आपके सहेजे गए गेम दूसरे प्लेटफ़ॉर्म पर उपयोग किए जा सकते हैं, हालाँकि मुझे संदेह है कि मैक-आईओएस-स्प्रिटकिट जैसे केवल फ्रेमवर्क के साथ काम करने के दौरान आप पोर्ट-क्षमता के मामले में जा सकते हैं।
पॉल डी। वेइट

1
@ PaulD.Waite आपकी टिप्पणियों के लिए धन्यवाद, मैं भविष्य में विचार करने के लिए एक और पैटर्न के रूप में स्मृति चिन्ह पैटर्न पर गौर करूंगा। दो सवाल एक ही परियोजना के बारे में हैं, लेकिन असंबंधित हैं। दूसरे को देखकर हैरानी हुई कि वह स्टैकओवरफ्लो में भाग गया था और आज रात उसके जवाब पर गौर करेगा।)
स्केलेर लॉरेन

जवाबों:


6

आपका सवाल अच्छा है। मैं बिल्कुल SpriteKit के बारे में एक ही सवाल था और इस बारे में वेब पर जानकारी की कमी के बारे में बहुत उलझन में है। SpriteKit आपको अपने सभी मॉडल-व्यू-कंट्रोलर कोड को एक ही क्लास (आपके SKScene subclass) में डालने के लिए प्रोत्साहित करता है, जो वास्तव में मेरे लिए भ्रमित करने वाला है। आप कभी भी उस तकनीक का उपयोग करके किसी भी जटिलता के खेल का निर्माण कैसे करेंगे? टचसबीगन / एंडेड जैसे कंट्रोलर कोड के साथ गेम स्टेट (स्कोर, अंक, इत्यादि) को संयोजित करना, और एक ही कक्षा में सभी को रेंडर करना देखें तो गेम के सबसे सरल से परे प्रबंधन करना वास्तव में कठिन हो जाता है।

मैं मानता हूं कि दृढ़ता के साथ मदद करने के लिए स्मृति चिन्ह पैटर्न का उपयोग करना एक अच्छा विचार है, लेकिन मुझे यह भी लगता है कि एमवीसी डिजाइन के लिए आगे बढ़ना फायदेमंद हो सकता है। मैं वर्तमान में अपने खेल को MVC आर्किटेक्चर में स्थानांतरित कर रहा हूं। मेरे वर्तमान दृष्टिकोण में मेरा मॉडल (गेम ऑब्जेक्ट) है जो भौतिकी को प्रबंधित करता है, SKScene उपवर्ग नियंत्रक के रूप में कार्य करता है, और दृश्य में SKNodes के दृश्य पहलुओं को कॉन्फ़िगर और प्रस्तुत करने के लिए दृश्य के रूप में कार्य करने के लिए एक अलग वर्ग है। मैं इस प्रक्रिया के माध्यम से केवल एक ही रास्ता हूं, इसलिए यह सुनिश्चित करने के लिए नहीं कह सकता कि क्या यह एक अच्छा डिज़ाइन होगा, लेकिन ऐसा लगता है कि यह SKScene के 10,000 लाइन उपवर्ग की तुलना में कहीं बेहतर होगा।


आपके उत्तर / टिप्पणी के लिए धन्यवाद। आप की तरह लगता है कि SpriteKit की सुविधाओं का उपयोग MVC डिजाइन संरक्षक या तो का पालन नहीं करता है। मुझे skyler@skymistdevelopment.com ईमेल करने के लिए यदि आप के बारे में MVC कैसे "मैं" का उपयोग कर रहा सवाल है या कैसे "आप" SpriteKit =) के साथ MVC का उपयोग कर रहे विस्तार में अधिक जाना चाहता हूँ स्वतंत्र महसूस
स्काईलर लॉरेन

आपके पास अपने कोड को SKScene वर्ग में रखने के लिए मजबूर करने के लिए कुछ भी नहीं है। वास्तव में, मुझे पता है कि स्प्राइटकिट का उपयोग करते समय, अधिकांश तर्क दृश्य की तुलना में अधिक स्वाभाविक रूप से नोड्स पर गिरते हैं, क्योंकि नोड्स स्प्राइटिट का खामियाजा हैं। आपके नोड वृक्ष के लिए अद्यतन और इनपुट को संभालने के लिए दृश्य "नियंत्रक" से थोड़ा अधिक है। हालांकि "MVC" मॉडल अभी भी SpriteKit से मेल नहीं खाता है, क्योंकि नोड्स "M" और "V" हैं।
अटैकफार्म

1

सरल शब्दों में स्प्राइटकिट गेम में एक आम डिज़ाइन दृश्य, परतें, नोड्स और बच्चे के नोड्स हैं।

आप प्रत्येक भाग को एक असतत वर्ग में बना सकते हैं जो सभी भागों, गुणों और विधियों को सम्मिलित करता है।

उदाहरण के लिए एक पृष्ठभूमि वर्ग जिसमें स्तरित चित्र, कण, विभिन्न गुण जैसे गति प्रत्येक परत को हिलना चाहिए और पृष्ठभूमि को स्क्रॉल करने से रोकने और रोकने के लिए सार्वजनिक तरीके चाहिए।

इस डिजाइन में आप इन असतत वर्गों को इकट्ठा करते हैं जो अपना काम सीन में करते हैं जो ज्यादातर रनिंग अपडेट को हैंडल करता है :, फिजिक्स, टच इवेंट आदि।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.