विभिन्न प्लेटफार्मों के लिए गेम कैसे बनाए जाते हैं?
उदाहरण के लिए, कॉल ऑफ़ ड्यूटी: मॉडर्न वारफेयर 3 PS3, Xbox 360, Wii और PC पर उपलब्ध है।
क्या वे पूरी तरह से बिना किसी सामान्य कोड के रिप्रोग्राम किए गए हैं? क्या कोई मध्यवर्ती कोड है?
विभिन्न प्लेटफार्मों के लिए गेम कैसे बनाए जाते हैं?
उदाहरण के लिए, कॉल ऑफ़ ड्यूटी: मॉडर्न वारफेयर 3 PS3, Xbox 360, Wii और PC पर उपलब्ध है।
क्या वे पूरी तरह से बिना किसी सामान्य कोड के रिप्रोग्राम किए गए हैं? क्या कोई मध्यवर्ती कोड है?
जवाबों:
अधिकांश उत्पादन स्तर के खेल इंजन में हार्डवेयर एब्स्ट्रेक्शन लेयर के रूप में जाना जाता है। यह एक सामान्य एपीआई है जो गेम इंजन हार्डवेयर के साथ बात करने के लिए उपयोग कर सकता है ताकि पता चल सके कि कौन सा हार्डवेयर है। वे सिर्फ SoundManager.PlaySFX (SFX_ID) या पसंद करते हैं। ध्वनि प्रबंधक के नीचे हालांकि यह पता चल जाएगा कि कौन सा हार्डवेयर वास्तव में काम कर रहा है और ध्वनि प्रभाव प्राप्त करने के लिए उपयुक्त कॉल करें।
यह इंजन को अमूर्त की उस परत का उपयोग करके विकसित करने की अनुमति देता है ताकि यह किसी भी सिस्टम पर चल सके बशर्ते कि एपीआई उस हार्डवेयर के लिए प्रदान किया जाए जो अमूर्त से मेल खाता है। EDIT: जैसा कि जॉनथन ने उल्लेख किया है, प्रत्येक प्लेटफॉर्म के लिए एक एपीआई जिसे आप चलाना चाहते हैं, आवश्यक है। और ट्रेवर के बिंदु पर, जब एक उच्च मेमोरी सिस्टम से कम मेमोरी (मेरे लिए सबसे खराब स्थिति PS3 से पीएसपी तक) चलती थी, तो आपको विभिन्न हार्डवेयर सीमाओं से निपटना पड़ सकता है। मेरे लिए सौभाग्य से मुझे एक मंच के कारण पूरी प्रणाली को फिर से लिखना नहीं पड़ा है, लेकिन मुझे पैरों के कम से कम ऊपर ले जाने के लिए वस्तुओं के माध्यम से गुजरना और अनुकूलन करना पड़ा है।
चीजों का दूसरा पक्ष कला क्षेत्र में है जहां बनावट या मॉडल और इस तरह के संकल्प अलग हैं। गेम की परिसंपत्तियां एक विशिष्ट लक्ष्य की ओर बनाई जा सकती हैं, इसलिए पीसी को अपने ध्वनि प्रभावों के लिए अपनी wav फाइलें मिलती हैं, जबकि वे विशिष्ट स्वरूपों में बदल जाते हैं जो कि PS3 के समर्थन और पसंद करते हैं।
उम्मीद है की यह मदद करेगा।
अन्य उत्तर आदर्श मामलों में चीजों को स्पष्ट करते हैं। अधिकांश कोड गेम के लिए सामान्य है, और हार्डवेयर / प्लेटफ़ॉर्म निर्भर भागों के लिए एक साफ अमूर्त परत का उपयोग किया जाता है।
हालाँकि, कई खेलों में एक आउटसोर्स कंपनी द्वारा किए गए पोर्ट होते हैं, और कोड डायवर्स में महत्वपूर्ण रूप से शामिल होते हैं। यह कंसोल के साथ विशेष रूप से सच है, लेकिन विंडोज़ से ओएसएक्स या लिनक्स के लिए भी सामान्य पोर्ट हैं।
कंसोल पर, हार्डवेयर अलग-अलग होता है जो अक्सर कोर रेंडरिंग के पूरे हिस्से (और शायद ही कभी अन्य सिस्टम) को पूरी तरह से फिर से लिखना चाहिए। पीसी पर आप डी 3 डी और ओपनजीएल पर सार जूट कर सकते हैं, क्योंकि ओएस एपीआई अलग-अलग होते हैं लेकिन सभी पीसी हार्डवेयर लगभग समान होते हैं।
कंसोल स्पेस पर, आप पा सकते हैं कि आपका सुपर कुशल भव्य रेंडरिंग इंजन एक अलग कंसोल पर सीधे पोर्ट करना असंभव है, क्योंकि GPU क्षमताएं बहुत अलग हैं और आपको 7 साल पाने के लिए प्रदर्शन के हर अंतिम प्रतिशत को निचोड़ना होगा। अपने आधुनिक खेल को चलाने के लिए पुराना हार्डवेयर। आप आसानी से ऐसे मामलों का पता लगा सकते हैं जहां लाइटिंग पास जो कि एक्सबॉक्स पर सबसे अच्छा काम करते हैं, वे PS3 पर बहुत धीमी गति से हैं, और जहां एक्सबॉक्स पर PS3 कुत्तों पर सबसे अच्छा दृष्टिकोण है। अन्य हार्डवेयर और प्लेटफ़ॉर्म अंतर (जैसे PS3 पर SPUs बनाम XBox के त्रि-कोर सीपीयू) में आपके एकमात्र प्लेटफ़ॉर्म-कोड कोड के रूप में एक सरल पतली हार्डवेयर एब्स्ट्रक्शन लेयर पर भरोसा करना बहुत मुश्किल है।
चूंकि प्रत्येक प्लेटफ़ॉर्म को इसे ठीक से उपयोग करने के लिए व्यापक मात्रा में विशेषज्ञता की आवश्यकता होती है, इसलिए गेम को अतिरिक्त प्लेटफ़ॉर्म पर लाने के लिए कई गेमों को एक विशेष आउटसोर्स पोर्टिंग कंपनी की आवश्यकता होती है। पीसी स्पेस में आप कभी-कभी एकल डेवलपर्स पा सकते हैं जो पोर्ट करते हैं (जैसे कि रयान "आइकुलस" गॉर्डन जो कई लिनक्स गेम पोर्ट करता है; सीधे फॉरवर्ड काम आमतौर पर, डी 3 डी को जीएल और विन 32 को पॉसिक्स / एसडीएल में बदलते हुए), जबकि कंसोल स्पेस में; सभी टीमों के साथ कंपनियां हैं जो बड़े खेल के बजाय बड़े पैमाने पर पोर्टिंग कार्य करती हैं।
कुछ प्लेटफार्मों के बंदरगाहों को लगभग पूर्ण पुनर्लेखन या परिसंपत्ति पुनर्निर्देशन की आवश्यकता होती है। उदाहरण के लिए कॉल ऑफ़ ड्यूटी के Wii पोर्ट्स जहां एक आउटसोर्स कंपनी द्वारा किए गए हैं, और सब कुछ - कला संपत्ति सहित - को Wii के बहुत सीमित हार्डवेयर की बाधाओं के भीतर फिट होने के लिए फिर से तैयार करना पड़ा। उदाहरण के लिए, Wii के पास शेड्स भी नहीं होते हैं, इसलिए केवल उसी इंजन और प्रभाव / सामग्रियों का पुन: उपयोग करना असंभव था, और सीमित मेमोरी और सीपीयू / जीपीयू के लिए छोटे बनावट और कम विवरण मॉडल, प्लस गेमप्ले की सीमाएं और इतने पर की आवश्यकता होती है। इसी तरह मोबाइल प्लेटफॉर्म के पोर्ट आमतौर पर पूरी तरह से फिर से लिखे जाते हैं, आमतौर पर किसी तीसरे पक्ष द्वारा।
नए इंजन प्लेटफॉर्म के बीच पोर्ट करना आसान बनाते हैं, लेकिन बड़े गेम को आमतौर पर अपने कोड के बड़े हिस्से को अपडेट करने की आवश्यकता होती है और अधिक सक्षम पीसी प्लेटफॉर्म और कंसोल से अधिक प्रतिबंधित प्लेटफार्मों में बदलने के लिए कई परिसंपत्तियों को फिर से करना पड़ता है।
जेम्स रिपीट केवल पीसी से संबंधित है न कि विशिष्ट प्लेटफार्मों पर कार्यान्वयन के लिए।
जबकि सभी इंजन गेम कोड के सबसे दूर के लिए प्लेटफॉर्म को अमूर्त करते हैं, कुछ भागों को प्रति प्लेटफॉर्म पर लिखना होता है। इसमें नेटवर्क, रेंडरिंग, ऑडियो, डिवाइस इनपुट और मुझे लगता है कि वीडियो आउटपुट सहित सभी I / O शामिल हैं।
Xbox और PS3 पर असत्य कहने के लिए रेंडरिंग कोड की तुलना करें। Xbox Xbox DirectX संस्करण का उपयोग करता है, जबकि PS3 libgcm (OpenGl लाइब्रेरी बहुत धीमी है) का उपयोग करता है। इसे थोड़ा सरल बनाने के लिए, सभी प्लेटफार्मों पर गेमप्ले प्रोग्रामर केवल एक "AudioSystem.PlaySound ( साउंडनेम )) देखते हैं, जबकि प्रत्येक प्लेटफ़ॉर्म के लिए वे आंतरिक रूप से प्लेटफ़ॉर्म एपीआई को साउंड आउटपुट के लिए कहते हैं।
अधिक प्रोग्रामिंग के लिए टाट्राड की टिप्पणी भी देखें।