वहाँ एक अच्छा कारण है कि मैं एक खेल के लिए एक जावा एप्लेट का उपयोग नहीं करना चाहिए?


9

मैं एक मल्टीप्लेयर ब्राउज़र-आधारित गेम बनाना चाहता हूं। एक एप्लेट का उपयोग करने के बारे में अच्छी बात यह है कि मैं क्लाइंट और सर्वर को एक ही भाषा (जावा / क्लोजर / स्काला / आदि) में बना सकता हूं। मुझे पता है कि वहाँ html5 और जावास्क्रिप्ट है, लेकिन सर्वर साइड जावास्क्रिप्ट के रूप में परिपक्व नहीं है jvm मंच और ब्राउज़र समर्थन अभी भी परतदार है।

Applets को व्यापक रूप से उपयोग नहीं किया जाता है (Runescape को छोड़कर), लेकिन क्या कोई कारण है कि वे अनुपयुक्त हैं या यह सिर्फ इसलिए कि वे अपनी प्रारंभिक अवस्था में विकसित हुई खराब प्रतिष्ठा के कारण हैं?


1
शायद इसलिए कि कुछ लोग जावा में वेब गेम करते हैं, और फ्लैश पसंद करते हैं?
कम्युनिस्ट डक

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

जवाबों:


9

वे स्पष्ट रूप से इसके लिए अनुपयुक्त नहीं हैं, जैसा कि रुन्स्केप और माइनक्राफ्ट और अन्य छोटे जावा एप्लेट गेम्स द्वारा प्रदर्शित किया गया है । हार्डवेयर-त्वरित 3 डी ग्राफिक्स ( LWJGL , JOGL ) के लिए पुस्तकालय भी हैं । यह खेल विकास समुदाय में सिर्फ एक लोकप्रिय भाषा नहीं है।

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


इसके अतिरिक्त आपको अपने लक्षित बाजार के बारे में सोचना होगा - मिनीक्राफ्ट खिलाड़ी स्पष्ट रूप से java.com पर जा सकते हैं और इसे स्थापित कर सकते हैं, लेकिन बहुत सारी "इंटरनेट एक्सप्लोरर भीड़" नहीं हो सकती है।
जरी कोमप्पा

हालाँकि, Minecraft इस तरह से बनाया गया है कि वे उपयोगकर्ता केवल निष्पादन योग्य संस्करण को डाउनलोड कर सकते हैं, जिसमें JRE शामिल है और इस तरह के किसी भी इंस्टॉलेशन की आवश्यकता नहीं है; यह बस काम करता है ™।
Ricket

2
मुझे लगता है, कि जावा महान समाधान है कि कैसे कुछ स्थापित करने के लिए उपयोगकर्ता को मजबूर किए बिना ब्राउज़र में gpu का उपयोग करें (80-85% उपयोगकर्ताओं ने जावा को स्थापित किया है ... एक्सप्लोरर
नूब्स

6

मैं गेम लिखने के लिए जावा का उपयोग करता हूं और मैंने गेम लिखने के लिए C ++ का उपयोग किया है और जावा को तब तक ठीक पाया है जब तक आप जावा की ताकत और कमजोरियों के बारे में ध्यान रखते हैं। मेरे लिए बड़े दो फायदे, जावा में प्रोग्रामिंग विकास की गति और तैनाती / पोर्टेबिलिटी हैं। संकलन समय VC ++ की तुलना में बहुत तेज होता है (अभी तक XCode या Clang के लिए नहीं बोल सकते हैं) जिसका अर्थ है कि मैं समस्याओं को जल्दी दूर कर सकता हूं। इसके अलावा, जैसा कि ग्रहण लगातार संकलित कर रहा है, मैं कम टाइपो त्रुटियां करता हूं। मैंने कभी भी C ++ कोड का एक टुकड़ा नहीं लिखा है जो किसी अन्य सिस्टम या कंपाइलर पर 'काम करता है'। जावा में, यह आदर्श है।

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


3

वेब गेम के लिए जावा एप्लेट्स के साथ कुछ भी गलत नहीं है। मैंने जावा में एक खुला स्रोत रॉगुलाइक गेम ( तानाशाह ) लिखा और यह एप्लेट के रूप में बहुत अच्छा काम करता है।

मेरे अनुभव में जावा के कुछ बड़े प्लस पॉइंट:

  • पोर्टेबिलिटी उत्कृष्ट है - तानाशाह की जटिलता को देखते हुए, यह बहुत प्रभावशाली था कि मैं विंडोज, मैक और लिनक्स पर अच्छी तरह से चलाने के लिए समान संकलित कोड प्राप्त करने में कामयाब रहा।

  • आप ब्राउज़र quirks के बारे में चिंता करने की ज़रूरत नहीं है।

  • थोड़ी चालाकी के साथ, आप एक ही कोड को एप्लेट या स्टैंडअलोन डेस्कटॉप एप्लिकेशन के रूप में चला सकते हैं

  • प्रदर्शन एक आधुनिक जेवीएम मान रहा है।

  • खुले स्रोत पुस्तकालयों / एपीआई आदि के महान सरणी के संदर्भ में जावा के सभी सामान्य प्लस अंक।

बस निम्नलिखित के बारे में पता होना चाहिए:

  • यदि आप स्थानीय फाइल सिस्टम पर डेटा स्टोर करना चाहते हैं या देशी पुस्तकालयों का उपयोग करना चाहते हैं तो आपको अपने एप्लेट पर हस्ताक्षर करने / विशेषाधिकार प्राप्त करने की अनुमति लेनी होगी। यह कुछ उपयोगकर्ताओं के लिए बाधा बन सकता है।

  • स्टार्टअप का समय फ्लैश या जावास्क्रिप्ट की तुलना में थोड़ा धीमा हो जाता है। दूसरी ओर, JVM के उठने और चलने के दौरान प्रदर्शन बेहतर होता है ......

  • जावा एक कचरा एकत्रित भाषा है, इसलिए इसमें बहुत कम GC पॉज़ होते हैं। वास्तव में कैजुअल / रोलप्लेइंग / स्ट्रेटेजी गेम्स के लिए समस्या नहीं है, लेकिन उच्च प्रदर्शन 3 डी एफपीएस खिताब के लिए एक मुद्दा हो सकता है, जहां आप एक निरंतर घबराहट मुक्त 120 एफपी फ्रामर्ट बनाए रखने की कोशिश कर रहे हैं ......


1

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


क्या मुझे कोई अवसर सूंघना है? :)
Ricket

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

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