गेम डेवलपर विंडोज को क्यों पसंद करते हैं?


396

क्या यह है कि ओपनएक्स के मुकाबले डायरेक्टएक्स आसान या बेहतर है, भले ही ओपनजीएल प्लेटफ़ॉर्म है? हम लिनक्स के लिए वास्तविक शक्तिशाली गेम क्यों नहीं देखते हैं जैसे कि विंडोज के लिए हैं?


55
गलत आधार - जहां सबूत है कि खेल डेवलपर्स खिड़कियां पसंद करते हैं? मुझे लगता है कि @ user17674 के पास यह अधिक सटीक था - वे प्लेटफार्मों के लिए विकसित करना चाहते हैं ताकि वे अधिक बेच सकें और अधिक पैसा कमा सकें :-)
रोरी अलसोप

258
वायरस डेवलपर भी विंडोज पसंद करते हैं। यह उपयोगकर्ता आधार के बारे में है।
सीजरगॉन

4
क्यों विंडोज प्रोग्रामर OpenGL पर DirectX पसंद करते हैं शायद ऐतिहासिक रूप से एक अधिक दिलचस्प सवाल है। जैसा कि नीचे दिए गए कार्मैक साक्षात्कार के लिंक से संकेत मिलता है, डीएक्स का उपयोग किया जाता था। यह जानना दिलचस्प होगा कि यह कैसे एमएस के लिए पर्याप्त उपयोगकर्ता रखता था जब तक कि Xbox और आधुनिक पुनर्लेखन ने इसे और अधिक लोकप्रिय नहीं बनाया। या हो सकता है कि यह हमेशा बहुत अच्छा था इसलिए लोग इसके साथ फंस गए।
कोडेक्सआर्केनम

100
लोग बैंकों को क्यों लूटते हैं? क्योंकि पैसा जहां है
ग्रैंडमास्टरबी

7
@ केसरगॉन: यह न केवल उपयोगकर्ता आधार के कारण है, बल्कि विकास में आसानी के लिए भी है।
जियोर्जियो

जवाबों:


1155

यहाँ बहुत से उत्तर वास्तव में बहुत अच्छे हैं। लेकिन ओपनजीएल और डायरेक्ट 3 डी (डी 3 डी) मुद्दे को संभवतः संबोधित किया जाना चाहिए। और यह आवश्यक है ... एक इतिहास सबक।

और इससे पहले कि हम शुरू करें, मैं OpenGL के बारे में कहीं ज्यादा जानता हूं जितना कि मैं Direct3D के बारे में करता हूं । मैंने अपने जीवन में कभी भी डी 3 डी कोड की एक पंक्ति नहीं लिखी है, और मैंने ओपनजीएल पर ट्यूटोरियल लिखा है। तो मैं जो कहने वाला हूं वह पूर्वाग्रह का सवाल नहीं है। यह केवल इतिहास की बात है।

संघर्ष का जन्म

एक दिन, 90 के दशक की शुरुआत में, Microsoft ने चारों ओर देखा। उन्होंने एसएनईएस और सेगा जेनेसिस को जबरदस्त देखा, बहुत सारे एक्शन गेम और ऐसे चल रहे थे। और उन्होंने डॉस को देखा । डेवलपर्स डीओएस गेम को सांत्वना खेलों की तरह कोडित करते हैं: धातु के लिए प्रत्यक्ष। हालांकि, कंसोल के विपरीत, जहां एक डेवलपर जिसने एसएनईएस गेम बनाया था, वह जानता था कि उपयोगकर्ता के पास क्या हार्डवेयर होगा, डॉस डेवलपर्स को कई संभावित कॉन्फ़िगरेशन के लिए लिखना होगा। और यह बजाय यह लगता है कठिन है।

और माइक्रोसॉफ्ट के पास एक बड़ी समस्या थी: विंडोज। देखें, Windows DOS के विपरीत हार्डवेयर का मालिक होना चाहता था, जो डेवलपर्स को बहुत कुछ करने देता है। अनुप्रयोगों के बीच सहयोग करने के लिए हार्डवेयर का स्वामित्व आवश्यक है। सहयोग वास्तव में क्या खेल डेवलपर्स से नफरत है क्योंकि यह कीमती हार्डवेयर संसाधनों को लेता है जो वे भयानक होने के लिए उपयोग कर सकते हैं।

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

इस प्रकार, DirectX का जन्म हुआ।

3 डी त्वरक कुछ महीनों बाद पैदा हुए थे। और माइक्रोसॉफ्ट मुसीबत के एक स्थान पर भाग गया। देखें, डायरेक्टड्रॉ, डायरेक्टएक्स के ग्राफिक्स घटक, केवल 2 डी ग्राफिक्स से निपटा गया: ग्राफिक्स मेमोरी आवंटित करना और मेमोरी के विभिन्न आवंटित वर्गों के बीच बिट-ब्लिट्स करना।

इसलिए Microsoft ने थोड़ा सा मिडलवेयर खरीदा और इसे Direct3D वर्जन 3 में रखा। इसे सार्वभौमिक रूप से संशोधित किया गया था । और अच्छे कारण के साथ; डी 3 डी वी 3 कोड को देखना वाचा के आर्क में घूरने जैसा है।

आईडी सॉफ्टवेयर में ओल्ड जॉन कार्मैक ने उस कूड़ेदान पर एक नज़र डाली और कहा, "पेंच!" और एक और एपीआई की ओर लिखने का फैसला किया: ओपनजीएल।

देखें, कई प्रमुख-जानवरों का एक और हिस्सा जो माइक्रोसॉफ्ट विंडोज के लिए ओएनजीएल कार्यान्वयन पर एसजीआई के साथ काम करने में व्यस्त था। यहाँ विचार ठेठ जीएल अनुप्रयोगों के डेवलपर्स को अदालत में था: वर्कस्टेशन ऐप। सीएडी उपकरण, मॉडलिंग, उस तरह की चीज। खेल उनके दिमाग की सबसे दूर की चीज थे। यह मुख्य रूप से एक विंडोज़ एनटी चीज़ थी, लेकिन माइक्रोसॉफ्ट ने इसे Win95 में भी जोड़ने का फैसला किया।

विंडोज के लिए वर्कस्टेशन डेवलपर्स को लुभाने के एक तरीके के रूप में, माइक्रोसॉफ्ट ने इन नए 3 डी ग्राफिक्स कार्ड तक पहुंच के साथ उन्हें रिश्वत देने की कोशिश करने का फैसला किया। Microsoft ने इंस्टाल करने योग्य क्लाइंट ड्राइवर प्रोटोकॉल लागू किया: एक ग्राफिक्स कार्ड निर्माता Microsoft के सॉफ़्टवेयर OpenGL कार्यान्वयन को हार्डवेयर-आधारित के साथ ओवरराइड कर सकता है। यदि कोई उपलब्ध था तो कोड स्वचालित रूप से एक हार्डवेयर OpenGL कार्यान्वयन का उपयोग कर सकता है।

शुरुआती दिनों में, उपभोक्ता-स्तरीय वीडियोकॉर्ड के पास OpenGL के लिए समर्थन नहीं था। यह अपने SGI कार्य केंद्र पर खुले (GLQuake) क्वेक को पोर्ट करने से कार्मैक को रोक नहीं पाया। जैसा कि हम GLQuake readme से पढ़ सकते हैं:

सैद्धांतिक रूप से, किसी भी अनुरूप OpenGL पर ग्लोकेक चलेगा जो बनावट ऑब्जेक्ट एक्सटेंशन का समर्थन करता है, लेकिन जब तक कि यह बहुत शक्तिशाली हार्डवेयर नहीं है जो हर चीज की जरूरत को तेज करता है, गेम प्ले स्वीकार्य नहीं होगा। यदि इसे किसी सॉफ्टवेयर इम्यूलेशन रास्तों से गुजरना पड़ता है, तो प्रदर्शन की संभावना एक फ्रेम प्रति सेकंड के तहत होगी।

इस समय (मार्च '97), एकमात्र मानक ओपेंगल हार्डवेयर जो चमक को यथोचित रूप से निभा सकता है, एक इंटरग्राफ रियलिज़्म है, जो एक बहुत महंगा कार्ड है। 3Dlabs अपने प्रदर्शन में काफी सुधार कर रहा है, लेकिन उपलब्ध ड्राइवरों के साथ यह अभी भी खेलने के लिए पर्याप्त नहीं है। ग्लिंट और पेर्मेडिया बोर्ड के कुछ वर्तमान 3 डीलेब ड्राइवर भी पूर्ण स्क्रीन रन से बाहर निकलते समय एनटी को क्रैश कर सकते हैं, इसलिए मैं 3Dlabs हार्डवेयर पर ग्लॉक को चलाने की सलाह नहीं देता।

3dfx ने एक opengl32.dll प्रदान किया है जो हर चीज़ की ज़रूरतों को लागू करता है, लेकिन यह पूर्ण opengl कार्यान्वयन नहीं है। अन्य ओपेंगल एप्लिकेशन इसके साथ काम करने की बहुत संभावना नहीं है, इसलिए इसे मूल रूप से एक "ग्लैक्वे ड्राइवर" मानते हैं।

यह मिनीजीएल ड्राइवरों का जन्म था। ये पूर्ण रूप से OpenGL कार्यान्वयन में विकसित हुए, क्योंकि हार्डवेयर काफी शक्तिशाली हो गया, ताकि हार्डवेयर में अधिकांश OpenGL कार्यक्षमता कार्यान्वित की जा सके। एनवीडिया एक पूर्ण OpenGL कार्यान्वयन की पेशकश करने वाला पहला था। कई अन्य विक्रेताओं ने संघर्ष किया, जो एक कारण है कि डेवलपर्स डायरेक्ट 3 डी को पसंद करते हैं: वे हार्डवेयर की एक विस्तृत श्रृंखला पर संगत थे। आखिरकार केवल एनवीडिया और एटीआई (अब एएमडी) ही रहे, और दोनों में एक अच्छा ओपनजीएल कार्यान्वयन था।

ओपनग्लास आरोही

इस प्रकार चरण निर्धारित होता है: Direct3D बनाम OpenGL। यह वास्तव में एक अद्भुत कहानी है, यह देखते हुए कि डी 3 डी वी 3 कितना बुरा था।

OpenGL आर्किटेक्चरल रिव्यू बोर्ड (ARB) OpenGL को बनाए रखने के लिए जिम्मेदार संगठन है। वे कई एक्सटेंशन जारी करते हैं, एक्सटेंशन रिपॉजिटरी बनाए रखते हैं और एपीआई के नए संस्करण बनाते हैं। एआरबी कई ग्राफिक्स उद्योग के खिलाड़ियों के साथ-साथ कुछ ओएस निर्माताओं से बनी एक समिति है। Apple और Microsoft कई बार ARB के सदस्य रहे हैं।

Voodoo2 के साथ 3Dfx आता है। यह पहला हार्डवेयर है जो मल्टीटेक्स्टिंग कर सकता है, जो कि कुछ ऐसा है जो OpenGL पहले नहीं कर सकता था। जबकि 3Dfx OpenGL, NVIDIA, अगले मल्टीटेक्स्चर ग्राफिक्स चिप (TNT1) के निर्माताओं के खिलाफ था, उसे बहुत पसंद आया। इसलिए ARB ने एक एक्सटेंशन जारी किया: GL_ARB_multitexture, जो मल्टीटेक्स्चर तक पहुंच की अनुमति देगा।

इस बीच, Direct3D v5 बाहर आता है। अब, डी 3 डी एक वास्तविक एपीआई बन गया है , इसके बजाय एक बिल्ली उल्टी कर सकती है। समस्या? कोई बहुरूपिया नहीं।

उफ़।

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

इस प्रकार डी 3 डी को एक प्रतिपूर्ति दी गई।

समय गुजरता है और NVIDIA GeForce 256 (GeForce GT-250; बहुत पहले GeForce नहीं) को चित्रित करता है, अगले दो वर्षों के लिए ग्राफिक्स कार्ड में बहुत अधिक समाप्त होने वाली प्रतियोगिता। मुख्य विक्रय बिंदु हार्डवेयर में वर्टेक्स ट्रांसफॉर्म और लाइटिंग (T & L) करने की क्षमता है। इतना ही नहीं, एनवीआईडीआईएल ओपनगैल को इतना पसंद करता था कि उनका टीएंडएल इंजन प्रभावी रूप से ओपनजीएल था । लगभग शाब्दिक रूप से; जैसा कि मैं समझता हूं, उनके कुछ रजिस्टर वास्तव में ओपनजीएल एन्यूमरेटर्स को सीधे मूल्यों के रूप में लेते हैं।

Direct3D v6 बाहर आता है। Multitexture at last but ... कोई हार्डवेयर T & L नहीं। OpenGL में हमेशा T & L पाइपलाइन थी, जबकि 256 से पहले इसे सॉफ्टवेयर में लागू किया गया था। इसलिए NVIDIA के लिए अपने सॉफ़्टवेयर कार्यान्वयन को केवल हार्डवेयर समाधान में परिवर्तित करना बहुत आसान था। यह D3D v7 तक नहीं होगा जब तक कि D3D के पास आखिरकार हार्डवेयर T & L सपोर्ट न हो।

डॉन ऑफ शेड्स, ट्विलाइट ऑफ ओपनगेल

फिर, GeForce 3 बाहर आया। और एक ही समय में बहुत सारी चीजें हुईं।

Microsoft ने तय किया था कि वे फिर से देर नहीं करेंगे। इसलिए बजाय यह देखने के कि एनवीआईडीआईए क्या कर रहा था और फिर इस तथ्य के बाद इसकी नकल करते हुए, उन्होंने उनके पास जाने और उनसे बात करने की आश्चर्यजनक स्थिति ले ली। और फिर उन्हें प्यार हो गया और साथ में थोड़ा सांत्वना मिली।

बाद में एक गड़बड़ तलाक हुआ। लेकिन वह दूसरी बार है।

पीसी के लिए इसका मतलब यह था कि GeForce 3 D3D v8 के साथ एक साथ निकला था। और यह देखना मुश्किल नहीं है कि GeForce 3 ने D3D 8 के शेड्स को कैसे प्रभावित किया। Shader Model 1.0 के पिक्सेल शेड्स NVIDIA के हार्डवेयर के लिए बेहद विशिष्ट थे । एनवीआईडीआईए के हार्डवेयर को अमूर्त करने का कोई प्रयास नहीं किया गया था; SM 1.0 जो GeForce 3 किया था, वह बस था।

जब ATI ने Radeon 8500 के साथ प्रदर्शन ग्राफिक्स कार्ड की दौड़ में कूदना शुरू किया, तो एक समस्या थी। 8500 की पिक्सेल प्रसंस्करण पाइपलाइन एनवीआईडीआईए के सामान से अधिक शक्तिशाली थी। इसलिए Microsoft ने Shader Model 1.1 जारी किया, जो मूल रूप से "जो भी 8500 करता है।"

यह D3D की ओर से विफलता की तरह लग सकता है। लेकिन विफलता और सफलता डिग्री के मामले हैं। और एपिक -लैंड में महाकाव्य की विफलता हो रही थी।

NVIDIA ने ओपनजीएल को पसंद किया, इसलिए जब GeForce 3 हिट हुआ, तो उन्होंने ओपनजीएल एक्सटेंशन का एक स्लीव जारी किया। मालिकाना OpenGL एक्सटेंशन: केवल NVIDIA। स्वाभाविक रूप से, जब 8500 दिखा, तो यह उनमें से किसी का भी उपयोग नहीं कर सका।

देखें, कम से कम डी 3 डी 8 भूमि में, आप अपने एसएम 1.0 शेड्स को एटीआई हार्डवेयर पर चला सकते हैं। ज़रूर, आपको 8500 की ठंडक का लाभ उठाने के लिए नए शेड्स लिखने थे, लेकिन कम से कम आपके कोड ने काम किया

आदेश के shaders रखने के लिए किसी भी ओपन में Radeon 8500 पर तरह, अति ओपन एक्सटेंशन के एक नंबर लिखना पड़ा। मालिकाना OpenGL एक्सटेंशन: ATI- केवल। तो आप एक NVIDIA codepath और एक अति कोडपैथ की जरूरत है, बस सब पर shaders है

अब, आप पूछ सकते हैं कि, "OpenGL ARB कहाँ था, जिसका काम OpenGL को चालू रखना था?" जहां कई समितियां अक्सर समाप्त हो जाती हैं: मूर्ख होना।

देखें, मैंने ऊपर ARB_multitexture का उल्लेख किया है क्योंकि यह इस सब में गहराई से कारक है। एआरबी लग रहा था (बाहरी व्यक्ति के दृष्टिकोण से) पूरी तरह से shaders के विचार से बचना चाहते हैं। उन्हें लगा कि अगर वे फिक्स्ड-फंक्शन पाइपलाइन पर पर्याप्त कॉन्फ़िगरेशन को थप्पड़ मारते हैं, तो वे एक shader पाइपलाइन की क्षमता के बराबर हो सकते हैं।

इसलिए ARB ने एक्सटेंशन के बाद एक्सटेंशन जारी किया। शब्द "बुनावट_नव" के साथ हर विस्तार अभी तक इस उम्र बढ़ने के डिजाइन को पैच करने का एक और प्रयास था। रजिस्ट्री की जाँच करें: ARB और EXT एक्सटेंशन के बीच, इनमें से आठ एक्सटेंशन किए गए थे। कई को OpenGL कोर संस्करणों में पदोन्नत किया गया था।

Microsoft इस समय ARB का एक हिस्सा था; वे D3D 9 हिट समय के आसपास छोड़ दिया। इसलिए यह पूरी तरह से संभव है कि वे किसी तरह से ओपनजीएल को तोड़फोड़ करने के लिए काम कर रहे थे। मुझे व्यक्तिगत रूप से इस सिद्धांत पर दो कारणों से संदेह है। एक, उन्हें ऐसा करने के लिए अन्य एआरबी सदस्यों से मदद लेनी होगी, क्योंकि प्रत्येक सदस्य को केवल एक वोट मिलता है। और सबसे महत्वपूर्ण बात, एआरबी को चीजों को पेंच करने के लिए माइक्रोसॉफ्ट की मदद की आवश्यकता नहीं थी। हम इसके और सबूत देखेंगे।

आखिरकार एआरबी और एवीआई (दोनों सक्रिय सदस्यों) से खतरे में पड़ने वाले एआरबी ने आखिरकार वास्तविक विधानसभा-शैली के शेड प्रदान करने के लिए अपने सिर को लंबे समय तक बाहर खींच लिया।

कुछ बेवकूफ भी चाहिए?

हार्डवेयर टी एंड एल। कुछ ओपनगेल पहले था । खैर, यह दिलचस्प है। हार्डवेयर टी एंड एल से अधिकतम संभव प्रदर्शन प्राप्त करने के लिए, आपको GPU पर अपने शीर्ष डेटा को संग्रहीत करने की आवश्यकता है। आखिरकार, यह GPU है जो वास्तव में आपके शीर्ष डेटा का उपयोग करना चाहता है।

डी 3 डी वी 7 में, माइक्रोसॉफ्ट ने वर्टेक्स बफर की अवधारणा पेश की। इन्हें वर्टिकल डेटा स्टोर करने के लिए GPU मेमोरी के स्वैट्स आवंटित किए जाते हैं।

जानना चाहते हैं कि ओपनजीएल को इसके बराबर कब मिला? ओह, NVIDIA, सभी चीजों का प्रेमी होने के नाते OpenGL (इसलिए जब तक वे मालिकाना NVIDIA एक्सटेंशन हैं), GeForce 256 पहली हिट होने पर शीर्ष सरणी रेंज एक्सटेंशन जारी किया। लेकिन एआरबी ने कब समान कार्यक्षमता प्रदान करने का निर्णय लिया?

दो साल बाद । यह वे शीर्ष और टुकड़ा shaders (D3D भाषा में पिक्सेल) को मंजूरी देने के बाद किया गया था । GPU स्मृति में वर्टेक्स डेटा संग्रहीत करने के लिए क्रॉस-प्लेटफ़ॉर्म समाधान विकसित करने में ARB को कितना समय लगा। फिर से, कुछ ऐसा जो हार्डवेयर T & L को अधिकतम प्रदर्शन प्राप्त करने की आवश्यकता है।

एक भाषा सभी को बर्बाद करने के लिए

तो, OpenGL विकास पर्यावरण एक समय के लिए खंडित था। कोई क्रॉस-हार्डवेयर शेड्स नहीं, कोई क्रॉस-हार्डवेयर GPU वर्टेक्स स्टोरेज नहीं है, जबकि डी 3 डी उपयोगकर्ताओं ने दोनों का आनंद लिया। क्या यह खराब हो सकता है?

आप ... आप ऐसा कह सकते हैं। 3 डी लैब्स दर्ज करें ।

वे कौन हैं, आप पूछ सकते हैं? वे एक ख़राब कंपनी हैं, जिन्हें मैं ओपनगेल का सच्चा हत्यारा मानता हूँ। निश्चित रूप से, एआरबी की सामान्य अशुद्धता ने ओपनजीएल को असुरक्षित बना दिया जब उसे डी 3 डी का मालिक होना चाहिए था। लेकिन 3 डी लैब्स शायद ओपनगेल के वर्तमान बाजार राज्य के लिए मेरे दिमाग का एकमात्र सबसे बड़ा कारण है। संभवतः वे ऐसा करने के लिए क्या कर सकते थे?

उन्होंने ओपनजीएल शेडिंग लैंग्वेज डिजाइन की।

देखें, 3D लैब्स एक मरने वाली कंपनी थी। वर्कस्टेशन मार्केट पर एनवीआईडीआईए के बढ़ते दबाव से उनके महंगे जीपीयू हाशिए पर जा रहे थे। और NVIDIA के विपरीत, 3 डी लैब्स की मुख्यधारा के बाजार में कोई उपस्थिति नहीं थी; यदि NVIDIA जीता, तो वे मर गए।

जो उन्होंने किया।

इसलिए, एक ऐसी दुनिया में प्रासंगिक बने रहने के लिए जो अपने उत्पादों को नहीं चाहती थी, 3 डी लैब्स ने गेम डेवलपर कॉन्फ्रेंस में कुछ ऐसी चीजों के लिए प्रस्तुतिकरण दिखाया जो उन्होंने "ओपनजीएल 2.0" कहा था। यह OpenGL API का पूर्ण, स्क्रैच रीराइट से होगा। और यह समझ में आता है; एक था बहुत समय में ओपन के एपीआई में cruft के (ध्यान दें: कि cruft अभी भी मौजूद है)। बस बनावट और लोडिंग के काम को कैसे देखें; यह अर्ध-रहस्यमय है।

उनके प्रस्ताव का एक हिस्सा छायांकन भाषा था। सहज रूप में। हालांकि, वर्तमान क्रॉस-प्लेटफॉर्म एआरबी एक्सटेंशन के विपरीत, उनकी छायांकन भाषा "उच्च-स्तरीय" थी (छायांकन भाषा के लिए सी उच्च स्तर है। हां, वास्तव में)।

अब, Microsoft अपनी उच्च-स्तरीय छायांकन भाषा पर काम कर रहा था। जिसे वे सभी Microsoft की सामूहिक कल्पना में कहते हैं ... उच्च स्तरीय छायांकन भाषा (HLSL)। लेकिन उनका भाषाओं के लिए मौलिक रूप से अलग दृष्टिकोण था।

3D लैब्स की shader भाषा के साथ सबसे बड़ा मुद्दा यह था कि यह बिल्ट-इन थी। देखें, एचएलएसएल माइक्रोसॉफ्ट द्वारा परिभाषित एक भाषा थी। उन्होंने इसके लिए एक कंपाइलर जारी किया, और इसने Shader Model 2.0 (या बाद में shader मॉडल) असेंबली कोड तैयार किया, जिसे आप D3D में फीड करेंगे। डी 3 डी वी 9 दिनों में, एचएलएसएल को सीधे डी 3 डी द्वारा स्पर्श नहीं किया गया था। यह एक अच्छा अमूर्त था, लेकिन यह पूरी तरह से वैकल्पिक था। और एक डेवलपर को हमेशा कंपाइलर के पीछे जाने और अधिकतम प्रदर्शन के लिए आउटपुट को ट्वीक करने का अवसर मिला।

3 डी लैब्स भाषा में कोई भी नहीं था । आपने ड्राइवर को सी-लाइक भाषा दी, और उसने एक शेडर का निर्माण किया। कहानी का अंत। असेम्बली शेडर नहीं, कुछ ऐसा नहीं जिसे आप कुछ और खिलाएं। वास्तविक ओपनग्ल वस्तु एक शेडर का प्रतिनिधित्व करती है।

इसका मतलब यह है कि OpenGL उपयोगकर्ता उन डेवलपर्स की योनि के लिए खुले थे, जो केवल असेंबली जैसी भाषाओं को संकलित करने का काम कर रहे थे। संकलक कीड़े नवगठित OpenGL छायांकन भाषा (GLSL) में बड़े पैमाने पर भाग गए। क्या बुरा है, अगर आप कई प्लेटफार्मों पर सही तरीके से संकलित करने के लिए एक shader प्राप्त करने में कामयाब रहे (कोई मतलब नहीं है), तो आप अभी भी दिन के ऑप्टिमाइज़र के अधीन थे । जो उतने इष्टतम नहीं थे जितना वे हो सकते हैं।

जबकि GLSL में यह सबसे बड़ा दोष था, यह एकमात्र दोष नहीं था। द्वारा अब तक

डी 3 डी में, और ओपनजीएल में पुरानी विधानसभा भाषाओं में, आप शीर्ष और टुकड़ा (पिक्सेल) शेड्स को मिला सकते हैं और मैच कर सकते हैं। जब तक वे एक ही इंटरफ़ेस के साथ संचार करते हैं, तब तक आप किसी भी संगत टुकड़ा shader के साथ किसी भी शीर्ष shader का उपयोग कर सकते हैं। और असंगति के स्तर भी थे जिन्हें वे स्वीकार कर सकते थे; एक शीर्ष shader एक उत्पादन लिख सकता है कि टुकड़ा shader पढ़ा नहीं था। इत्यादि।

GLSL में से कोई भी नहीं था। 3 डी लैब्स को एक "प्रोग्राम ऑब्जेक्ट" कहा जाता है, जिसमें वर्टेक्स और टुकड़ा शेड्स एक साथ जुड़े हुए थे। इसलिए यदि आप वर्टेक्स और टुकड़ा कार्यक्रम साझा करना चाहते हैं, तो आपको कई प्रोग्राम ऑब्जेक्ट बनाने होंगे। और इससे दूसरी सबसे बड़ी समस्या खड़ी हो गई।

देखें, 3 डी लैब्स ने सोचा कि वे चतुर थे। वे CSL / C ++ पर GLSL के संकलन मॉडल पर आधारित हैं। आप एक .c या .cpp लेते हैं और उसे एक ऑब्जेक्ट फ़ाइल में संकलित करते हैं। फिर आप एक या एक से अधिक ऑब्जेक्ट फ़ाइलें लेते हैं और उन्हें एक प्रोग्राम में लिंक करते हैं। तो यह है कि GLSL कैसे संकलित करता है: आप अपने shader (वर्टेक्स या टुकड़ा) को shader ऑब्जेक्ट में संकलित करते हैं। फिर आप उन शेडर ऑब्जेक्ट्स को एक प्रोग्राम ऑब्जेक्ट में डालते हैं, और उन्हें एक साथ जोड़कर अपना वास्तविक प्रोग्राम बनाते हैं।

हालांकि इसने "लाइब्रेरी" शेड्स जैसे संभावित शांत विचारों की अनुमति दी, जिसमें अतिरिक्त कोड थे जो मुख्य शेड्स कह सकते थे, व्यवहार में इसका मतलब यह था कि शेड्स दो बार संकलित किए गए थे । एक बार संकलन चरण में और एक बार लिंकिंग चरण में। विशेष रूप से NVIDIA के संकलक को मूल रूप से दो बार संकलन चलाने के लिए जाना जाता था। इसने किसी प्रकार का ऑब्जेक्ट कोड मध्यस्थ नहीं बनाया; यह सिर्फ एक बार संकलित किया और उत्तर को फेंक दिया, फिर लिंक समय पर फिर से संकलित किया।

तो भले ही आप अपने वर्टेक्स शैडर को दो अलग-अलग टुकड़े शेड से जोड़ना चाहते हैं, आपको डी 3 डी की तुलना में बहुत अधिक संकलन करना होगा। विशेष रूप से चूंकि सी-जैसी भाषा का संकलन सभी ऑफ़लाइन किया गया था , न कि कार्यक्रम के निष्पादन की शुरुआत में।

GLSL के साथ अन्य मुद्दे थे। शायद 3 डी लैब्स पर दोष लगाना गलत लगता है, क्योंकि एआरबी ने आखिरकार भाषा को मंजूरी दी और शामिल किया (लेकिन उनकी "ओपनजीएल 2.0" पहल का और कुछ नहीं)। लेकिन यह उनका विचार था।

और यहाँ वास्तव में दुखद हिस्सा है: 3 डी लैब्स सही था (ज्यादातर)। GLSL एक वेक्टर-आधारित छायांकन भाषा नहीं है जिस तरह HLSL उस समय थी। ऐसा इसलिए था क्योंकि 3 डी लैब्स का हार्डवेयर अदिश हार्डवेयर (आधुनिक एनवीआईडीआईए हार्डवेयर के समान) था, लेकिन वे अंततः उसी दिशा में सही थे, जब कई हार्डवेयर निर्माता अपने हार्डवेयर के साथ गए थे।

वे "उच्च-स्तरीय" भाषा के लिए एक संकलन-ऑनलाइन मॉडल के साथ जाने के लिए सही थे। डी 3 डी ने भी अंततः उस पर स्विच किया।

समस्या यह थी कि 3 डी लैब्स गलत समय पर सही थे । और भविष्य को बहुत जल्दी बुलाने की कोशिश में, भविष्य के प्रमाण होने की कोशिश में, उन्होंने वर्तमान को एक तरफ कर दिया । यह लगता है कि कैसे OpenGL हमेशा टी एंड एल कार्यक्षमता के लिए संभावना थी। सिवाय इसके कि OpenGL की T & L पाइपलाइन अभी भी हार्डवेयर T & L से पहले उपयोगी थी , जबकि GLSL एक दायित्व था, इससे पहले कि दुनिया इसे पकड़ लेती।

जीएलएसएल अब एक अच्छी भाषा है । लेकिन समय के लिए? यह बहुत घटिया था। और ओपनजीएल को इसके लिए नुकसान उठाना पड़ा।

पतन की ओर इशारा एपोथोसिस

जबकि मैं यह कहता हूं कि 3 डी लैब्स ने घातक प्रहार किया, यह एआरबी ही था जो ताबूत में आखिरी कील चलाएगा।

यह एक ऐसी कहानी है जिसके बारे में आपने सुना होगा। OpenGL 2.1 के समय तक, OpenGL एक समस्या में चल रहा था। इसमें बहुत सारी विरासत cruft थी। API अब उपयोग करना आसान नहीं था। चीजों को करने के 5 तरीके थे, और कोई भी विचार जो सबसे तेज था। आप सरल ट्यूटोरियल के साथ ओपनजीएल "सीख" सकते हैं, लेकिन आपने वास्तव में ओपनजीएल एपीआई नहीं सीखा है जो आपको वास्तविक प्रदर्शन और चित्रमय शक्ति प्रदान करता है।

इसलिए एआरबी ने ओपनजीएल के एक और पुन: आविष्कार का प्रयास करने का फैसला किया। यह 3 डी लैब्स के "ओपनजीएल 2.0" के समान था, लेकिन बेहतर था क्योंकि एआरबी इसके पीछे था। उन्होंने इसे "लोंग्स पीक" कहा।

एपीआई को बेहतर बनाने के लिए कुछ समय लेने के बारे में क्या बुरा है? यह बुरा था क्योंकि Microsoft ने खुद को असुरक्षित छोड़ दिया था। देखें, यह विस्टा स्विचओवर के समय था।

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

जबकि कोई इस के गुणों पर बहस कर सकता है या क्या यह वास्तव में संभव था, तथ्य यह है: माइक्रोसॉफ्ट ने डी 3 डी 10 को केवल विस्टा (और ऊपर) माना। यहां तक ​​कि अगर आपके पास हार्डवेयर था जो डी 3 डी 10 में सक्षम था , तो आप विस्टा को चलाने के बिना डी 3 डी 10 एप्लिकेशन भी नहीं चला सकते थे।

आपको यह भी याद होगा कि विस्टा ... उम, चलो बस यह कहना है कि यह अच्छी तरह से काम नहीं किया। तो तुम एक घटिया प्रदर्शन ओएस, एक नए API कि केवल कि ओएस पर चलता था, और हार्डवेयर के एक ताजा पीढ़ी था कि जरूरत है कि एपीआई और ओएस से अधिक पिछली पीढ़ी की तुलना में तेजी हो कुछ भी करने को।

हालांकि, डेवलपर्स OpenGL के माध्यम से डी 3 डी 10-क्लास सुविधाओं का उपयोग कर सकते हैं। ठीक है, अगर ARB Longs पीक पर काम करने में व्यस्त नहीं थे।

मूल रूप से, एआरबी ने एपीआई को बेहतर बनाने के लिए एक अच्छा साल और डेढ़ से दो साल के काम का खर्च किया। जब तक ओपनजीएल 3.0 वास्तव में बाहर आया था, तब तक विस्टा को गोद लिया गया था, Win7 उनके पीछे विस्टा लगाने के लिए कोने के आसपास था, और ज्यादातर गेम डेवलपर्स ने वैसे भी डी 3 डी -10 वर्ग सुविधाओं के बारे में परवाह नहीं की। सब के बाद, डी 3 डी 10 हार्डवेयर ने डी 3 डी 9 अनुप्रयोगों को ठीक से चलाया। और पीसी-टू-कंसोल पोर्ट्स (या पीसी डेवलपर्स जंपिंग शिप टू जंपिंग कन्सोल डेवलेपमेंट। अपनी पिक लें) के उदय के साथ, डेवलपर्स को डी 3 डी 10 क्लास फीचर्स की आवश्यकता नहीं थी।

अब, अगर डेवलपर्स ने WinGLP मशीनों पर OpenGL के माध्यम से उन सुविधाओं तक पहुंच प्राप्त की थी, तो OpenGL विकास को हाथ में एक बहुत जरूरी शॉट मिल सकता है। लेकिन एआरबी ने अपना मौका गंवा दिया। और क्या आप सबसे खराब हिस्सा जानना चाहते हैं?

दो कीमती साल बिताने के बावजूद एपीआई को खरोंच से पुनर्निर्माण करने का प्रयास ... वे अभी भी विफल रहे और बस यथास्थिति में वापस आ गए (एक पदावनत तंत्र को छोड़कर)।

इसलिए न केवल एआरबी ने अवसर की एक महत्वपूर्ण खिड़की को याद किया, उन्होंने उस कार्य को भी पूरा नहीं किया जिसने उन्हें उस अवसर को याद किया। चारों ओर बहुत ज्यादा महाकाव्य असफल।

और यह OpenGL बनाम Direct3D की कहानी है। छूटे हुए अवसरों, घोर मूर्खता, दृढ़ इच्छाशक्ति और सरल मूर्खता की एक कहानी।


24
क्या आपने यह कहीं लिखा है, या आपने अपने सिर के ऊपर से लिखा है?
क्रिस्टोफर होक

38
@ क्रिस्तोफर: मुझे नहीं पता कि क्या आप इसे "अपने सिर के ऊपर से" कह सकते हैं, जिसे बनाने में एक या दो घंटे का समय लगता है, लेकिन मैंने इसे कहीं नहीं लिखा है।
निकोल बोलस

18
@ F.Aquino: तो आप इसे इंजन के बजाय FPS गेम का उपयोग करने वाले रेंडरिंग सिस्टम को देने के लिए तैयार हैं? भले ही सीएस हाफ-लाइफ 1 पर आधारित है, जो क्वेक पर आधारित है? माफ़ करना; इसे नहीं खरीदना। दी, मैं इस आधार को नहीं खरीदता कि नए एफपीएस में कोई ई-स्पोर्ट क्षमता नहीं है, भले ही नए एफपीएस के आसपास ई-स्पोर्ट्स टूर्नामेंट केंद्रित हैं। हो सकता है कि वे वही आकर्षण न रखें जो सीएस कुछ खिलाड़ियों को करता है , लेकिन यह सोचने की गलती न करें कि वे खिलाड़ी सभी एफपीएस ई-स्पोर्ट्स को बनाते हैं।
निकोल बोलस

165
वाह। मैं भी इस सामान के बारे में सबसे परवाह नहीं है और यह अभी भी एक महान पढ़ा है!
पीटर रोवेल

12
Which they, in all of Microsoft's collective imagination, called... the High Level Shading Language (HLSL).इस पर 6 मिनट से अधिक समय के लिए LOLled।
अपरेंटिसहैकर

133

मुझे यह अजीब लगा कि हर कोई यूजर बेस पर ध्यान दे रहा है, जब सवाल 'गेम डेवलपर्स' का है, 'गेम एडिटर्स' का नहीं।

मेरे लिए, एक डेवलपर के रूप में, लिनक्स एक खूनी गड़बड़ है। बहुत सारे संस्करण, डेस्कटॉप मैनेजर, यूआई किट आदि हैं ... अगर मैं अपने काम को खुले स्रोत के रूप में वितरित नहीं करना चाहता, जहां उपयोगकर्ता recompile कर सकता है (तो यह संकुल, पुस्तकालयों के अपने अद्वितीय संयोजन को फिट करता है) सेटिंग्स, यह एक बुरा सपना है !

दूसरी ओर, Microsoft (अधिकांश समय) अविश्वसनीय पिछड़े संगतता और प्लेटफ़ॉर्म स्थिरता प्रदान कर रहा है। एक बंद स्रोत इंस्टॉलर के साथ मशीनों की पूरी श्रृंखला को लक्षित करना संभव है, उदाहरण के लिए विंडोज एक्सपी, विस्टा और 7, 32 और 64 बिट्स फ्लेवर चलाने वाले कंप्यूटर, बिना उचित डीएक्स या वीसी पुनर्वितरण के स्थापित किए गए, आदि ...

एक आखिरी बात, कृपया इंटरनेट और OPIRL के इंटरनेट की दुकान पर हर बार ध्यान दें! या तो Direct3D बनाम OpenGL की तुलना करें या ऐसा न करें । DirectX इनपुट सपोर्ट, साउंड सपोर्ट, मूवी प्लेइंग, आदि प्रदान करता है जो OpenGL नहीं करता है।


40
"मेरे लिए, एक डेवलपर के रूप में, लिनक्स एक खूनी गड़बड़ है।" वास्तव में! मैं फेडोरा और उबंटू के साथ एक वातावरण में काम करता हूं। हमें उन दोनों के बीच भी समस्या है। (मुझे एक लिनक्स फैनबॉय जोड़ना चाहिए।)
डेविड पूले

48
@ jv42: यह एक आम गलत धारणा है: लगभग सभी संस्करण और डेस्कटॉप मैनेजर और यूआई किट इत्यादि, एक गेम प्राप्त करने और काम करने के लिए बहुत अप्रासंगिक हैं। यदि आपका गेम (जैसा कि शिप किया गया) libGL, libX11, और libasound (या libopenal या libao या liboss) से अधिक पर निर्भर करता है, तो आप कुछ गलत कर रहे हैं।
ग्रेफेड

19
@greyfade "यदि आपका गेम (जैसा कि भेज दिया गया) libGL, libX11, और libasound (या libopenal या libao या liboss) से अधिक पर निर्भर करता है, तो आप कुछ गलत कर रहे हैं।" - और फिर आप libao-0.0.4alpha से लिंक करते हैं, और आपके उपयोगकर्ता के पास libao-0.0.5beta है और कुछ भी काम नहीं करता है।
मात्रा_देव

17
एक बाइनरी को पैकेजिंग करना ताकि यह सभी लिनक्स वितरणों पर चले, यह कठिन नहीं है। हेक, ब्लेंडर डेवलपर्स इसे प्रत्येक रिलीज के साथ करते हैं। ब्लेंडर के केवल एक (अच्छी तरह से दो, 32 बिट और 64 बिट) लिनक्स रिलीज पैकेज है।
डेटेनवॉल्फ

8
लिनक्स उपयोगकर्ता गेम के लिए अधिक भुगतान करते हैं। देखें: koonsolo.com/news/linux-users-show-their-love-for-indie-game और 2dboy.com/2009/10/26/pay-what-you-want-birthday-wale-wrap-up
अलेक्जेंडर

88

यह इसलिए है क्योंकि लिनक्स और मैक की तुलना में ग्रह पर अधिक विंडोज उपयोगकर्ता हैं। सच्चाई यह है कि लोग जो भी सबसे बड़ा बाजार है उसके लिए चीजें बनाते हैं।
वही मोबाइल फोन के साथ जाता है: एंड्रॉइड और आईफोन में भयानक गेम हैं लेकिन विंडोज मोबाइल और सिम्बियन नहीं ...


24
@ महमूद होसाम: यह सच नहीं है। ओपनजीएल का उपयोग करने का मतलब यह नहीं है कि आपका पूरा आवेदन सिर्फ एक * निक्स पर्यावरण के तहत जादुई रूप से काम करेगा, इसका मतलब है कि ग्राफिक्स इंजन होगा (और तब भी इसका मतलब यह नहीं है कि उदाहरण के लिए विंडोज पर quirks नहीं हैं) लिनक्स पर मौजूद हैं और इसके विपरीत)। यह पूरी टोकरी नहीं है और निश्चित रूप से कई प्लेटफार्मों के लिए अपने कोड को बनाए रखने की प्रशंसनीय लागत है।
एड एस।

5
@ महमूद: बिल्कुल सही। और अगर आप वैसे भी लिनक्स / मैक ओएस पर पोर्टिंग को परेशान नहीं करने जा रहे हैं, तो देशी लाइब्रेरी का उपयोग क्यों न करें? इंटरनेट पर OpenGL की तुलना में DirectX बहुत बेहतर समर्थित है।
डीन हार्डिंग

10
@ महमूद: सवाल का पूरा आधार "डेवलपर्स को विंडोज क्यों पसंद है" है। उत्तर: क्योंकि यही गेमर्स उपयोग करते हैं। लिनक्स / मैक पर पोर्ट करने का कोई मतलब नहीं है अगर यह केवल आपके बाजार का 2% बनाता है, और उस स्थिति में, ओपनजीएल का उपयोग करने का कोई मतलब नहीं है यदि आप वैसे भी पोर्ट नहीं जा रहे हैं।
डीन हार्डिंग

4
@ ममौद, इसकी गेम डेवलपर की नौकरी लोगों को लिनक्स पर लाने के लिए नहीं है।
ग्रैंडमास्टरबी

6
Warcraft के खिलाड़ियों की दुनिया का @ 10 मिलियन आपके साथ एक शब्द रखना चाहेंगे। और यह सिर्फ एक खेल है।
मार्सेलो

50

क्योंकि विंडोज में 90% से अधिक बाजार हिस्सेदारी है, और लिनक्स (चूंकि आपने विशेष रूप से लिनक्स के बारे में पूछा था) बहुत सारे उपयोगकर्ताओं के लिए एक प्रतिष्ठा है जो सॉफ्टवेयर के लिए भुगतान करना पसंद नहीं करते हैं। यह सच है या नहीं कितना सच है यह अप्रासंगिक है; धारणा वहाँ है और यह लोगों के निर्णयों को प्रभावित करती है।


1
यदि डेवलपर्स OpenGL का उपयोग करते हैं, तो यह विंडोज और लिनक्स दोनों का समर्थन करेगा, इसलिए यह वास्तव में लिनक्स उपयोगकर्ताओं को आकर्षित करने के लिए विपणन लाभ होगा जो भुगतान करने के लिए तैयार हैं और लिनक्स का उपयोग कर रहे हैं क्योंकि उनका मानना ​​है कि यह बेहतर है।
एम। कमीर

9
यहां तक ​​कि ओपनजीएल के उपयोग से क्रॉस प्लेटफॉर्म के विकास और परीक्षण में लागत आती है जिसे लिनक्स बाजार उचित नहीं ठहराता है। डायरेक्टेक्स भी (दुख की बात है) ओपन गेमिंग की तुलना में इस समय पीसी गेमिंग के लिए एक बेहतर मंच है - ओपनजीएल पर बनाए जा रहे पीसी पर बहुत कम नए गेम हैं।
मार्टिन बेकेट

25
क्रॉस प्लेटफ़ॉर्मिंग "ओपन कोड के लिए सिर्फ कोड" के रूप में सीधा नहीं है।
सिस्टम डाउन

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

9
@Htbaa बेशक वे अधिक भुगतान किया, वे हताश थे, शायद यह केवल खेल वे अपने ओएस पर खेलने के लिए मिलता है।
मार्सेलो

11

क्योंकि विंडोज एक विशाल संगठन द्वारा समर्थित है, कि एक दशक से अधिक समय पहले उन्होंने फैसला किया कि वे चाहते हैं कि खेल विकास उनके मंच पर हो

यह मैक के लिए सच नहीं था, और यह अब सच नहीं है। IOS के लिए भी नहीं। Apple iOS गेम के विकास के लिए उपकरण प्रदान नहीं करता है। लेकिन अपेक्षाकृत कम प्रतिस्पर्धा के साथ, यह एक बहुत बड़ा बाजार है (1995 में वहां से अधिक iPhones थे), इसलिए लोग किसी भी तरह से करते हैं।

जैसा कि लिनक्स के लिए है, यहां तक ​​कि किसी प्रकार की केंद्रीय संस्था भी नहीं है, जो किसी भी प्रकार की प्राथमिकताओं को निर्धारित कर सकती है। जिस दिशा में लिनक्स जा रहा है, वह बहुत अच्छे, अभी तक थोड़े अनजाने प्रोग्रामर के एक समूह द्वारा निर्धारित कम है।

आज एक पीसी गेम बनाने के लिए, आपको बहुत से 2d / 3D आर्टिस्ट, गेम डिज़ाइनर, स्क्रिप्टर्स, एक्टर्स, टेस्टर और क्या नहीं चाहिए। वास्तविक प्रोग्रामिंग के रूप में, आप बस एक वास्तविक गेम इंजन (क्राय्वेन, अवास्तविक इंजन, क्वेक इंजन, स्रोत इंजन) का उपयोग कर सकते हैं। तो आप किसी भी वास्तविक प्रोग्रामर के बिना पूरी बात करने में सक्षम हो सकते हैं।

उसकी वजह से, और व्यवसायों की प्रकृति के कारण, प्रोग्रामरों को बहुत कम कहना है कि किस मंच को चुना जाता है। और आम तौर पर, प्रबंधक समर्थन की तलाश करते हैं, जो कि Microsoft द्वारा प्रस्तुत किए जाने वाले कुछ दावों, और उन चीज़ों से निपटने के लिए है जो किसी भी तरह उनके विचारशील पेटेंट के लिए उपलब्ध हैं, जो खुला स्रोत नहीं है।

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


2
"तो आप किसी भी वास्तविक प्रोग्रामर के बिना पूरी बात करने में सक्षम हो सकते हैं।" आप व्यंग्य भूल गए।
ऑलोन गुरलीनक

@AllonGuralnek: कोई व्यंग्य नहीं। बड़े गेम के क्लासिक गेम विकास में, प्रोग्रामर इंजन और साधन प्रदान करेंगे ताकि सामग्री और व्यवहार प्रदान किया जा सके (दृश्य संपादकों या वास्तविक स्क्रिप्टिंग के माध्यम से) और फिर गेम / स्तर / मिशन डिजाइनर उन साधनों का उपयोग करेंगे। यदि आप एक कामकाजी और पर्याप्त रूप से शक्तिशाली इंजन खरीदते हैं, तो आप मूल रूप से एक कदम काट सकते हैं।
बैक

2
क्या आपके पास एक विशेष रूप से उल्लेखनीय खेल का एक विशिष्ट उदाहरण है जो कोड की एक पंक्ति लिखे बिना बनाया गया था?
एलोन गुरिलनेक

1
@AllonGuralnek: मैंने यह नहीं कहा कि कोई भी बिना कोड के गेम बनाएगा , लेकिन बिना प्रोग्रामर के । आपको पूरी तरह से गेम-चेंजिंग मॉड बनाने के लिए प्रोग्रामर होने की आवश्यकता नहीं है। DotA सबसे लोकप्रिय है जिसे मैं अपने सिर के ऊपर से सोच सकता हूं।
212

1
@AllonGuralnek: नंबर लिखने वाले लोग कोड लिखने वाले लोग होते हैं। लेवल डिजाइनर को स्क्रिप्टिंग की एक निश्चित समझ होना आवश्यक है। बहुत से प्रोग्रामर को अक्सर प्रबंधन कौशल की एक निश्चित राशि की आवश्यकता होती है। यह पहले वाले को प्रोग्रामर नहीं बनाता, न ही दूसरे को मैनेजर बनाता। इसके अलावा DotA का आपका आकलन गलत है। सबसे पहले यह पूरी तरह से गेम-चेंजिंग है, एक आरटीएस को एक नई शैली में बदलना और दूसरा यह
ईएसडब्ल्यूसी

10

जैसा कि कुछ ने पहले ही कहा है, सबसे महत्वपूर्ण हिस्सा उपयोगकर्ता-आधार है। 95% पीसी उपयोगकर्ता विंडोज का उपयोग करते हैं। पीसी गेमर लगभग विशेष रूप से विंडोज का उपयोग करते हैं। यहां तक ​​कि जो मैक या लिनक्स का उपयोग करते हैं वे अक्सर कुछ वर्चुअलाइजेशन या एमुलेशन (बहुत कम, कुछ अपवादों के साथ) के माध्यम से विंडोज गेम चलाते हैं।

लेकिन जनसांख्यिकीय सब कुछ नहीं है। मैं उस हिस्से को कम नहीं आंकूंगा जो Microsoft खेल डेवलपर्स के लिए मंच को और अधिक आकर्षक बनाने के लिए कर रहा है। मूल रूप से आप पूरी तरह से मुक्त करने के लिए उपकरण का पूरी तरह से चित्रित सेट प्राप्त करते हैं , सबसे महत्वपूर्ण XNA गेम स्टूडियो । यह न केवल विंडोज के लिए, बल्कि Xbox360 के लिए भी विकास की अनुमति देता है । और नवीनतम संस्करण के साथ भी WP7 फोन के लिए। जाहिर है जब से यह Microsoft उपकरण है, यह OpenX नहीं DirectX का उपयोग करता है।


3
किसी भी समय यात्रा करने वाले पाठकों के लिए ध्यान दें: अप्रैल 2014 तक, XNA आधिकारिक तौर पर मृत हो जाएगा। अंतिम रिलीज़ (4.0) 2010 में प्रकाशित हुई थी और अब (2013) के बीच एक नया संस्करण नहीं देख रहा है और यह सूर्यास्त है।
Aren

1
किसी भी समय-यात्रा करने वाले पाठकों के लिए एक और नोट: विंडोज 8 (और ऊपर) का विकास अब भविष्य में मुफ्त नहीं होगा
चार

6

Ewwww, मैं नहीं। मैं लगभग विशेष रूप से लिनक्स का उपयोग करता हूं। मैं विंडोज बनाने के लिए विंडोज को डुअल-बूट करता हूं, और मैक बिल्ड के लिए मैक का उपयोग करता हूं, लेकिन यह है।

ट्रिक एक क्रॉस-प्लेटफ़ॉर्म फ्रेमवर्क है जिसे हमने वर्षों में विकसित किया है। हमारे खेल उसी के ऊपर बने हैं, और लिनक्स / ओपनजीएल, मैक / ओपनजीएल, और विंडोज / डायरेक्ट 3 डी में (और जल्द ही आईओएस / ओपनजीएल में) समान रूप से व्यवहार करते हैं।

बेशक मेरी कंपनी एएए खिताब नहीं करती है, इसलिए यह इन पर लागू नहीं हो सकता है, लेकिन हम शीर्ष आकस्मिक गेम बनाते हैं (देखें वेबसाइट - सीएसआई: एनवाई, मर्डर शी वॉट्ट और दो आगामी 2011 के महत्वपूर्ण लाइसेंस का उपयोग करते हुए खिताब के उदाहरण हैं, द शरलॉक होम्स 1 और 2 के खो मामलों के रूप में अच्छी तरह से सफल रहे थे)

मैं gedit + gcc + gdb + वैलेग्रिंड को किसी और चीज़ के लिए नहीं दूंगा।


3
gedit प्रोग्रामिंग के लिए अंडररेटेड है
अलेक्जेंडर


3
क्षमा करें, मैंने अंत में gedit छोड़ दिया। मैं अब gvim का उपयोग करता हूं और मैं बहुत खुश हूं :)
ggambett

4
  1. जड़ता। यदि आपने अतीत में विंडोज का उपयोग किया है तो किसी अन्य चीज पर स्विच करना एक परेशानी है। यदि आप विंडोज डायरेक्टएक्स पर हैं, तो ओपनजीएल की तुलना में अच्छी तरह से काम करना आसान और अधिक संभावना है।
  2. बाजार में हिस्सेदारी। डेस्कटॉप पर विंडोज का मार्केट शेयर OS X से बड़ा है जो बदले में लिनक्स की तुलना में बड़ा है। पैसा बोलता है।
  3. ब्रांड। डायरेक्टएक्स एसडीएल जैसी चीजों से बेहतर जाना जाता है (जो कि उस तरह की चीज है जिसे आपको डायरेक्टएक्स के कुछ फीचर्स को दोहराने की आवश्यकता होगी जो ओपनगेल से आगे जाते हैं)।
  4. कम भ्रम। क्या उपयोगकर्ता का लिनक्स केवल OpenGL 1.4 या OpenGL 2+ का समर्थन करेगा? क्या आप ओपन ओपन 2.0 ट्यूटोरियल का उपयोग कर सकते हैं जैसे आधुनिक ओपनजीएल के लिए एक परिचय। अध्याय 1: आपके संस्करण लिनक्स पर ग्राफिक्स पाइपलाइन ?

इन दिनों जब गेम का विकास होता है तो लिनक्स एक क्यूरियो के रूप में अधिक होता है और अधिकांश डेवलपर्स लिनक्स संस्करण (स्टीम जैसी चीजों को देखें) से पहले ओएस एक्स पोर्ट संस्करण को गलत तरीके से करना बेहतर होगा। फिर भी सांत्वना बाजार इन दोनों खेलों के लिए संयुक्त मंच से अधिक मूल्य का है ...

यदि आप मोनो प्लेटफ़ॉर्म करना चाहते हैं तो डायरेक्टएक्स ठीक है। यदि आप क्रॉस प्लेटफ़ॉर्म बनना चाहते हैं, तो एक मजबूत मौका है कि आपको कम से कम कुछ अन्य प्लेटफार्मों पर ओपनजीएल के साथ जाना होगा।


2
प्रश्न 4 का उत्तर है: 2+। Mesa3D OpenGL 2.1 का समर्थन करता है, जिसका अर्थ है कि X11 के लिए 3D हार्डवेयर के लिए सभी ग्राफ़िक्स ड्राइवर, Mesa संस्करण 6.8 के बाद से कम से कम OpenGL 2.1 का समर्थन करते हैं। यह पिछले कुछ वर्षों में जारी किए गए सभी लिनक्स डिस्ट्रोस को कवर करता है, और बाइनरी ड्राइवर जो कि NVIDIA और AMD जहाज 3.0 और ऊपर का समर्थन करता है। इसमें Intel895 के उपयोगकर्ता शामिल नहीं हैं, लेकिन उन्हें पदावनत कर दिया गया है।
ग्रेफेड

1
मुझे डर है कि यह मामला नहीं है। I915 / i945 (GMA 900/950) चिपसेट वाले कंप्यूटर (अभी भी) बेचे जा रहे हैं और अपग्रेड नहीं हैं। कुछ महीने पहले के आधुनिक वितरण पर भी (Ubuntu 11.04 / Fedora 15) glxinfo एक OpenGL संस्करण 1.4 (मेसा 7.11-डेवेल) से अधिक नहीं लौटाएगा। इस तरह के इंटेल हार्डवेयर बस बाद के संस्करणों को सॉफ्टवेयर की मदद के बिना नहीं कर सकते हैं, जब तक कि सॉफ्टपाइप डिफ़ॉल्ट रूप से उपलब्ध नहीं होता है, ऐसे कार्डों पर लिनक्स कभी भी उच्चतर ओपन वाईएलजी नहीं करेगा। OpenGL 2.0 (या उच्चतर) को लक्षित करने से लिनक्स डेस्कटॉप सिस्टम की एक विस्तृत श्रृंखला पर चलने वाला एक कार्यक्रम बंद हो जाएगा ...
Anon

फिर भी, मैं इस चिंता को देखने में विफल हूं। उन्हीं चिपसेट की विंडोज़ पर सीमाएँ हैं, इसलिए अधिकांश ग्राफिक्स-भारी गेम वैसे भी
ग्रेफेड

4

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

अगर कभी आप खुद से यह सवाल पूछते हैं कि 'कोई क्यों करता है ...', बस याद रखें कि पैसा दुनिया को गोल कर देता है।


1
हाँ, लेकिन आप एक क्रॉस प्लेटफ़ॉर्म गेम बना सकते हैं और केवल विंडोज़ उपयोगकर्ताओं से अधिक प्राप्त कर सकते हैं;)
M.Sameer

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

4

औजार, औजार, औजार।

यही वह नीचे आता है। विंडोज पर विकसित करें और आपको ग्रह पर सबसे अच्छे विकास के कुछ साधनों तक पहुंच मिलती है। विजुअल स्टूडियो के डिबगर के करीब भी कुछ भी नहीं आता है, डायरेक्टएक्स डीबग रूंटिम्स कमाल के हैं, पीआईएक्स भयानक है, और तुलनीय समकक्ष बस अन्य प्लेटफार्मों / एपीआई पर मौजूद नहीं हैं। ज़रूर, वहाँ कुछ अच्छा सामान है; मैं यह नहीं कह रहा हूं कि अन्य प्लेटफार्मों पर उपकरण खराब हैं, लेकिन जो एमएस प्रदान करते हैं, वे पैक (माननीय अपवाद: Valgrind) से बहुत आगे हैं, यह भी हास्यास्पद नहीं है।

लब्बोलुआब यह है कि ये उपकरण आपकी मदद करते हैं। वे आपको सामान प्राप्त करने में मदद करते हैं, वे आपको उत्पादक होने में मदद करते हैं, वे आपको एपीआई के साथ कुश्ती के बजाय अपने कोड में त्रुटियों पर ध्यान केंद्रित करने में मदद करते हैं जो कभी भी दस्तावेज के रूप में व्यवहार नहीं करते हैं।


PIX है भयानक। एक परेशान पिक्सेल क्लिक करके और क्या हुआ देखकर shaders को डीबग करना बहुत अच्छा है!
क्रिस पिटमैन

4

इसलिए मैं इन सभी उत्तरों पर चला गया हूं, और एक गेम डेवलपर के रूप में, जो कंसोल गेम पर कोड है जो वॉलमार्ट अलमारियों पर हैं, मेरे पास एक बहुत अलग जवाब है।

वितरण।

देखें, यदि आप एक निनटेंडो कंसोल पर होना चाहते हैं, तो आपको निनटेंडो की अनुमति लेनी होगी, निन्टेंडो की फैक्ट्रियों से खरीदना होगा, निन्टेंडो के ओवरहेड्स का भुगतान करना होगा, वॉलमार्ट के साथ बातचीत करनी होगी, वेयरहाउसिंग से निपटना होगा, बॉक्स बनाने के लिए, बॉक्स को प्रिंट करने के लिए आपको पैसों की जरूरत है। , सभी बीमा करने के लिए, वगैरह-वगैरह।

यदि आप XBox पर चाहते हैं, तो सुनिश्चित करें कि XBLA है, लेकिन आपको अभी भी Microsoft के आशीर्वाद की आवश्यकता है, आपको लाइन में अपनी बारी का इंतजार करना होगा, यह केवल एक पैच जारी करने के लिए हजारों डॉलर का दसवां हिस्सा है, आदि।

IOS पर, आपको अभी भी Apple के ठीक होने की ज़रूरत है, और वे (और कर सकते हैं) कैपिटल तरीके से आपको खींच सकते हैं।

स्टीम पर, आपको अभी भी वाल्व की अनुमति या ग्रीनलाइट, और बहुत सारे पैसे की आवश्यकता है।

विंडोज पर? आप एक वेबसाइट और एक डाउनलोड बटन सेट करें।

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

"हम XBLA पोर्ट को बाद में कर सकते हैं, जब चीजें स्थिर होती हैं" मानसिकता।

और कुछ हद तक यकीन है कि यह लिनक्स के लिए भी ठीक है, और यदि सात ग्राहक अच्छे हैं, तो आप वहां शुरू कर सकते हैं।

लेकिन विंडोज के तीन बड़े फायदे हैं: वास्तव में खुला विकास, वास्तव में खुली तैनाती, और एक बहुत बड़ा, बहुत सक्रिय ग्राहक आधार जो quirky सामान में रुचि रखता है।

यह कल्पना करना मुश्किल है कि मैं और कहाँ से शुरू करूँगा।


3

मुझे लगता है कि आपको DirectX के इतिहास और इस लेख के बारे में अधिक पढ़ना चाहिए ।

मुझे लगता है कि MS ने DXGL को ओपनजीएल पर चुना क्योंकि वे अपने ओएस का उपयोग करके लोगों को लॉक करना पसंद करते हैं।


4
नहीं, उन्होंने डीएक्स का निर्माण किया क्योंकि ओजीएल विंडोज के लिए अनुकूलित नहीं है, नए हार्डवेयर और ऑपरेटिंग सिस्टम के विकास का लाभ लेने के लिए जल्दी से विस्तारित नहीं किया जा सकता है, ध्वनि, नियंत्रण इनपुट आदि को शामिल नहीं करता है ..
jwenting

2
iow DX प्रदर्शन कारणों से विंडोज के लिए विशेष है और माइक्रोसॉफ्ट को इसे इस तरह से रखने और नई तकनीक को जल्दी से शामिल करने की अनुमति देता है क्योंकि यह उपलब्ध हो जाता है। OpenGL ग्राफिक्स हार्डवेयर समर्थन के स्तर पर अटक गया है जो 5 साल पहले मौजूद था, शायद अधिक, क्योंकि यह एक कमिटेट प्रयास है।
jwenting

1
@jwenting मुझे नहीं लगता कि प्रदर्शन एकमात्र कारण था कि वे इसे अन्य प्लेटफार्मों पर पोर्ट नहीं करते थे, मेरा मतलब है, अगर वे इसे पोर्ट करना चाहते थे, तो कम से कम वे इसे खुले-खट्टे कर देते थे और इसे लागू करने के लिए समुदाय पर छोड़ देते थे। यह।
महमूद होसाम

1
उन्होंने स्रोत C # नहीं खोला, उन्होंने मानक निकायों को भाषा विनिर्देश प्रस्तुत किया। Microsoft उन मानकों निकायों का एक सदस्य है, और हर समय ऐसी चीजें करता है (html, जावास्क्रिप्ट और उदाहरण के लिए अन्य मानकों में उनका बड़ा योगदान है)। ओपन सोर्सिंग का मतलब होता है एपीएल जैसी किसी चीज के तहत कंपाइलर और लाइब्रेरी के लिए सोर्स कोड जारी करना।
23'11

1
@jwenting: रिकॉर्ड के लिए, लिनक्स पर डायरेक्ट 3 डी 10 और 11 का कार्यान्वयन है जो गैलियम 3 डी ढांचे को लक्षित करता है। (और इसका शराब से कोई लेना-देना नहीं है।) मैं आपके इस दावे से भी असहमत हूं कि "OGL विंडोज के लिए अनुकूलित नहीं है।" यह हार्डवेयर ड्राइवर के कार्यान्वयन का एक मुद्दा है, न कि ओपनजीएल की सीमा।
ग्रेफेड

1

राजनीति और नियंत्रण के साथ बहुत कुछ करना है। 90 के दशक के अंत में, SGI और MS वास्तव में प्रयासों के संयोजन के लिए सहमत हुए:

http://en.wikipedia.org/wiki/Fahrenheit_graphics_API

SGI ने परियोजना में भारी निवेश किया, एमएस ने नहीं। SGI को MS की आवश्यकता MS की तुलना में MS को अधिक SGI की आवश्यकता थी। बाकी इतिहास है।

डी 3 डी और ओपनजीएल दो बहुत अलग एपीआई हैं, यह डेवलपर पर निर्भर है कि वह आपकी आवश्यकताओं के लिए कौन सा विकल्प चुनें।


0

केवल इसलिए कि लिनक्स एक डेस्कटॉप सिस्टम के रूप में बुरी तरह विफल रहा। जैसा कि किसी ने पहले बताया कि लिनक्स डेवलपर्स के लिए एक गड़बड़ है (विभिन्न पुस्तकालयों, यूआई टूलकिट, आदि)

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

अगली बात विकास उपकरण MSFT उत्कृष्ट C ++ सहायता प्रदान करता है और Visual Studio डीबगर बेहतर है तो C ++ के संबंध में gdb। अंतिम लेकिन कम से कम, आगे के उपकरण गायब नहीं हैं जैसे कि फ़ोटोशॉप। इसके अलावा .net आपको जल्दी से गुई टूल बनाने की अनुमति देता है। कई गेम स्टूडियो .net फ्रेमवर्क का उपयोग करके आंतरिक उपयोग के लिए अपने टूल को कोड करते हैं।

मैं लगभग भूल गया था: ग्राफिक्स सिस्टम बुरी तरह से है, उन दिनों में उन्होंने सिर्फ X11 को पोर्ट किया क्योंकि यह सबसे आसान काम था। वे एक आधुनिक ग्राफिक सिस्टम को ठीक से डिजाइन करने और कार्यान्वित करने में विफल रहे जो ओएसएक्स और विन के पास है।


4
हम्म? मेरे इंटेल और एटीआई कार्ड लिनक्स में ठीक काम करते हैं ... और एक्स 11 में क्या गलत है? मैंने हमेशा महसूस किया कि यह अपने क्लाइंट-सर्वर आर्किटेक्चर के कारण अन्य OS (विशेष रूप से विंडोज) के लिए विकल्पों की तुलना में बहुत बेहतर था।
वैकल्पिक

नहीं, वे glxinfo टाइप नहीं करते हैं और देखते हैं कि मौसम ठीक है या नहीं! X11 भयानक रूप से टूट गया है सिर्फ एक उदाहरण theinvoublethings.blogspot.com/2010/08/…
Nils

और यदि आप अंतिम वाक्य पढ़ते हैं, तो लाइनस ने स्वयं कर्नेल स्तर पैच लागू किया है - एक्स 11 पैच नहीं।
वैकल्पिक

1
मुझे ग्राफिक्स सिस्टम के बारे में ज्यादा जानकारी नहीं है (आपके पास एक बिंदु हो सकता है) लेकिन यह कहना कि लिनक्स एक डेस्कटॉप सिस्टम के रूप में विफल रहा है या कम से कम सही नहीं है। मैं विंडोज से लिनक्स में चला गया और मैं तब से बहुत उत्पादक महसूस करता हूं। लिनक्स का प्रदर्शन मेरे द्वारा उपयोग की जाने वाली सभी मशीनों में विंडोज से बेहतर था। मैं C ++ को भी कोड नहीं करता हूं और मैं जानना चाहता हूं कि Visual Studio की तुलना में ग्रहण C ++ IDE के रूप में कहां खड़ा है।
M.Sameer

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