2 डी गेम के लिए, क्या कोई कारण नहीं है कि डायरेक्ट 3 डी या ओपनजीएल जैसे 3 डी एपीआई का उपयोग न करें?


20

मैं काफी समय से शौक खेल विकास से बाहर हूं। जब मैंने ऐसा किया था, तो ज्यादातर लोग 2D गेम्स बनाने के लिए डायरेक्ट ड्रॉ का इस्तेमाल करते थे। जब तक मैंने लोगों को रोका तब तक ओपनगेट या डायरेक्ट 3 डी एक ऑर्थोगोनल प्रोजेक्शन के साथ कह रहे थे कि बस जाना है।

मैं 2 डी गेम बनाने के बारे में सोच रहा हूं, विशेष रूप से मोबाइल फोन पर लेकिन शायद एक्सएनए प्लेटफॉर्म पर भी। OpenGL का उपयोग करके कुछ बनाने के लिए मुझे 3 डी विकास के लिए खुद को प्रेरित करने के लिए (उम्मीद के मुताबिक) छोटा सीखने की अवस्था होगी।

क्या इसे छोड़ने का कोई कारण है और इसके बजाय एक 2 डी फ्रेमवर्क के साथ काम करना है जहां मेरे पास सिर्फ एक चौड़ाई x ऊँचाई फ्रेम बफर है जो मुझे पिक्सल के साथ भरने की आवश्यकता है?


यह प्रश्न वास्तव में गलत है ... मेरा मतलब है: Direct3D और OpenGL वास्तव में 3D API नहीं हैं, क्या वे हैं? वे हार्डवेयर त्वरण की पेशकश कर रहे हैं, लेकिन 2 डी और 3 डी दोनों में। वहां थोड़ा अंतर है।
जेकमू

जवाबों:


20

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

अपने खेल के लिए, मैंने 2D ऑब्जेक्ट्स से निपटने के लिए कक्षाओं का एक सेट बनाया। मेरा गेम लॉजिक केवल x और y निर्देशांक के साथ काम कर रहा था। मेरी कक्षाओं ने भी रोटेशन, स्केलिंग, ब्लेंड मोड, आदि जैसी चीजों को संभाला।

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


मुझे यह सुनने में दिलचस्पी होगी कि xna पर्दे के पीछे 2d एपीआई को कैसे संभालती है
Iain

5
यह अंत में सभी 3 डी है। स्प्राइटबैच, 2 डी वर्कहॉर्स को प्रस्तुत करता है, यह एक छायादार प्रभाव है।
drxzcl

कार्यान्वयन से इंटरफ़ेस को डिकूप करने के लिए +1।
स्टीव एस

@ यहाँ XNA लेखकों xnatoolkit.codeplex.com द्वारा लिखित DirectX11 में एक XNA निहितार्थ है
क्लासिकथुंदर

8

3D API का उपयोग न करने का एक कारण है।

केवल NA, उत्तर-पश्चिम यूरोपीय संघ और जापान के कंप्यूटर ही उनका समर्थन करते हैं ...

मैं उदाहरण के लिए ब्राजील में रहता हूं, मेरी बहन का कंप्यूटर नया है, जिसमें मल्टी-कोर प्रोसेसर है, कई जीबी रैम हैं, और फिर भी यह ओपनिंग गेम्स नहीं चलाता है।

मैं उदाहरण के लिए केवल बौना किले (एएससीआईआई ग्राफिक्स प्रस्तुत करने के लिए ओपनजीएल का उपयोग कर सकता हूं) अपने खुद के कंप्यूटर पर खेल सकता हूं, किसी भी अन्य कंप्यूटर पर मुझे लगता है कि यह धीमी गति से क्रॉल करता है।

और यह केवल ब्राजील के साथ एक मुद्दा नहीं है, मैंने आसपास के लोगों से पूछा, और यह दुनिया के कई स्थानों पर आम है ... आबादी जो वास्तव में ओपनजीएल या डायरेक्ट 3 डी संगत कार्ड के मालिक हैं, एक अल्पसंख्यक है ...

केवल यह कि इस अल्पसंख्यक को कंपनियों से अधिक ध्यान देना है ...

लेकिन अगर आप केवल इन "पारंपरिक" बाजारों (एनए, नॉर्थवेस्ट ईयू, जेपी) को लक्षित कर रहे हैं, तो इसके लिए जाएं!

उन डाउनवोटिंग के लिए EDIT: जाहिर है आप असहमत हैं, इसलिए, क्या आपके पास PROOF है कि कोई भी जहाज अब किसी भी या केवल OpenGL 1.0 समर्थन के साथ गंदे VIA या SIS चिप्स (या अन्य अज्ञात या बदतर निर्माताओं) के साथ कंप्यूटर नहीं है?

मेरे घर में मेरे जैसी दो मशीनें हैं, और वे नई हैं (दोनों में एक से अधिक कोर हैं, दोनों में 2 जीबी रैम है, दोनों में 2GHz से ऊपर की घड़ी की आवृत्ति है ...)

मेरे विश्वविद्यालय में 200 मशीनें हैं, यहां तक ​​कि कुछ डेल-बिल्ट भी।

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

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

यहाँ ब्राजील में, सबसे लोकप्रिय गेम काउंटर-स्ट्राइक है, जो सॉफ्टवेयर मोड में चल रहा है ... कुछ लैन-हाउसों में केवल 10% मशीनें GPU के साथ हैं, यहां तक ​​कि 200 या 300 स्टेशनों के साथ बड़े-गधे भी हैं ...

मुझे इस पर पोस्ट नहीं करना चाहिए था, मुझे पता था कि यह नीचे-वोटों को आकर्षित करेगा, मुझे इसे पोस्ट करने के लिए अंकों का मुफ्त नुकसान मिला, हर बार मैं समझाता हूं कि मेरा अन्य खेल 5.0 के बजाय एल्लेग्रो 4.4 का उपयोग क्यों करता है क्योंकि 5.0 डायरेक्ट ड्रॉ का समर्थन नहीं करता है या सॉफ्टवेयर मोड मुझे बहुत सारे लोगों से यह कहते हुए बहुत सारी फ्लाक मिलती है कि मैं एक तरह का झूठा हूं या कि मैं इस सच्चाई को ओपनग्लस त्वरण की वास्तविक उपलब्धता के बारे में कहने के लिए बेवकूफ हूं।

संपादित करें 2: ओपनजीएल वाले गेम खेलने और विकसित करने में सक्षम होने के लिए, मुझे अपने माता-पिता और अन्य लोगों से मुझे एक GeForce 8600 खरीदने के लिए भीख माँगनी पड़ी (वह सबसे सस्ता कार्ड था जो मुझे मिला कि अभी भी बड़े पैमाने पर प्रभाव 1 और अन्य UT3 भाग सकता है -अंगाइन गेम्स), उन्होंने मुझे एक खरीदा, लेकिन अब मैं कई साल से बिना किसी अन्य उपहार के फिर से मिल रहा हूं, जन्मदिन का उपहार भी नहीं, क्योंकि यह कितना महंगा था, और मुझे उम्मीद है कि यह कार्ड 3 या 4 साल तक काम करेगा ...

संपादित करें 3:
एक व्यावहारिक उदाहरण: एलेट्रोनिक आर्ट्स ने अल्टिमा ऑनलाइन के लिए एक नया ग्राहक बनाया जो अपने 2 डी ग्राफिक्स के लिए 3 डी त्वरण का उपयोग करता है ... परिणाम: खिलाड़ियों को बहुत कम framerates की शिकायत है, और ईए ने अपने फैसले में समर्थन का उपयोग लागू करने के लिए समर्थन किया नया ग्राहक (अब इसे पुराने के उपयोग की अनुमति है)

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


3
वहाँ कोई चिप्स नहीं हैं जो आज 3 डी का समर्थन नहीं करते हैं। सबसे अधिक संभावना है कि आपको केवल ड्राइवरों को अपडेट करने की आवश्यकता है, क्योंकि विंडोज द्वारा प्रदान किए गए लोग ओपनजीएल समर्थन के साथ नहीं आते हैं। सबसे आम बकवास GPU है इंटेल GMA सामान और यहां तक ​​कि कुछ बुनियादी OpenGl समर्थन भी है।
Axel Gneiting

1
फिर से दोहरा रहे हैं: यहाँ चिप्स इंटेल GMA सामान की तुलना में काम कर रहे हैं। और हां, कुछ संशोधित ड्राइवर समस्या को हल करते हैं, लेकिन आप उपयोगकर्ताओं से इस बारे में जानने की उम्मीद नहीं कर सकते।
स्पीड

एक व्यावहारिक उदाहरण: एलेट्रोनिक आर्ट्स ने अल्टिमा ऑनलाइन के लिए एक नया क्लाइंट बनाया जो अपने 2 डी ग्राफिक्स के लिए 3 डी त्वरण का उपयोग करता है ... परिणाम: खिलाड़ियों के बहुत से कम framerates की शिकायत करते हैं, और ईए नए ग्राहक के उपयोग को लागू करने के लिए अपने फैसले में पीछे हटते हैं (अब इसे पुराने एक का उपयोग करने की अनुमति है)
गतिमान जूल

1
नया क्लाइंट 2008 से है, जो मेरी कहानी कहती है: 2008 में लोगों ने एक ओपन क्लाइंट को नापसंद किया, और 1997 के एक का उपयोग करने के लिए वापस ले लिया।
तेज जूल

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

3

नहीं, वहाँ नहीं है। 3 डी रेंडरर का उपयोग करके आपको बेहतर प्रभाव और तेजी से प्रतिपादन मिलेगा। उदाहरण के लिए, यहां एक 2d गेम है जिसे मैंने कुछ सप्ताह पहले (एक सप्ताहांत में) किया था - ओर्ब प्रभाव 3 डी शेड्स पर बहुत अधिक दुबला होता है, भले ही कई मायनों में वे 2 डी प्रभाव होते हैं। इसी तरह, मैंने इस गेम के लिए उपलब्ध रेंडरिंग तकनीक का व्यापक उपयोग किया - वहाँ पर तीन या चार अलग-अलग पिक्सेल शेडर इफेक्ट्स चल रहे हैं, जो सभी मुझे तेजी से विकसित करते हैं और इसे प्रेटियर बनाते हैं।

3 डी गले लगाओ और इसे प्यार करो, लेकिन इसे एक कम अक्ष के साथ प्यार करो।


2

3 डी एपीआई आमतौर पर जाने का रास्ता है। आज के GPU को 3D ग्राफिक्स रेंडर करने के लिए डिज़ाइन किया गया है, इसलिए आपको बहुत ठोस प्रदर्शन की गारंटी है। और जैसा कि ZorbaTHut ने कहा, 3D मार्ग पर जाने से आप पिक्सेल शेड्स जैसी चीज़ों का लाभ उठा सकते हैं।

वहाँ वास्तव में नहीं कर रहे हैं कि कई 2D एपीआई अब वहाँ से बाहर। DirectDraw को पदावनत कर दिया गया है, और अधिकांश 2D / वेक्टर-आधारित पुस्तकालयों में से किसी भी तरह अपने प्रतिपादन को करने के लिए OpenGL या Direct3D का उपयोग किया जाता है। यहां तक ​​कि आधुनिक यूआई टूलकिट 3 डी एपीआई का भी लाभ उठा रहे हैं ताकि उनका रेंडरिंग और कंपोजिंग हो सके। उदाहरण के लिए WPF (Microsoft का नवीनतम UI फ्रेमवर्क) लें: यह प्रतिपादन के लिए Direct3D का उपयोग करता है।


2

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

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


1

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

उस ने कहा, एक 3 डी ग्राफिक्स बैक-एंड का उपयोग करने से डाउनसाइड्स की तुलना में अधिक उतार-चढ़ाव होता है, इसलिए यदि आप मुझसे पूछते हैं, तो यह प्रयास के लायक है।


1

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

यदि आप खेल के लिए कम से कम एटी / एनवीआईडीआईए कार्ड / चिप की आवश्यकता के लिए खुश हैं, तो एक 3 डी एपीआई का उपयोग करके आपको बहुत सारे शांत सामान (अल्फा सम्मिश्रण, स्केलिंग / रोटेशन, आदि) करने की अनुमति मिलेगी एक शुद्ध सॉफ्टवेयर रेंडरर में अच्छी तरह से / कुशलता से करने के लिए मुश्किल होगा।

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

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

लेकिन आम तौर पर, 3 डी हार्डवेयर कमाल है, और additive सम्मिश्रण अपने दोस्त है :)

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