क्या जावा गंभीर खेल विकास के लिए व्यवहार्य है? [बन्द है]


64

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

क्या जावा गंभीर खेल विकास के लिए एक स्वीकार्य भाषा है? गंभीर रूप से, मेरा मतलब है कि उच्च गुणवत्ता वाले ग्राफिक्स, आधुनिक कंप्यूटर पर बहुत अधिक अंतराल के बिना। मैं कंसोल्स के लिए गेम बनाने पर भी विचार करना चाहता हूं।


25
क्या जावा के साथ मिनीक्राफ्ट नहीं बनाया गया है? या मुख्य रूप से ओपन? ओह, और सी # देखें यदि आप जावा पर 100% सेट नहीं हैं, क्योंकि यह कमाल है।
अरालोक्स

7
आप स्टैक ओवरफ्लो C ++ चैट में क्यों नहीं आते हैं? हम सी ++ से प्यार करते हैं, हमें लगता है कि यह बिल्कुल सही उपयोग किया जा सकता है, और हम जानते हैं कि यह कैसे करना है, और हम साझा करने के लिए पूरी तरह से खुश होंगे।
डेडएमजी

12
Minecraft java + LWJGL + Notch का कोडिंग कौशल है, इसलिए प्रदर्शन-वार यह TERRIBLE है।
MLProgrammer-CiM

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

4
आपको बहुत सी गलत सूचनाएँ मिलने जा रही हैं क्योंकि जावा / सी ++ वार्स चमकीले रूप से जलते हैं, एक राय को स्वीकार करने से पहले विशिष्ट उदाहरणों के लिए पूछने के लिए तैयार रहें और अपने आप पर अधिक शोध करें =) कहा जा रहा है, मैं @loganfsmyth से सहमत हूं आपको कई भाषाओं को जानने की आवश्यकता होगी क्योंकि केवल तभी आप किसी भी कार्य के लिए सही उपकरण चुन सकते हैं। तत्काल भविष्य में यदि आप "गेम स्टाइल प्रोग्रामिंग" सीखना चाहते हैं, तो जो आप (जावा) के साथ सहज हैं उसका उपयोग करें और बाद में सी ++ सीखें। हेक, बाद में आप सी # में सामग्री पाइपलाइन कर सकते हैं और जावा एमई में गेम, भविष्यवाणी करना मुश्किल हो सकता है =)
पैट्रिक ह्यूजेस

जवाबों:


54

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

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

दूसरी ओर, जावा के साथ आपको कुछ समस्याएं हैं।

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

40

ज़रुरी नहीं। यहाँ बात है- सबसे पहले, जावा के लिए मौजूदा पुस्तकालयों के संदर्भ में बहुत कम है, लगभग सभी चीजों की तुलना में जो C ++ के लिए है।

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

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

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

हाँ, बिल्कुल यह होगा। जावा और C ++ अपने सतही वाक्यगत समानता के बावजूद बहुत भिन्न हैं। जावा अनुभव C ++ सीखने के दौरान लगभग कुछ भी नहीं के लिए मायने रखता है।

ग्राफ़िक्स पर गेमप्ले है एक व्यवहार्य विकल्प है, और आप Terarria और Minecraft की तरह खेल की सफलता में देख सकते हैं। लेकिन अगर आप srs के ग्राफिक्स बनाने का इरादा रखते हैं, तो यह जावा में उल्लेखनीय नहीं होगा।


6
+1 के बाद से उन्होंने भारी ग्राफिक्स निर्दिष्ट किए, फास्ट गेम बिना अंतराल के खेलते हैं।
यहोशू ड्रेक

1
जावा के अहस्ताक्षरित डेटा प्रकारों की कमी भी इसके खिलाफ है। हां, आप इसके आसपास काम कर सकते हैं, लेकिन यह आदर्श नहीं है और आप ऐसे कोड का उपयोग करेंगे जो वास्तव में अंतर्निहित डेटा को सही ढंग से प्रतिबिंबित नहीं करता है।
मैक्सिमस मिनिमस

@deadmg लॉक और अनलॉक होने का मामला है , क्या आप कुछ डायरेक्टएक्स एप की कार्यक्षमता की बात कर रहे हैं? क्या आप मुझे बता सकते हैं कि गैर-नियतात्मक जीसी होने के बारे में क्या बुरा है।
क़ाज़ी इरफ़ान

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

2
एक शुरुआत आपको पूरी तरह से फिर से लिखना होगा।
डेडएमजी

25

इसलिए, मैं वास्तव में खेल के विकास के बारे में गंभीर हूं, क्या जावा अभी भी एक व्यवहार्य विकल्प है? मैंने C ++ सीखने के लिए कई बार कोशिश की है, लेकिन मुझे वास्तव में भाषा पसंद नहीं है। मैं वास्तव में नहीं जानता, लेकिन आमतौर पर, जब भी मैं सीखने की कोशिश करता हूं, मैं कभी भी विषयों को समझ नहीं पाता।

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

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

तो, संक्षेप में, गंभीर खेल विकास के लिए, जावा को गंभीर रूप से लिया जा सकता है। इसमें भारी ग्राफिक्स, लैग के बिना फास्ट गेम खेलना, और संभवतः, और कंसोल पर आसान स्विच शामिल हैं?

  1. हेवी ग्राफिक्स: संभव है, लेकिन आप जावा / LWJGL में वही काम करने जा रहे हैं, जैसा कि आप C ++ / GL में हैं: GPU बफ़र्स को बाइट्स लिखकर और / या Minecraft की तरह चित्रित प्रदर्शन सूचियों का उपयोग करके। यदि आप स्मृति प्रबंधन को नहीं समझते हैं, तो आप इसे सही ढंग से करने नहीं जा रहे हैं।

  2. फास्ट गेम बिना लैग के खेलें: किसी भी भाषा में एक आसान काम नहीं है, और आप इसे बिना सोचे समझे किसी भी तरह से अपने आप को पैर में गोली मार सकते हैं।

  3. नहीं, जावा कंसोल पर उपलब्ध नहीं है।


एक साइड सवाल के रूप में, जब वे पदावनत किए गए तो डिस्प्ले सूचियों को क्या बदला गया?
बीर

@ संकेत: प्रोग्राम योग्य पाइपलाइन, मेरा मानना ​​है।
डेडएमजी

हा! पहले से ही इसे कवर किया। VBOs: gamedev.stackexchange.com/questions/22170/…
जिमी

मोबाइल प्लेटफार्मों को शान्ति माना जा सकता है। मुझे लगता है कि वह शायद बड़े तीन के बारे में बात कर रहा था, लेकिन एंड्रॉइड जावा का उपयोग करता है और इसके लिए बहुत सारे गेम बनाए जाते हैं।
एम्प्लीफायर91

1
@ Amplify91 हाँ कुछ गेम एंड्रॉइड के लिए जावा में लिखे गए हैं। लेकिन ज्यादातर अच्छे गेम और शायद सभी ग्राफिक इंटेंसिव या मल्टी प्लेटफॉर्म गेम्स एंड्रॉइड NDK का उपयोग करके C ++ में लिखे गए हैं।
कोयोट

15

एक अनुभवी प्रोग्रामर आम तौर पर कई प्रोग्रामिंग भाषाओं को जानता होगा - एक बार अच्छी तरह से जानने के बाद अतिरिक्त प्रोग्रामिंग भाषा सीखना बहुत कठिन नहीं है। हालाँकि मैं दृढ़ता से सलाह दूंगा कि C ++ आपकी पहली भाषा नहीं होनी चाहिए, और शायद दूसरी भी नहीं।

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

मेरा सुझाव है कि आप अभी के लिए जावा के साथ रहना (या यदि आप चाहें तो C # पर स्विच करें)। यह आपको C ++ का उपयोग करने की तुलना में चीजों को तेज करने देगा, और पीसी पर प्रदर्शन एक मुद्दा नहीं होना चाहिए।

सुरक्षित भाषाओं में कुछ प्रोजेक्ट पूरा करने के बाद C ++ सीखने के बारे में सोचें। C ++ आपको सबसे अधिक पेशेवर गेम डेवलपमेंट जॉब्स की आवश्यकता होगी।

ध्यान दें कि C # / XNA के अपवाद के साथ एक गेम जिसे आपने कम से कम एक कंसोल पर लिखा था, आपको एक कंपनी स्थापित करने की आवश्यकता होती है, एक कार्यालय के साथ, और विकास हार्डवेयर और अन्य खर्चों के लिए एक बड़ा बजट उपलब्ध होता है।


यह असाधारण रूप से सत्य भी है क्योंकि C ++ से परे अन्य भाषाएं आपको उपलब्धि का एहसास देंगी। C ++ को कुछ भी नहीं महसूस करने के लिए सैकड़ों घंटे लग सकते हैं। अन्य भाषाओं को सीखने से पहले आप अपने पैरों को गीला कर सकते हैं।
डार्कनर

कमी-त्रुटि-हैंडलिंग के बारे में आपकी टिप्पणी वास्तव में C (और तथाकथित C ++ कोड जो वास्तव में C है) के बारे में हैं। C ++ में मानक लाइब्रेरी (और मानक टेम्प्लेट लाइब्रेरी) हैं, जो आपके द्वारा वर्णित की तुलना में बहुत बेहतर त्रुटि से निपटने में हैं। C ++ में विक्रेता-प्रदत्त पुस्तकालय (जैसे MFC) भी हैं जो सभ्य त्रुटि हैंडलिंग प्रदान करते हैं।
जैस्पर

9

अस्वीकरण: यह बिल्कुल आपके प्रश्न का उत्तर नहीं देता है। हालांकि, मैंने कुछ बिंदुओं का उल्लेख करने का प्रयास किया है जो आपके लिए रुचि के हो सकते हैं।

C ++ के बारे में आप इतना कुछ देखते हैं इसका कारण यह है कि C ++ अभी भी उद्योग मानक है - कंसोल के लिए सबसे आम भाषा, आदि।

जावा का अक्सर उपयोग नहीं किया जाता है। Minecraft एक बहुत लोकप्रिय खेल है जिसने इसे जावा के साथ बड़ा बनाया है; लेकिन यह बहुत अच्छा नहीं है। स्पिरल नाइट्स खराब नहीं है - जावा में भी बनाया गया है, जिसमें महत्वपूर्ण ग्राफिक्स हैं।

यदि आप जावा पसंद करते हैं, तो सी # सिंटैक्स में बहुत समान है, इस लाभ के साथ कि यह C ++ के साथ इंटरोप कर सकता है - इसलिए यदि आवश्यक हो तो निम्न स्तर का सामान C ++ में किया जा सकता है। एकता स्क्रिप्टिंग के लिए C # का उपयोग कर सकती है, और XNA एक उत्कृष्ट पसंद है।

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

मुझे उम्मीद है कि आपके सपने इसे पूरा करेंगे, यह बहुत मजेदार है :)


8
इस पोस्ट में बहुत सारे और बहुत सी गलतियाँ। Minecraft "खराब" ग्राफिक्स भाषा से संबंधित (भारी) नहीं हैं। MC खराब प्रदर्शन का सीधा संबंध जावा से खेलों के लिए खराब भाषा होने के कारण है क्योंकि बहुत बड़ा प्रदर्शन जारी है, और LWJGL एक ही कारण से बड़ी कोडिंग परियोजनाओं के लिए अनुपयुक्त पुस्तकालय है। लेकिन सबसे बड़ा कारक था नॉच का खराब कोडिंग और कार्यान्वयन, जो तय हो रहा है ... धीरे-धीरे। C # आपको Java प्रदर्शन समस्याओं के अधिकांश के बिना प्रबंधित मेमोरी के सभी अप देता है। नकारात्मक पक्ष यह है कि C # गेम और एप्लिकेशन दोनों के लिए भारी Microsoft-केंद्रित है।
MLProgrammer-CiM

2
@EfEs: मुझे आपसे इसे तोड़ने से नफरत है, लेकिन प्रबंधित मेमोरी गेम के लिए भयानक है, और जो लोग XNA में कोड गेम खेलते हैं, उन्हें C ++ में कोड करने वाले लोगों की तुलना में मेमोरी का प्रबंधन करने में अधिक समय बिताना पड़ता है। जीसी के गैर-नियतात्मक प्रकृति का मतलब है कि आपको व्यावहारिक रूप से सब कुछ पूल करना होगा और प्लेग की तरह आवंटन से बचना चाहिए - जिस तरह से भाषा का उपयोग नहीं किया जाना चाहिए था।
डेडएमजी

यह उत्तर 100% सटीक नहीं था; मैंने केवल उन उदाहरणों का हवाला दिया, जिनके बारे में मैं जानता हूं। बेझिझक DV।
ashes999

2
@DeadMG मुझे पता है कि C ++ जाने का रास्ता है, मैं बस यह समझाने की कोशिश कर रहा था कि C # गेम के लिए जावा से बेहतर है।
MLProgrammer-CiM

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

3

यह आपके प्रश्न का उत्तर नहीं देता है; ग्राफिक्स और कंसोल मुद्दे कुछ ऐसे प्रतीत होते हैं जिन पर आपको बहुत विचार करने की आवश्यकता है। इसके अलावा जीसी प्रदर्शन पर असर डालता है। लेकिन मैं इसके बारे में क्या लिखता हूं:

यदि आप बड़े, जटिल, OO प्रोग्राम लिख रहे हैं, तो आप उन्हें C ++ की तुलना में जावा में 5 गुना तेज लिखेंगे। इसके अलावा, रखरखाव काफी आसान हो जाएगा। मैंने स्विच किया, (गैर-गेम सॉफ़्टवेयर के लिए स्वीकार किया), और मेरी उत्पादकता आसमान छू गई। एक और अच्छा विकल्प, सी #, जावा की तुलना में सीखना कठिन है क्योंकि इसमें बहुत कुछ है। जब आप इसे जानते हैं, तो आप जावा की तुलना में तेजी से कोड भी लिख सकते हैं; यह आपको बहुत सारी ट्रिक्स प्रदान करता है। हालाँकि, मुझे लगता है कि उन तरकीबों से रखरखाव मुश्किल हो सकता है। और फिर जावा डॉक्टर है, जो सूर्य पुस्तकालयों और आपके अपने पुराने कोड के साथ मदद करता है । C # में ऐसा कुछ नहीं है।

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


3

यार देखो, " गेम देव के लिए जावा व्यवहार्य है " का सरल उत्तर एक स्पष्ट हाँ है। गेम बनाने के लिए आप किसी भी प्रोग्रामिंग भाषा का उपयोग कर सकते हैं। इसका मतलब यह नहीं है कि आपको चाहिए

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

जावा कुछ चीजें करता है (जैसे कि सरणी बाउंड चेकिंग) जो इसे धीमी गति से चलाते हैं। में इस अनुकूलित जावा पर्लिन शोर उदाहरण कोड, लेखक ने टिप्पणी की "(सरणी पहुँच सदस्य पहुँच की तुलना में बहुत धीमी है)"। इस तरह की चीज C ++ बैकग्राउंड से आने वाला सुंदर काउंटर है। लेकिन जावा में, ऐसी चीजें हैं।

मैं कहता हूं कि बुलेट को चकमा देना बंद करो, C ++ सीखो, और इसका उपयोग करो।


1

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

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

समस्या यह है कि क्या आप C ++ का जावा चुनते हैं, आपको सीखना होगा कि कैसे सही तरीके से कंसीलर का उपयोग किया जाए और मेमोरी मैनेजमेंट की अच्छी समझ हो। सब के बाद, आप बस के रूप में आसानी से mallocआप के साथ कर सकते हैं के साथ पेंच new। मुझे नहीं पता कि उपकरण C ++ के लिए क्या हैं, लेकिन जावा के लिए प्रोफाइलिंग टूल आईडीई के साथ उपयोग करना, मुफ्त और एकीकृत करना काफी आसान है। आप प्रदर्शन समस्याओं को ट्रैक करने और सीखने के लिए उनका उपयोग कर सकते हैं


5
सीएस में औपचारिक शिक्षा किसी भी विषय में वास्तविक प्रोग्रामिंग कौशल के लिए जैक शिट के लायक है। मुझे पता होगा, मैं अपने तीसरे वर्ष में हूँ।
डेडएमजी

4
निश्चित रूप से डेडएमजी से असहमत हैं। मेरे द्वारा पसंद किए जाने वाले पाठ्यक्रम और स्नातक किए जाने के बाद, सीएस ने मेरी खेल विकास शक्तियों को 10% से 100% तक ले लिया। इसने मुझे यूआई, आइकनोग्राफी आदि नहीं सिखाई बल्कि वास्तविक, वास्तविक कोडिंग दी।
ashes999

2
@ ashes999: तब आप भाग्यशाली हुए। मेरा पाठ्यक्रम बेकार है और मुझे पता है कि कई अन्य हैं जो समान महसूस करते हैं।
डेडएमजी

2
@DeadMG यह देखना मुश्किल है कि आप कब पढ़ रहे हैं। एक बार जब आप कुछ साल एफ / टी पर काम करते हैं, और अन्य मानार्थ कौशल सीखते हैं, तो आप देखेंगे। मैंने किया। लेकिन शायद मैंने बस बहुत ध्यान दिया और अपने खेल देव शौक के लिए सब कुछ लागू करने की कोशिश की।
ashes999

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