2009-10-24 5 views
8

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

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

अन्य लोग इस तरह के आवेदन के लिए पहली प्रोग्रामिंग भाषा के रूप में सी ++ के बारे में क्या सोचते हैं? क्या मुझे सलाह चाहिए कि वह इसके बजाय सी # के लिए जाए?

+4

यह शायद एक समुदाय विकी –

+4

सी ++ केवल कठिन है अगर तुम अजगर पहले सीखना होना चाहिए । यदि आप पहले सी/सी ++ सीखते हैं, तो कुछ भी मुश्किल नहीं होगा। – hasen

+0

+1 मैथ्यू, विकी के लिए एक कदम मतदान। मेरा एक मित्र और मैं एक गेम इंजन विकसित करने में कम से कम लोकप्रिय मार्ग ले रहा हूं। सी # हमारी पसंद है। सौभाग्य से, हमारे पास हमारे प्रोजेक्ट पर लागू करने के लिए सी ++ ज्ञान है। वह ग्राफिक्स इंजन पक्ष पर काम कर रहा है, मैं उपयोगकर्ता उपकरण को एक साथ सब कुछ 'सिलाई' करने के लिए जिम्मेदार हूं। – IAbstract

उत्तर

15

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

+4

बुद्धिमानी के लिए, यदि आप चाहते हैं कि मूल बातें में एक अच्छी ग्राउंडिंग है, तो सी सी ++ के साथ बहुत सारे अतिरिक्त ओवरहेड और सीखने के लिए सामान हैं। सी असेंबली पर लगभग एक पतली परत है, जो आपको नौकरी पाने के लिए जरूरी है, उसके साथ चिपके हुए हैं। –

+5

मैं इस पर सहमत नहीं होगा: गेम कम स्तर की अवधारणाओं में उच्च स्तर की अवधारणाओं को लागू करने के बारे में बहुत कुछ है। सी ++ इस मामले में अधिक उपयुक्त है क्योंकि आप वास्तव में गेम (उच्च स्तर पर कोडिंग) पर काम करना चाहते हैं, लेकिन कुछ महत्वपूर्ण रनटाइम भागों (निम्न स्तर पर कोडिंग) को अनुकूलित करने के लिए विवरण में गोता लगाने का विकल्प है। केवल सी का उपयोग करके आप प्रोग्रामिंग के बारे में बहुत कुछ सीखेंगे लेकिन गेम प्रोग्रामिंग सीखने में आपको केवल बाधा डालेगी। यदि यह वास्तविक लक्ष्य है, तो उच्च स्तरीय भाषा सुविधाएं महत्वपूर्ण हैं। और ऊपरी मामलों में ओवरहेड उल्लेखनीय नहीं है। यदि ऐसा है, तो आप हमेशा बाधाओं को अनुकूलित कर सकते हैं – Klaim

+0

कुछ तरीकों से सी ++ का उपयोग करने का सबसे कठिन हिस्सा यह समझ रहा है कि भाषा का कौन सा सबसेट आपके लिए समझ में आता है। मुझे लगता है कि स्मृति प्रबंधन, पॉइंटर्स और डेटा संरचनाओं को सीखते समय सी का उपयोग करना आसान है ... ऐसा करने से विचलन सीमित हो जाता है। –

8

सी ++ मुख्य भाषा है जो "गंभीर" गेमिंग खिताब के लिए उपयोग की जाती है। यदि एक प्रमुख गेमिंग स्टूडियो के लिए प्रोग्रामिंग है तो उसे सी ++ के गंदे छोटे बिट्स को जानना होगा।

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

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

6

सी ++ गेम प्रोग्रामिंग बहुत बढ़िया है। लेकिन जब तक आप प्रोग्राम सीखने के दौरान कुल दर्द पसंद नहीं करते हैं, तो आप एक्सएनए से शुरू करने के लिए देख सकते हैं। यह आपको अपने इंजन कोड से लड़ने के बजाए गेम सामग्री और तर्क पर काम करने की अनुमति देगा।

अब यदि आपको दर्द पसंद है तो डायरेक्टएक्स और सी ++ मार्ग से शुरू करने के लिए जाएं।

2

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

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

दिन के अंत में, आप अपने आवेदन को बनाने में कौन सी सहायता प्राप्त कर सकते हैं, उन ओओ भाषाओं (कुछ हद तक) के बीच छोटे अंतरों को हमेशा कम कर देगा।

बहुत सारे गेम इंजन हैं, जिनमें सबसे अधिक on this page सूचीबद्ध हैं। विशेष रुचि में, मुक्त दुनिया में:

गैर मुक्त संकुल Unity, और अन्य शामिल हैं। हालांकि नहीं सीधे अजगर, आप इसे अपने आप को एम्बेड करने के लिए होता है - -

यदि आप करते हैं नहीं उन इंजन के किसी भी चाहते हैं, वहां अभी भी सी ++, कि पटकथा की अनुमति देता है के लिए Qt की तरह बहुत अच्छा पुस्तकालय हैं और दूसरों सी # के लिए है, लेकिन लिस्टिंग काफी लंबा हो सकता है।

3

पायथन खेल प्रोग्रामिंग में अच्छा है। i-want-to-learn-game-development-which-language-should-i-use देखें। Pygame सीखने पर विचार करें।

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

3

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

यदि वह निर्णय लेता है कि सी ++ जाने का सही तरीका है, तो मैं कम से कम एक प्रतिपादन लाइब्रेरी की अनुशंसा करता हूं। कम से कम Ogre3D की तरह कुछ। इसका कारण इस आलेख में Write games not engines में शामिल है। आधार एपीआई से एक इंजन लिखने (या लिखने की कोशिश) एक अच्छा अनुभव होने जा रहा है, यह संभावना नहीं है कि खेल खत्म हो जाएगा।

6

मुझे लगता है कि सी ++ लेने से पहले जावा या सी # जैसी भाषा सीखना बेहतर है। कारण मैं यह कहता हूं क्योंकि आप आसानी से सी ++ के विवरण और जटिलताओं में उलझ जाते हैं।

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

एक्सएनए एक अच्छा सुझाव है।

+1

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

+1

सहमत हुए। बहुत सारी अवधारणाएं, सांस लेने और नवाचार करने के लिए बहुत कम जगह। जब तक आप अत्याचार से ध्यान केंद्रित नहीं कर लेते, नवाचार किए बिना सीखना असंभव है। मेरी सीखने की प्रक्रिया के दौरान मैंने कई प्रतिमानों की विभिन्न भाषाओं को सीखा। सी ++ हमेशा एक था जिसमें मैंने महसूस किया कि मैं कम से कम सीख रहा हूं क्योंकि मैं उस चीज़ से असंबद्ध हो रहा हूं जो मैं वास्तव में सीखने की कोशिश कर रहा था। अन्य भाषाओं से आ रहा है और ऑप्टिमाइज़ेशन के अलावा गेम विकास के सभी अन्य पहलुओं से परिचित है, सी ++ ईंट की दीवार के बजाए हासिल करने के लिए बस एक मील का पत्थर था। – Rushyo

0

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

1

आम तौर पर, लोग अपना पहला गेम पूरा करने से पहले भाप से बाहर निकलते हैं। इसलिए, जब तक कि आपके मित्र के पास दृढ़ता से निर्धारित होने का ट्रैक रिकॉर्ड न हो, मैं उपलब्ध उच्चतम स्तर के विकल्प की अनुशंसा करता हूं। यदि आप सी ++ और सी # के बीच चयन कर रहे हैं, तो यह सी # होगा।

+0

वास्तव में। पायथन में एक क्षुद्रग्रह क्लोन लिखना एक बहुत बड़ी परियोजना है। सी ++ में जमीन से अपने पायथन एस्टेरॉयड क्लोन को रिवाइट करना नहीं है। –

0

यदि आपका लक्ष्य मज़े करना है, और वास्तव में गेम को स्वयं (या छोटी टीमों में) खत्म करना है जो अपेक्षाकृत छोटे हैं, तो मैं सी # और एक्सएनए कहता हूं।

अपने लक्ष्य सी ++ उद्योग में काम करने के लिए ... विशाल टीमों के साथ सुपर बड़े बजट की खेल पर, फिर ... है

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