2d गेम देव (C ++) के साथ शुरू करना: DirectX या OpenGL? [बन्द है]


12

तो, मैं एक छात्र हूँ जो खेल के विकास के द्वार पर अपना पैर जमा रहा है और कुछ 2D करना चाह रहा हूँ, शायद एक tetris / space आक्रमणकारियों / कुछ-के-साथ-माउस-इंटरैक्शन क्लोन।

मैंने C ++ और 2d की दिशा में अपनी खोजों को इंगित किया और अंततः DirectX / OpenGL के लिए नेतृत्व किया

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

तो, C ++ में एक बुनियादी गेम बनाने की कोशिश करने वाले शुरुआती के लिए, क्या आप DirectX या OpenGL की सिफारिश करेंगे? क्यों? दोनों के बीच कुछ प्रमुख विशेषता अंतर क्या हैं? कौन सा अधिक उपयोग करने योग्य है?

जवाबों:


16

मैं 2D के लिए SDL ( http://www.libsdl.org/ ) की सिफारिश करूंगा , यह वह जगह थी जहां मैंने पहली बार ग्राफिक्स सामान के साथ शुरुआत की थी और इसका उपयोग करना बहुत आसान था, भले ही मैं उस समय C ++ को मुश्किल से जानता था।

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

SDL इनपुट हैंडलिंग भी करता है और SDL_Mixer बेसिक ऑडियो कर सकता है।

मैंने 2D सामग्री के लिए DirectDraw या OpenGL के साथ कभी काम नहीं किया है, इसलिए मैं वहां टिप्पणी नहीं कर सकता, लेकिन मैं निश्चित रूप से एसडीएल की सिफारिश कर सकता हूं।


1
मुझे SDL अच्छा लगा लेकिन पथ प्राप्त करना बहुत मुश्किल था और इसमें समुचित रूप से सेटअप शामिल था।
स्कीथ

1
इसके अलावा lazyfoo.net/SDL_tutorials देखें कुछ सभ्य ट्यूटोरियल के लिए (विभिन्न IDEs के लिए सेटअप ट्यूटोरियल भी शामिल है)।
बीनबाग

@Skeith के साथ सहमत हुए। मैं शुरुआती के लिए पहली बार एसडीएल सेटअप प्राप्त करने के सिरदर्द की कल्पना नहीं कर सकता। एमेच्योर या यहां तक ​​कि पेशेवरों के साथ कुछ सामान्य सेटअप समस्याओं से निपटना काफी मुश्किल है। पहली बार एसडीएल सेटअप प्राप्त करने के बाद, मैं अपने जीवन के बाकी हिस्सों के लिए कुछ भी आसानी से प्राप्त करने में सक्षम था। कि इसने मुझे कितने सिरदर्द दिए; एक पुस्तकालय की स्थापना के लिए मुझे जितना अनुभव हुआ उससे अधिक सीखने का अनुभव है। यह बहुत पहले याद करना था कि वास्तव में मुझे सबसे अधिक समस्याएं क्या थीं, या मुझे क्या समस्याएं थीं, लेकिन अन्य सभी पुस्तकालयों को सेटअप करना आसान था।
कार्टर 81१

7

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

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

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

SFML बॉक्स के ठीक बाहर आता है। इसमें ध्वनि है, इसमें वीडियो है, इसमें मिश्रण है, इसमें फ्रेम-कैपिंग है, और यह ऑब्जेक्ट ओरिएंटेड है। यदि आप ऐसा चाहते हैं, तो मैं आपको उसके लिए जाने की सलाह दूंगा। SFML में कुछ बुनियादी कार्यक्षमता के लिए opengl (विशेष रूप से startShape / EndShape और पिक्सेल शेड्स) में एक अमूर्त परत है। मुझे नहीं लगता कि एसडीएल के पास ऐसा कुछ है, बस इसके साथ विलय करने की एक विधि है।

PS C / C ++ से वार्तालाप को दूर करने के लिए नहीं, लेकिन यदि आप किसी विशेष कारण से उस भाषा का उपयोग नहीं कर रहे हैं, और एक आसान चाहते हैं, तो हमेशा pygame है। जो मूल रूप से अजगर के लिए एसडीएल + है।


2
एसएफएमएल भी सी ++ है, जबकि एसडीएल सी है। इससे फर्क पड़ता है कि क्या आप वास्तव में सी ++ सीखना चाहते हैं।
jsimmons

5

http://www.gamedev.net/community/forums/mod/journal/journal.asp?jn=263140&reply_id=3598844

मैं इन टिप्पणियों से सहमत हूं और सोचता हूं कि यह एक गहन चर्चा है कि ओपनएक्स की तुलना में डायरेक्टएक्स क्यों बेहतर है।

वह पत्रिका वॉल्फ में डेविड के जवाब में है।

मुझे उम्मीद है कि इसे थोड़ा संतुलित करने के लिए कार्य करता है। ;)

लेकिन सामान्य तौर पर, यदि आप क्रॉस-प्लेटफॉर्म, क्रॉस-एपीआई फ्रेमवर्क का उपयोग कर रहे हैं:

विंडोज पर ओपनएक्स का उपयोग करें और * निक्स पर ओपनजीएल।


महान पढ़ें =) यह विषय क्या है मेरा क्षेत्र ...
नेलर

6
404, पृष्ठ नहीं मिला
axel22


मुझे आर्काइव.गमेदेव.नेट / ... लिंक पर एक 404 मिलता है।
एक्सिलेंट

4

http://blog.wolfire.com/2010/01/Why-you-should-use-OpenGL-and-not-DirectX

मैं इन टिप्पणियों से सहमत हूं और यह समझता हूं कि ओपनएक्स डायरेक्टएक्स की तुलना में क्यों बेहतर है, इस पर चर्चा हुई।

हालाँकि, यह सवाल बिल्कुल राय का विषय है, और डायरेक्टएक्स बिल्कुल ओपनगेल, विशेष रूप से 10 और 11 और विशेष रूप से खेल के विकास के संदर्भ में इसके फायदे हैं।

इसके अलावा, क्या आपको ओपनजीएल के साथ जाने का चयन करना चाहिए, एसडीएल एक अद्भुत और बहुत लोकप्रिय पुस्तकालय है, और ओपनजीएल (नेह, आदि) सीखने के लिए बहुत सारे संसाधन हैं - लेकिन यह शायद एक और प्रश्न के लिए जगह है।


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

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

1

यदि आप अभी शुरुआत कर रहे हैं तो शायद एक मौजूदा 2D इंजन या फ्रेमवर्क जैसे SFML का उपयोग करना बेहतर होगा


1

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

मैंने पाया कि प्रत्यक्ष x कोड का अधिकांश भाग एक अलग संस्करण के तहत संकलित नहीं होगा और यदि आप एक ट्यूटोरियल का अनुसरण करने की कोशिश कर रहे हैं तो यह नरक हो सकता है।

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


1

हाफ का गेम इंजन

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

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

http://hge.relishgames.com/


0

जैसा कि आप कर रहे हैं उसी स्थिति में Im, खेल के विकास पर काम करना शुरू कर दिया है (iPhone प्लेटफॉर्म पर) कुछ महीने पहले। C बैकग्राउंड से आते हुए, मैं वास्तव में आपको एक फ्रेमवर्क (विशेष रूप से Cocos2d) का उपयोग करने का सुझाव दूंगा।

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

आप डायरेक्ट ओपनजीएल के रास्ते पर जा सकते हैं लेकिन मेरे लिए यह सिर्फ ओवरकिल जैसा लगता है।

आप ज्यादातर विभिन्न भौतिकी पुस्तकालयों को देखना चाहेंगे जो वहां मौजूद हैं - अधिक जानकारी के लिए Google चिपमंक और बॉक्स 2 डी।

चियर्स!


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