क्या C ++ "अभी भी" खेल के विकास में पसंद किया जाता है? [बन्द है]


17

मैं एक 2 डी गेम प्रोग्रामर हूं। कुछ प्रोग्रामिंग भाषाएं जो मैं सी, जावा, सी # में अच्छी हूं। मैं एक्टिशनस्क्रिप्ट 2.0,3.0 और कुछ जावास्क्रिप्ट भी जानता हूं। मुझे 3D गेम प्रोग्रामिंग सीखने में दिलचस्पी है। अब तक मैंने अनुसंधान से अलग-अलग खेल विकास मंचों और लेखों को पढ़ने और पढ़ने के लिए संचय किया है। मैंने देखा है कि अधिकांश प्रोग्रामर C ++ पसंद करते हैं। इसके अलावा एक ऑनलाइन गेम प्रोग्रामिंग शिक्षण पाठ्यक्रम में मैंने देखा कि वे C ++ और विज़ुअल C ++ को शुरुआती कोर्स के रूप में पढ़ाना पसंद करते हैं। कारण मैं यह सवाल पूछ रहा हूं क्योंकि मैं 3D गेम प्रोग्रामिंग के लिए C ++, C # और Java के "स्ट्रेंथ" अंतर को जानना चाहूंगा।

पहले से ही 2d गेम प्रोग्रामर के लिए अच्छे 3D गेम प्रोग्रामिंग लेखों के लिंक भी शामिल करें ।

पुनश्च: IMHO, मैं भी C ++ को गूढ़ मानता हूं।


मुझे वह भी बहुत कुछ मिलता है। इसलिए समुदाय में एक सवाल पूछा कि एक पेशेवर गेम प्रोग्रामर के पास क्या कौशल होना चाहिए। विकासशील खेलों के लिए बेहतर भाषा के रूप में C ++ पर ध्यान केंद्रित करने वाले कुछ अच्छे उत्तर दिए। check .. gamedev.stackexchange.com/questions/5552/…
GamDroid

@GamDroid: मुझे यह जानने में कोई दिलचस्पी नहीं है कि एक पेशेवर 2 डी गेम प्रोग्रामर क्या बनाता है। मुझे विजुअल C ++ के बारे में जानने में दिलचस्पी है और इस बारे में इतनी बात क्यों की गई है।
विष्णु

2
Btw: विजुअल C ++? सिर्फ सादे सी ++ नहीं?
स्पीड

विजुअल C ++ एडिटर शांत है, लेकिन विजुअल C ++ (यानी: Win32 GUI API के साथ C ++ और एमएस विज़ुअल C ++ या बोरलैंड C ++ बिल्डर दोनों के साथ सामान) जैसी भाषा काफी भ्रामक है और इसे गेम के लिए इस्तेमाल नहीं किया जाना चाहिए (यह बहुत अधिक है) फूला हुआ, और GDI का उपयोग धीमी गति से कह रहा है, SDL, विंडो को नियंत्रित करने के लिए)
तेजस्वी

1
@Vish, माफी माँगता है, तो बेझिझक इसे संपादित करने के लिए और अधिक सटीक टिप्पणी को ध्यान में रखते हुए इस प्रकार अब तक। यदि आपका मतलब है कि Win32 प्रोग्रामिंग भ्रामक है, तो कहें कि।
तेतराड 6

जवाबों:


30

हां, C ++ सबसे अधिक बार उपयोग की जाने वाली भाषा है (हालांकि कुछ लोग अभी भी C का उपयोग करते हैं)।

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

फिर नियंत्रण का मुद्दा है। गेम डेवलपर्स नियंत्रण शैतान हैं, और हम अपने कोड में चल रही हर चीज को जानना पसंद करते हैं। C ++ हमें वह नियंत्रण देता है, C # और Java (आपके द्वारा उल्लेखित दो विकल्पों को चुनने के लिए) नियंत्रण को दूर ले जाता है। कई मायनों में यह एक अच्छी बात हो सकती है, लेकिन गेम कोडर्स इसे पसंद नहीं करते हैं :)

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


2
मुख्यधारा के विकास उद्योग में, हाँ।
जेसन

2
भाषाओं के संदर्भ में, C ++, मुख्य रूप से - यह जल्द ही किसी भी समय कहीं भी नहीं जा रहा है। मेरा सुझाव है कि यह पटकथा भाषाओं से परिचित होने के लिए भी चोट नहीं पहुंचाएगा - लुआ, पायथन, आदि
जेसन

8
विजुअल C ++ एक भाषा नहीं है, यह एक IDE है।
सर्वाइवलमैचिन

2
हां, हालांकि यह शायद सबसे अधिक इस्तेमाल किया जाने वाला आईडीई है, इसलिए यह जानने के लायक है कि एक ही समय में C ++ सीखना।
जेसन

1
@SurvivalMachine तकनीकी रूप से यह एक बोली है (इसमें बहुत सारे MSVC ++ एक्सटेंशन हैं जो मानक में मौजूद नहीं हैं)
bobobobo

4

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

सी से चिपकना मुझे अतिसूक्ष्म होने के लिए मजबूर करता है और सोचता है कि मैं क्या कर रहा हूं। यह कई बार कठिन हो सकता है जब आपको एसटीएल आपको कुछ मुफ्त में देना होगा, लेकिन मुझे लगता है कि मैं क्लीनर कोड लिखता हूं और उस चीज को बेहतर तरीके से डिबग करना है।


3
RAII गेम कोड में पूरी तरह से स्वीकार्य (और प्रोत्साहित किया जाना चाहिए) है।
स्टोनमेटल

1
@stonemalal: RAII विलंबित और इसलिए अप्रत्याशित संसाधन आवंटन को प्रोत्साहित करता है। चाहे वह प्रोत्साहित किया जाए या नहीं, यह आपके खेल और आपके लक्षित प्लेटफार्मों (और प्रश्न में संसाधन) के आकार पर निर्भर करता है; औसतन मैं इसे प्रोत्साहित नहीं करूंगा। इसके अलावा, C ++ में RAII का उपयोग आमतौर पर ढेर आवंटन के साथ किया जाता है, क्योंकि C ++ का OO स्टैक आवंटन को बहुत कठिन बनाता है।

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

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

1

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

हालांकि, कभी-कभी अन्य भाषाएं खेल के विकास के लिए बहुत अच्छा काम करती हैं। मैं LWJGL के साथ जावा का उपयोग करता हूं और यह अद्भुत है। तो अगर आप C ++ सीखने के बिना 3D प्रोग्रामिंग और OpenGL से शुरुआत करना चाहते हैं, तो LWJGL आज़माएं को Java के साथ , क्योंकि यह बहुत हल्का है और मुझे लगता है कि यह वास्तव में C ++ कोड है जो JNI के माध्यम से चल रहा है।

हो सकता है कि लंबे समय में आप C ++ में स्विच करना चाहते हों, लेकिन आप C # या Java से शुरू और अभ्यास कर सकते हैं। क्योंकि अधिकांश गेम कोड भाषा के साथ अनुभव से आता है, लेकिन आपको उस भाषा के साथ OpenGL का प्रयास और अभ्यास करना चाहिए जिसमें आप सहज हैं। इसके अलावा, जब आप ग्राफिक्स का अभ्यास कर रहे हों, तो आपको ओपन के साथ जीएलएसएल को भी आज़माना चाहिए, इसमें बहुत सी तरह का सिंटैक्स होता है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.