2009-05-14 6 views
14

सवाल लग सकता है व्यक्तिपरक लेकिन पर विचार माइक्रोसॉफ्ट:माइक्रोसॉफ्ट सी # का उपयोग कर हेलो जैसी अगली जेन खिताब क्यों नहीं विकसित कर रहा है?

  • मालिक 360 मंच
  • विंडोज मंच
  • अपने स्वयं के खेल स्टूडियो (MGS)
  • खुद की अन्य 3 पार्टी डेवलपर्स है मालिक
  • एक प्रमुख प्रकाशक

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

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

+3

सी # और एक्सएनए मंच है जो गेम जैसे हेलो के लिए उपयुक्त है? मुझे कोई जानकारी नहीं है, लेकिन यह मेरा पहला सवाल होगा क्योंकि यदि यह उपयुक्त नहीं है तो जवाब है। यदि यह उपयुक्त है तो अच्छा प्रश्न – JoshBerke

+0

मुझे नहीं लगता कि क्यों नहीं। AFAIK XNA प्रबंधित डायरेक्टएक्स के समान है जो अब और नहीं है। –

+0

@ जोश: मैं इसका उत्तर भी जानना चाहता हूं। –

उत्तर

20

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

यही कारण है कि अन्य डायरेक्टएक्स रैपर मौजूद हैं (स्लिम डीएक्स को अधिक प्रत्यक्ष डी 3 डी रैपर के रूप में दिमाग में आता है)। सामान्य रूप में प्रबंधित कोड के लिए

के रूप में, कई समस्याएं दिमाग में आते हैं:

  • वे पहले से ही एक बड़ी codebase है कि वे का उपयोग कर रखना चाहते हैं। विकास समय पर कटौती का तरीका खिड़की से बाहर सब कुछ फेंकने और दूसरी भाषा में खरोंच से शुरू करने का तरीका है।
  • अधिकांश गेम स्टूडियो में अभी भी कुछ स्वायत्तता है, भले ही वे माइक्रोसॉफ्ट के स्वामित्व में हों। यदि वे सी ++ में अपना गेम लिखना पसंद करते हैं, तो क्या माइक्रोसॉफ्ट इसे खत्म कर सकता है? क्या ऐसा करना एक अच्छा विचार होगा? यह निश्चित रूप से डेवलपर्स को बंद कर देगा, और डेवलपर्स को बंद कर दिया आमतौर पर एक अच्छी बात नहीं है।
  • प्रदर्शन: हाँ, सी # और .NET पीसी पर बहुत अच्छा प्रदर्शन करता है, लेकिन कंसोल पर, यह एक अलग कहानी है। यह .NET CF का उपयोग करता है, जो कि अन्य चीजों के साथ, एक बहुत ही प्राचीन कचरा कलेक्टर है। इसका जेआईटी कंपाइलर स्पष्ट रूप से बेकार है। .NETCF को अच्छी तरह से ट्यून किए गए देशी कोड को बेहतर प्रदर्शन करने के लिए डिज़ाइन नहीं किया गया है।
  • नियंत्रण: जिस तरह से आप आम तौर पर एएए कंसोल गेम लिखते हैं वह कंसोल की पेशकश की जाने वाली सभी चीजों का फायदा उठाना है। प्रत्येक सीपीयू चक्र का इस्तेमाल किया जाने वाला स्मृति के प्रत्येक बाइट को कम से कम माना जाना चाहिए। प्रबंधित कोड बस कम अनुमानित है। जीसी कब चलाता है? किसी भी समय कितनी मेमोरी उपयोग में है? हमें पता नहीं। कंसोल में केवल स्मृति की बहुत सीमित मात्रा होती है। (360 में 512 एमबी आईआईआरसी है। यह आधुनिक गेम के लिए बहुत कुछ नहीं है, और यदि आप बिल्कुल जानते हैं तो उस मेमोरी का कितना उपयोग कर रहा है, तो हेलो 3 जैसे गेम बनाना संभव है)।
  • 360 पर अधिकतर सुविधाएं .NET के संपर्क में नहीं आती हैं। कई हार्डवेयर सुविधाओं का उपयोग करने के लिए सी ++ इंटरऑप या असेंबलर की आवश्यकता होती है।

जब ऐसा कहा जाता है, तो उच्च प्रोफ़ाइल पीसी गेम के लिए .NET का उपयोग करना बहुत बेहतर काम करेगा। पूर्ण .NET ढांचे में बहुत बेहतर प्रदर्शन विशेषताएं हैं, और पीसी पर उपलब्ध हार्डवेयर किसी भी तरह से भिन्न होने जा रहा है, इसलिए सटीक स्मृति उपयोग पर कड़े नियंत्रण कम महत्वपूर्ण है।

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

+1

बहुत अच्छा जवाब। +1। –

+1

आप एकता http://unity3d.com/ यह एक पुरस्कार क्रॉस प्लेटफॉर्म 3 डी खेल मोनो का उपयोग कर प्रणाली विजेता है की जाँच की जरूरत है। मोनो प्रोजेक्ट ने विशेष रूप से एकता के लिए सिमड निर्देश समर्थन भी जोड़ा। बहुत अधिक हार्डवेयर के लिए समर्थन छोड़ने के बिना कुछ देशी गेम डेवलपर नहीं कर सका। – trampster

+0

धन्यवाद डैनियल। एकता 3 डी शुद्ध सी # है? –

26

आपको थोड़ा अलग सवाल पूछने की आवश्यकता है।

माइक्रोसॉफ्ट अपने मौजूदा ट्यून किए गए गेमिंग इंजन को पूरी तरह से अलग भाषा में क्यों नहीं लिखता है।

यह उम्मीद है कि यह एक और अधिक स्पष्टीकरणपूर्ण प्रश्न है।

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

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

+0

मुझे विंडोज 7 प्रश्न के बारे में याद दिलाता है .. –

+0

और विंडोज 7 के लिए जवाब। मुझे थोड़ा अलग सवाल पूछना अच्छा लगेगा, अगर सी # किसी गेम के लिए अपरिवर्तित हो सकता है हेलो। मुझे लगता है कि आप प्रदर्शन कर सकते हैं और जब आप अपने आप को महत्वपूर्ण सागरियो प्रदर्शन में पाते हैं तो आप सी ++ क्ली या सी ++ – JoshBerke

+0

@ मेहरदैड में बहुत कुछ छोड़ देंगे। – JaredPar

5

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

+2

एह, मानते हुए कि हम अभी भी 90 के दशक के मध्य में थे, मैं आपसे सहमत हूं। लेकिन आज, जीसी को कोई समस्या नहीं है। .NET जीसी बहुत अच्छा है, और संग्रह के दौरान ध्यान देने योग्य विरामों से बचने के लिए काफी आसान है। यद्यपि पूर्ण .NET ढांचे के लिए यह केवल सच है। कॉम्पैक्ट फ्रेमवर्क एक बहुत अधिक प्राचीन कचरा कलेक्टर का उपयोग करता है, जिसे मैं निश्चित रूप से इस तरह के प्रदर्शन-संवेदनशील परियोजना में भरोसा नहीं करता। लेकिन सामान्य रूप से जीसी * * में कोई समस्या नहीं है। – jalf

+0

मैं इस बात से सहमत हूं कि जीसी बहुत बेहतर हो गया है, हालांकि मैं 90 के दशक के मध्य में सी # कचरा कलेक्टर के प्रदर्शन को देखने के लिए मोहक हूं (2001 में सीएसएचआरपी दिखाई दिया था)। सरल तथ्य यह है कि, यह एक प्रदर्शन ओवरहेड जुर्माना लागू करता है, भले ही यह पूरे रनटाइम पर आसानी से फैलता है, और ओवरहेड लागत ऐसा कुछ है जो अन्य डेवलपर्स जो आईएल के साथ काम नहीं कर रहे हैं, अनुकूलित करने और बनाने के लिए उपयोग कर सकते हैं बेहतर दिखने वाला खेल। साधारण तथ्य यह है कि गेम अब भी बहुत अनुकूलित हैं कि कोई भी प्रदर्शन जुर्माना शिपिप्बिलिटी को गंभीरता से प्रभावित कर सकता है। –

+0

यदि कोई प्रदर्शन देयता है, तो मैं कहूंगा कि यह फ्लोटिंग पॉइंट प्रदर्शन (भौतिकी के लिए ज्यादातर) है, जीसी नहीं।मैं वास्तव में एक उदाहरण है जहां जीसी होगा GC'd * * botteleneck के रूप में वस्तुओं सबसे अधिक बार का निर्माण (वैक्टर, मैट्रिक्स, आदि) मूल्य प्रकार है कि जी सी की आवश्यकता नहीं है (व्यक्तिगत रूप से कम से कम, वे मिल नहीं सोच सकते हैं जब किसी संदर्भ प्रकार का हिस्सा होता है) और अक्सर उत्पन्न होने वाली भारी वस्तुएं स्टार्ट-अप में शुरू होने वाले ऑब्जेक्ट पूल से बाहर आ सकती हैं। यह जावा के लिए सच नहीं हो सकता है जो structs को नहीं जानता है। मैं हालांकि :) – JulianR

5

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

एक्सएनए सभी प्रकार के डेवलपर्स को अपने मौजूदा सी # कौशल और Xbox 360/Windows की शक्ति का उपयोग दोनों प्लेटफार्मों के लिए गेम बनाने के लिए सक्षम बनाता है।उन्होंने अभी तक प्लेटफार्म का उपयोग करके एक वाणिज्यिक गेम विकसित नहीं किया है, लेकिन पहले ही एक्सएनए का उपयोग करने के लिए कई शानदार परियोजनाएं हुई हैं।

XNA का उपयोग कर games that have been created में से कुछ को देखें।

इसके अलावा, सी # के प्रदर्शन के बारे में टिप्पणियों के लिए, आपको इस विषय पर forum discussion में रुचि हो सकती है। यह निश्चित रूप से कई खेलों के लिए पर्याप्त तेज़ है; वास्तव में, एक्सबॉक्स पर एक्सएनए का निष्पादन इंजन गेम विकास परिदृश्यों के लिए कई तरीकों से अनुकूलित किया गया है और कचरा संग्रह की लागत को कम करने के लिए (मेरे पास उद्धरण करने का कोई स्रोत नहीं है, लेकिन मैंने .NET निष्पादन इंजन पर एक इंटर्न के रूप में काम किया है। एक्स बॉक्स 360)।

5

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

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

जो तीसरे पक्ष छोड़ देता है। तीसरे पक्ष सी # का उपयोग क्यों नहीं करेंगे? यह आसान है, यह वाईआई या पीएस 3 पर उपलब्ध नहीं है।

1

सामान्य रूप से .NET ढांचे को गेम विकास के लिए डिज़ाइन नहीं किया गया है। .NET के लक्षित दर्शक मुख्य रूप से व्यावसायिक अनुप्रयोग हैं (मुझे पता है कि इसका उपयोग बहुत अधिक के लिए किया जा सकता है लेकिन एक मिनट के लिए सार के साथ लटकाया जा सकता है)।

जब आप गेम लिख रहे हों, तो आप एक ऐसी भाषा चाहते हैं जो आपको हार्डवेयर के साथ यथासंभव अंतरंग हो। सी ++ और असेंबली शास्त्रीय उदाहरण हैं जहां आप प्रोसेसर, जीपीयू और ग्राफिक्स लाइब्रेरी से प्रदर्शन के हर अंतिम औंस को निचोड़ सकते हैं।

.NET ढांचे को उस तरह के नियंत्रण के साथ विकसित नहीं किया गया था। .NET एक बहुत ही अभिव्यक्तिपूर्ण ढंग से अनुप्रयोगों के निर्माण के लिए उपयुक्त है - एक उच्च प्रदर्शन GPU के मिनट विवरण को चलाने के लिए जरूरी नहीं है।

संबंधित मुद्दे