विभिन्न प्लेटफार्मों के लिए गेम कैसे बनाए जाते हैं?


9

विभिन्न प्लेटफार्मों के लिए गेम कैसे बनाए जाते हैं?

उदाहरण के लिए, कॉल ऑफ़ ड्यूटी: मॉडर्न वारफेयर 3 PS3, Xbox 360, Wii और PC पर उपलब्ध है।

क्या वे पूरी तरह से बिना किसी सामान्य कोड के रिप्रोग्राम किए गए हैं? क्या कोई मध्यवर्ती कोड है?


3
आमतौर पर यह सभी C ++ में किया जाता है और प्लेटफ़ॉर्म-विशिष्ट सामान को कुछ वर्गों में फिर से जमा किया जाता है।
ashes999

जवाबों:


11

अधिकांश उत्पादन स्तर के खेल इंजन में हार्डवेयर एब्स्ट्रेक्शन लेयर के रूप में जाना जाता है। यह एक सामान्य एपीआई है जो गेम इंजन हार्डवेयर के साथ बात करने के लिए उपयोग कर सकता है ताकि पता चल सके कि कौन सा हार्डवेयर है। वे सिर्फ SoundManager.PlaySFX (SFX_ID) या पसंद करते हैं। ध्वनि प्रबंधक के नीचे हालांकि यह पता चल जाएगा कि कौन सा हार्डवेयर वास्तव में काम कर रहा है और ध्वनि प्रभाव प्राप्त करने के लिए उपयुक्त कॉल करें।

यह इंजन को अमूर्त की उस परत का उपयोग करके विकसित करने की अनुमति देता है ताकि यह किसी भी सिस्टम पर चल सके बशर्ते कि एपीआई उस हार्डवेयर के लिए प्रदान किया जाए जो अमूर्त से मेल खाता है। EDIT: जैसा कि जॉनथन ने उल्लेख किया है, प्रत्येक प्लेटफॉर्म के लिए एक एपीआई जिसे आप चलाना चाहते हैं, आवश्यक है। और ट्रेवर के बिंदु पर, जब एक उच्च मेमोरी सिस्टम से कम मेमोरी (मेरे लिए सबसे खराब स्थिति PS3 से पीएसपी तक) चलती थी, तो आपको विभिन्न हार्डवेयर सीमाओं से निपटना पड़ सकता है। मेरे लिए सौभाग्य से मुझे एक मंच के कारण पूरी प्रणाली को फिर से लिखना नहीं पड़ा है, लेकिन मुझे पैरों के कम से कम ऊपर ले जाने के लिए वस्तुओं के माध्यम से गुजरना और अनुकूलन करना पड़ा है।

चीजों का दूसरा पक्ष कला क्षेत्र में है जहां बनावट या मॉडल और इस तरह के संकल्प अलग हैं। गेम की परिसंपत्तियां एक विशिष्ट लक्ष्य की ओर बनाई जा सकती हैं, इसलिए पीसी को अपने ध्वनि प्रभावों के लिए अपनी wav फाइलें मिलती हैं, जबकि वे विशिष्ट स्वरूपों में बदल जाते हैं जो कि PS3 के समर्थन और पसंद करते हैं।

उम्मीद है की यह मदद करेगा।


1
मैं इस बात से जोड़ता हूँ कि ज्यादातर मामलों में, PC / PS3 / Xbox360 एक साझा कोडबेस साझा करेंगे, जबकि Wii / PS2 / PSP एक अलग कोडबेस साझा करेंगे। गेमबॉय के पास सभी के लिए एक अलग कोडबेस होगा, और iPhone / Android आमतौर पर एक कोडबेस साझा करेगा। ये ज्यादातर प्रसंस्करण शक्ति, उपलब्ध स्मृति और विभिन्न प्लेटफार्मों के ग्राफिक्स संकायों के व्यापक स्तर के कारण हैं। मुझे एक बार Xbox 360 से PS2 तक गेम को पोर्ट करना पड़ा; मूल कोड में से बहुत कम प्रक्रिया बची है, सिर्फ इसलिए कि यह माना जाता है कि उपयोग के लिए बहुत सारे और बहुत सारे रैम उपलब्ध थे; मुझे इसे कम मेमोरी का उपयोग करने के लिए फिर से लिखना पड़ा।
ट्रेवर पॉवेल

+1, आपने स्पष्ट रूप से उल्लेख नहीं किया है कि HAL प्लेटफार्मों के बीच भिन्न है (इसका कारण Psykocyber ने भी उत्तर दिया है) - शायद यह जोड़ें कि आपको प्रत्येक प्लेटफ़ॉर्म के लिए HAL की आवश्यकता है? यह भी कि एएनएसआई सी / ++ का उपयोग करना संभवतः एक आवश्यकता है क्योंकि आपको इसे पार करने की आवश्यकता है।
जोनाथन डिकिंसन

ट्रेवर: गेमबॉय? धिक्कार है, मैंने अतीत की यात्रा की होगी, बेहतर होगा कि मैं अपने टाइम मशीन में वापस आ

3

अन्य उत्तर आदर्श मामलों में चीजों को स्पष्ट करते हैं। अधिकांश कोड गेम के लिए सामान्य है, और हार्डवेयर / प्लेटफ़ॉर्म निर्भर भागों के लिए एक साफ अमूर्त परत का उपयोग किया जाता है।

हालाँकि, कई खेलों में एक आउटसोर्स कंपनी द्वारा किए गए पोर्ट होते हैं, और कोड डायवर्स में महत्वपूर्ण रूप से शामिल होते हैं। यह कंसोल के साथ विशेष रूप से सच है, लेकिन विंडोज़ से ओएसएक्स या लिनक्स के लिए भी सामान्य पोर्ट हैं।

कंसोल पर, हार्डवेयर अलग-अलग होता है जो अक्सर कोर रेंडरिंग के पूरे हिस्से (और शायद ही कभी अन्य सिस्टम) को पूरी तरह से फिर से लिखना चाहिए। पीसी पर आप डी 3 डी और ओपनजीएल पर सार जूट कर सकते हैं, क्योंकि ओएस एपीआई अलग-अलग होते हैं लेकिन सभी पीसी हार्डवेयर लगभग समान होते हैं।

कंसोल स्पेस पर, आप पा सकते हैं कि आपका सुपर कुशल भव्य रेंडरिंग इंजन एक अलग कंसोल पर सीधे पोर्ट करना असंभव है, क्योंकि GPU क्षमताएं बहुत अलग हैं और आपको 7 साल पाने के लिए प्रदर्शन के हर अंतिम प्रतिशत को निचोड़ना होगा। अपने आधुनिक खेल को चलाने के लिए पुराना हार्डवेयर। आप आसानी से ऐसे मामलों का पता लगा सकते हैं जहां लाइटिंग पास जो कि एक्सबॉक्स पर सबसे अच्छा काम करते हैं, वे PS3 पर बहुत धीमी गति से हैं, और जहां एक्सबॉक्स पर PS3 कुत्तों पर सबसे अच्छा दृष्टिकोण है। अन्य हार्डवेयर और प्लेटफ़ॉर्म अंतर (जैसे PS3 पर SPUs बनाम XBox के त्रि-कोर सीपीयू) में आपके एकमात्र प्लेटफ़ॉर्म-कोड कोड के रूप में एक सरल पतली हार्डवेयर एब्स्ट्रक्शन लेयर पर भरोसा करना बहुत मुश्किल है।

चूंकि प्रत्येक प्लेटफ़ॉर्म को इसे ठीक से उपयोग करने के लिए व्यापक मात्रा में विशेषज्ञता की आवश्यकता होती है, इसलिए गेम को अतिरिक्त प्लेटफ़ॉर्म पर लाने के लिए कई गेमों को एक विशेष आउटसोर्स पोर्टिंग कंपनी की आवश्यकता होती है। पीसी स्पेस में आप कभी-कभी एकल डेवलपर्स पा सकते हैं जो पोर्ट करते हैं (जैसे कि रयान "आइकुलस" गॉर्डन जो कई लिनक्स गेम पोर्ट करता है; सीधे फॉरवर्ड काम आमतौर पर, डी 3 डी को जीएल और विन 32 को पॉसिक्स / एसडीएल में बदलते हुए), जबकि कंसोल स्पेस में; सभी टीमों के साथ कंपनियां हैं जो बड़े खेल के बजाय बड़े पैमाने पर पोर्टिंग कार्य करती हैं।

कुछ प्लेटफार्मों के बंदरगाहों को लगभग पूर्ण पुनर्लेखन या परिसंपत्ति पुनर्निर्देशन की आवश्यकता होती है। उदाहरण के लिए कॉल ऑफ़ ड्यूटी के Wii पोर्ट्स जहां एक आउटसोर्स कंपनी द्वारा किए गए हैं, और सब कुछ - कला संपत्ति सहित - को Wii के बहुत सीमित हार्डवेयर की बाधाओं के भीतर फिट होने के लिए फिर से तैयार करना पड़ा। उदाहरण के लिए, Wii के पास शेड्स भी नहीं होते हैं, इसलिए केवल उसी इंजन और प्रभाव / सामग्रियों का पुन: उपयोग करना असंभव था, और सीमित मेमोरी और सीपीयू / जीपीयू के लिए छोटे बनावट और कम विवरण मॉडल, प्लस गेमप्ले की सीमाएं और इतने पर की आवश्यकता होती है। इसी तरह मोबाइल प्लेटफॉर्म के पोर्ट आमतौर पर पूरी तरह से फिर से लिखे जाते हैं, आमतौर पर किसी तीसरे पक्ष द्वारा।

नए इंजन प्लेटफॉर्म के बीच पोर्ट करना आसान बनाते हैं, लेकिन बड़े गेम को आमतौर पर अपने कोड के बड़े हिस्से को अपडेट करने की आवश्यकता होती है और अधिक सक्षम पीसी प्लेटफॉर्म और कंसोल से अधिक प्रतिबंधित प्लेटफार्मों में बदलने के लिए कई परिसंपत्तियों को फिर से करना पड़ता है।


2

जेम्स रिपीट केवल पीसी से संबंधित है न कि विशिष्ट प्लेटफार्मों पर कार्यान्वयन के लिए।
जबकि सभी इंजन गेम कोड के सबसे दूर के लिए प्लेटफॉर्म को अमूर्त करते हैं, कुछ भागों को प्रति प्लेटफॉर्म पर लिखना होता है। इसमें नेटवर्क, रेंडरिंग, ऑडियो, डिवाइस इनपुट और मुझे लगता है कि वीडियो आउटपुट सहित सभी I / O शामिल हैं।
Xbox और PS3 पर असत्य कहने के लिए रेंडरिंग कोड की तुलना करें। Xbox Xbox DirectX संस्करण का उपयोग करता है, जबकि PS3 libgcm (OpenGl लाइब्रेरी बहुत धीमी है) का उपयोग करता है। इसे थोड़ा सरल बनाने के लिए, सभी प्लेटफार्मों पर गेमप्ले प्रोग्रामर केवल एक "AudioSystem.PlaySound ( साउंडनेम )) देखते हैं, जबकि प्रत्येक प्लेटफ़ॉर्म के लिए वे आंतरिक रूप से प्लेटफ़ॉर्म एपीआई को साउंड आउटपुट के लिए कहते हैं।
अधिक प्रोग्रामिंग के लिए टाट्राड की टिप्पणी भी देखें।


1
यह वही है जो जेम्स ने कहा था, उन्होंने सिर्फ यह उल्लेख करने के लिए उपेक्षा की कि एचएएल प्रत्येक प्लेटफॉर्म के लिए अलग है।
जोनाथन डिकिंसन

मैंने वास्तव में उल्लेख किया था कि यह किसी भी प्रणाली पर चलेगा जिसके लिए एक एचएएल एपीआई प्रदान किया गया है, लेकिन मैंने इसे और अधिक स्पष्ट कर दिया है क्योंकि यह स्पष्ट रूप से भ्रम पैदा कर रहा था। इसके अलावा, आप पीसी पर किसी अन्य पीसी पर कोड को पोर्ट नहीं करते हैं जब तक कि आप ओएस को मैक या यूनिक्स सिस्टम की तरह पार नहीं कर रहे हैं। विंडोज़ वातावरण के लिए, जहां अधिकांश गेम चलते हैं, यह हार्डवेयर ड्राइवर है जो आपके लिए पहले से ही इसे संभालता है, आप ड्राइवर कॉल के माध्यम से एक डायरेक्टएक्स या ओपनजीएल डेटा बफर बनाते हैं और हार्डवेयर जानता है कि वहां से क्या करना है।
जेम्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.