XNA के साथ इन-गेम स्तर डिज़ाइन?


10

मैं इन-गेम लेवल डिजाइन के बारे में सोच रहा हूं। मेरी वर्तमान स्थिति टाइलों के इर्द-गिर्द घूमती है - मेरे पास विभिन्न प्रकार की वस्तुओं के साथ कई अलग-अलग परतें हैं (किसी के लिए जो टाइल वाले से परिचित नहीं है, एक वस्तु मनमाने गुणों के साथ समन्वय से अधिक कुछ नहीं है)।

मैं वर्तमान में खेल को हर बार फिर से संकलित कर रहा हूं जब मैं यह देखने के लिए कि क्या सब कुछ ठीक से तैनात है, अपने मैप फ़ाइल में थोड़ा बदलाव करें। क्या मेरे लिए एक रास्ता है कि मेरा खेल स्वचालित रूप से उस स्तर को फिर से लोड कर सकता है यदि नक्शा फ़ाइल परिवर्तन का पता चला है? क्या XNA इसके लिए अनुमति देता है, या जिस तरह से सामग्री पाइपलाइन का काम गतिशील सामग्री को इस तरह से अनुमति नहीं देता है? किसी भी सुझाव या सुझाव का बिल्कुल स्वागत है।

जवाबों:


8

मुझे लगता है कि आपकी मैप फाइलें कंटेंट पाइपलाइन के माध्यम से प्रोसेस की जाती हैं, और फिर Content.Load के साथ रनटाइम पर लोड होती हैं। आपके पास दो विकल्प हैं:

  • IntermediateSerializer.Serialize के माध्यम से अपने नक्शे को XML फ़ाइल के रूप में सहेजें। फिर, रनटाइम पर, आप उन्हें परिवर्तनों को देखने के लिए इंटरमीडिएट सेरेशियलाइज़र के साथ पढ़ सकते हैं।
  • यह एक कठिन काम है: MSBuild को रनटाइम पर आपकी फ़ाइलों को उचित XNBs में फिर से जोड़ने के लिए, और उन्हें ContentManager के साथ फिर से लोड करना। यह नमूना ऐसा करता है।

दोनों के बीच, मुझे यकीन है कि मैं कुछ सुलझा पाऊंगा। धन्यवाद!
बजे क्रिस्टोफर हॉरेंस्टीन

2

आप Karvonite का उपयोग भी कर सकते हैं यदि आप इसे उठना चाहते हैं और वास्तव में तेजी से जा रहे हैं।

यह एक फुर्तीला दृढ़ता है। मुझे यकीन नहीं है कि नया संस्करण विंडोज फोन 7 या एक्सबॉक्स पर काम करेगा।

आप उनके दृढ़ता संपादक के साथ एक दृढ़ता की परिभाषा बनाएंगे (यह बहुत आसान है, आप सिर्फ असेंबली को आयात करते हैं और उन कक्षाओं / संरचनाओं पर फ़ील्ड / गुणों की जांच करते हैं जिन्हें आप चाहते हैं) आप एक ऑब्जेक्टस्पेस कोड में आरंभ करते हैं और उसमें से ऑब्जेक्ट्स को जोड़ते / हटाते हैं। । (ये वस्तुएं बनी हुई हैं)

यदि आप एक एब्स्ट्रैक्शन बना सकते हैं ताकि टाइल इंजन या जो कुछ भी आप इसे कहते हैं, वह वास्तव में परवाह नहीं करता है कि यह नक्शा कैसे प्राप्त करता है, बस इसे वह प्राप्त करता है जिसे उसने मांगा था। तब आप वापस जा सकते हैं और XmlSerializer या मध्यवर्ती का उपयोग कर सकते हैं। (जो भी आप पसंद करते हैं) आप सभी को उन अन्य धारावाहिकों को लागू करने के लिए करना होगा जो कि अमूर्त (एक इंटरफ़ेस या अमूर्त वर्ग) का एक और कार्यान्वयन है।

मुझे लगता है कि XNA निर्माता क्लब की वेबसाइट पर रनटाइम पर सामग्री बनाने का एक उदाहरण है। इसे हालांकि नवीनतम ढांचे के साथ नहीं बनाया जा सकता है। यदि आप पहले से ही सामग्री पाइपलाइन का उपयोग करते हैं तो आप अपना पुराना कोड रख सकते हैं। यहाँ लिंक है: Winform श्रृंखला 2: सामग्री लोड हो रही है


मुझे लगता है कि यह पूछना थोड़ा मूर्खतापूर्ण है, लेकिन क्या आप इस रूपरेखा का उपयोग करके वर्कफ़्लो की कल्पना कर सकते हैं? यह वास्तव में साफ-सुथरा लगता है, लेकिन मुझे यकीन नहीं है कि यह कैसे होगा।
क्रिस्टोफर हॉरेंस्टीन

1
ठीक है, आप उनके दृढ़ता संपादक में क्रमांकन को परिभाषित करते हैं। (यह वास्तव में आसान है, आप बस अपनी ऑब्जेक्ट असेंबली को आयात करें और संरचनाओं / वर्गों और उन फ़ील्ड्स / गुणों पर कुछ बक्से की जांच करें जो आप चाहते हैं) एक बार जब आप ऐसा कर लेते हैं, तो आप बस एक ऑब्जेक्ट स्पेस को इनिशियलाइज़ कर सकते हैं जो आपके ऑब्जेक्ट्स को सीरियल / डिसेरलाइज़ करेगा। । यह बहुत साफ-सुथरा है और तेजी से उठता है।
माइकल कोलमैन 1

1
आप दृश्य स्टूडियो के बाहर सामग्री बनाने के तरीके के बेहतर उदाहरण के लिए कोडप्लेक्स पर इस परियोजना को भी देख सकते हैं। ( xnadevru.codeplex.com/… )
माइकल कोलमैन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.