पार्टी में थोड़ी देर हो गई, लेकिन यहां मेरा विचार है।
मैं तीसरी स्थिति के साथ जाना चाहता हूं जिसमें पहले से मौजूद कोड-बेस को संशोधित करने जैसा कुछ भी नहीं है। यह काम करेगा यदि, आप बायनेरिज़ (वास्तविक गेम .exe और संकलित से .dlls) को आउटपुट निर्देशिका में कहीं भी प्रतिबद्ध करेंगे - उदाहरण के लिए पोस्ट-बिल्ड स्क्रिप्ट के साथ। बाद में, मैं मानूंगा कि हम विज़ुअल स्टूडियो 2010 और XNA गेम स्टूडियो 4.0 के बारे में बात कर रहे हैं (प्रक्रिया अन्य संस्करणों के लिए बहुत समान है, बस कुछ नंबरों को बदलने की आवश्यकता है)
तो, यह विचार है: अपनी परियोजना के मूल में एक स्क्रिप्ट (.cmd) बनाएं, जहां .sln समाधान रहता है, जिसमें निम्न चरण हैं:
"दृश्य स्टूडियो 2010 कमांड प्रॉम्प्ट":
कॉल "C: \ Program Files (x86) \ Microsoft दृश्य स्टूडियो 10.0 \ VC \ vcvarsall.bat" x86
यह हमारी स्क्रिप्ट के लिए XNA पुस्तकालयों, और सभी आवश्यक उपकरणों और बायनेरिज़ को खोजने में सक्षम होने के लिए है।
सामग्री परियोजना (.contentproj) पर MSBuild कार्य को कॉल करें:
msbuild / संपत्ति: XNAContentPipelineTargetPlatform = Windows / संपत्ति: XNAContentPipelineTargetProfile = पहुंच mygame.content / projectfile.contentproj
आप निर्दिष्ट विभिन्न प्लेटफार्मों / प्रोफाइल द्वारा गुणों को संशोधित कर सकते हैं। आप एक समय में अधिक प्लेटफार्मों के लिए सामग्री बनाने के लिए आगे भी जा सकते हैं (विंडोज फोन, एक्सबॉक्स 360 या विंडोज)। प्रोफ़ाइल हो सकती है: पहुंच या HiDef (http://msdn.microsoft.com/en-us/library/ff604995.aspx)
पुनरावर्ती फ़ोल्डर में आउटपुट की प्रतिलिपि बनाएँ जहाँ बायनेरिज़ + वास्तविक गेम भंडार पर संग्रहीत किया जाता है:
xcopy / d / y / i / e bin \ x86 \ Debug \ Content * .. \ game_output \ Content
झंडे पर जानकारी के लिए, आप कमांड प्रॉम्प्ट में आह्वान कर सकते हैं xcopy /?
:। महत्वपूर्ण हैं: /d
केवल संशोधित फ़ाइलों को कॉपी करने के लिए - यदि आपके पास कई संपत्तियां हैं, तो यह उपयोगी है कि वे पहले से मौजूद और अनमॉडिफाइड लोगों को बार-बार कॉपी न करें; /y
मौजूदा फ़ाइलों को स्वचालित रूप से अधिलेखित करने के लिए ताकि उन्हें एक नए संस्करण के साथ अपडेट किया जा सके। मैंने प्रयोग किया है xcopy
क्योंकि सामान्य copy
रूप से जहाँ तक मुझे पता है कि पुनरावर्ती फ़ोल्डर्स कॉपी नहीं कर सकते हैं - और शायद आप फ़ोल्डर्स और उप-फ़ोल्डर में सामग्री को संरचित कर रहे हैं। साथ ही, यह सामान्य copy
(विभिन्न झंडे के बहुत सारे) से बेहतर है ।
कॉल करें pause
इसलिए स्क्रिप्ट उपयोगकर्ता इनपुट की प्रतीक्षा करेगी। यह जाँचने के लिए उपयोगी है कि क्या बिल्ड ठीक था और कोई त्रुटि सामने नहीं आई थी।
अब, कलाकार (या कोई भी) जो सामग्री फ़ाइलों को संशोधित करता है, उसे केवल .cmd स्क्रिप्ट पर डबल क्लिक करने की आवश्यकता होती है और नई सामग्री का निर्माण और उत्पादन निर्देशिका में कॉपी किया जाएगा जहां कमिट की गई कलाकृतियां हैं, परीक्षण के लिए तैयार हैं।
हालाँकि, एक छोटी सी समस्या है, जिसके लिए आपको डेविड की पोस्ट के 1 बिंदु पर कमबैक करना होगा: यदि कलाकार फ़ाइलों के साथ जोड़ / हटाकर / हटाकर कंटेंट प्रोजेक्ट को संशोधित करना चाहते हैं, तो उन्हें ऐसा करना होगा विज़ुअल स्टूडियो में प्रोजेक्ट (या प्रोजेक्ट फ़ाइल को हाथ से संपादित करना, जो मुझे संदेह है कि कोई भी करेगा)। जैसा मैंने कहा, यह एक छोटी सी समस्या है, क्योंकि वे रिपॉजिटरी में सिर्फ नई फाइल कर सकते हैं, और आप, कोडर कंटेंट प्रोजेक्ट में उन्हें शामिल करेंगे जब कोड उन को संभालने के लिए किया जाता है।
इस विचार पर, Shawn Hargreaveas ने msbuild और कमांड लाइन से सामग्री परियोजनाओं के निर्माण के बारे में कुछ पोस्ट किया: http://blogs.msdn.com/b/shawnhar/archive/2006/11/07/build-it-ahead-of-time .aspx उनका समाधान एक नई फ़ाइल बनाना था, लेकिन मुझे लगता है कि यह पहले से मौजूद प्रोजेक्ट फ़ाइल का सीधे उपयोग करने के लिए आसान और अधिक रखरखाव योग्य है।
पुनश्च: लंबे पोस्ट xD के लिए क्षमा करें