EVE ऑनलाइन और WOW जैसे MMORPGs को विकसित करने के लिए किन भाषाओं का उपयोग किया जाता है? [बन्द है]


22

जैसा कि मैं इसे समझता हूं, MMORPGs ऐसे गेम हैं जो आपके कंप्यूटर पर किसी भी अन्य सामान्य 3D वीडियो गेम की तरह चलते हैं लेकिन, खेल में होने वाली प्रत्येक क्रिया के साथ, सर्वर पर HTTP कॉल के माध्यम से ब्रह्मांड में परिवर्तन किए जाते हैं। तो खिलाड़ियों कंप्यूटर ग्राफिक्स और एनिमेशन प्रतिपादन के मामले में सभी भारी उठाने करता है, लेकिन, वेब फ्रेमवर्क ऑनलाइन संचार करते हैं।

  • तो मैं सोच रहा हूं कि ईवी ऑनलाइन और वाह जैसे MMORPGs बनाने के लिए वेब फ्रेमवर्क, वेब सर्वर और डेटाबेस का क्या उपयोग किया जा रहा है?

  • साथ ही, क्लाइंट साइड (3D ग्राफिक्स / एनीमेशन / साउंड्स) को गेम का हिस्सा बनाने के लिए किस प्रोग्रामिंग लैंग्वेज और 3D गेम इंजन का उपयोग किया जा रहा है?


मुझे लगता है कि बहुत से हर ऐलेवन ऑफ-द-शेल्फ तकनीकों के साथ शुरू होता है और फिर एक निश्चित आकार तक बढ़ने के बाद नरक को उसमें से अनुकूलित कर लेता है और वास्तव में अपने टूल को विशेषज्ञ बनाना शुरू कर देता है। Stackless मैं / EVE ऑनलाइन में हे एक शानदार उदाहरण है: eveonline.com/devblog.asp?a=blog&bid=584
माइकल Stum

क्या आपका मतलब सर्वर से टीसीपी कॉल है? HTTP (हाइपरटेक्स्ट ट्रांसफर प्रोटोकॉल) का उपयोग वेब सर्वरों और वेब पेजों के ब्राउज़रों द्वारा किया जाता है और इसका जब तक कि आप urbandead जैसे ब्राउज़र आधारित गेम से मतलब नहीं रखते तब तक इसका कोई मतलब नहीं है।
स्टोनमेटल

माइकल स्टम, स्टैकलेस आई / ओ स्टैकलेस पायथन के साथ बनाया गया है?

@ अदम को पता नहीं कि ये दोनों संबंधित हैं या नहीं।
माइकल Stum

जवाबों:


30

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

कुल मिलाकर यह गेम लॉजिक और इंजन के लिए C ++ की तरह लगता है, क्लाइंट स्क्रिप्टिंग के लिए लुआ के साथ आप एक मानक के सबसे करीब होंगे।

वेब पक्ष के लिए, यह सब खत्म हो गया है। हम (Cryptic) विभिन्न बिट्स के लिए PHP, C, और पायथन (Django) के मिश्रण का उपयोग करते हैं। CCP वेबसाइट के लिए ASP का उपयोग करता है, और बैकेंड को शक्ति देने के लिए Python (धीरे-धीरे एक साथ बहते हुए)। WAR और LOTRO दोनों अपनी साइट के लिए PHP का उपयोग करते हैं, हालांकि यह स्पष्ट नहीं है कि वे किस विशेष फ्रेमवर्क का उपयोग कर रहे हैं (यदि कोई हो)।

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


कोडरंगर इसलिए जब आप कहते हैं कि 'क्लाइंट अत्यधिक स्टेटफुल हैं' तो आपका मतलब है कि क्लाइंट ऐप वहां सारा डेटा स्टोर कर रहा है और हमेशा सर्वर को रिक्वेस्ट नहीं भेज रहा है? यह भी, कस्टम सर्वर और कस्टम प्रोटोकॉल विकसित करने के बारे में कोई कैसे सीखता है?

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

3
PAND3d को C ++ में प्रोग्राम किया गया है, न कि C.
jokoon

5

EVE ऑनलाइन के लिए कुछ लिंक:

असल में, EVE ऑनलाइन SQL Server 2005 और कुछ अन्य Microsoft सॉफ़्टवेयर पर चलता है। क्लाइंट बैकबोन ज्यादातर पाइथन में लिखा जाता है, हालांकि (स्टैकलेस पायथन जो मुझे याद हो सकता है, उससे सटीक), और कुछ C ++ सबसे अधिक संभावना है।

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

जानकारी का एक बहुत कुछ नहीं है, लेकिन आशा है कि यह मदद करता है।

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


3

मैं EVE और WoW के बारे में बिल्कुल निश्चित नहीं हूं, लेकिन मैंने देखा है कि MMO गेम C ++, C #, जावा और यहां तक ​​कि सर्वर के लिए PHP (केवल सरल ब्राउज़र-आधारित गेम के लिए उत्तरार्द्ध) का उपयोग करते हैं।

क्लाइंट को अक्सर C ++ (या फ्लैश में अगर यह ब्राउज़र-आधारित गेम है) में लिखा जाता है; मैंने एक बार .NET-आधारित क्लाइंट के साथ काम किया है (C # C ++ / CLI के साथ मिश्रित)।

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


3

सबसे पहले, MMORPGs या किसी भी ऑनलाइन गेम में पहले स्थान पर HTTP या "वेब फ्रेमवर्क" का उपयोग नहीं किया जाता है।

एक सर्वर को खेल की तरह ही सी + + में प्रोग्राम किया जाता है, और नेटवर्क पर पैकेट को प्रसारित करने के लिए सॉकेट्स का उपयोग करके संचार प्राप्त किया जाता है।

सर्वर अक्सर एक और ओएस चलाते हैं, और केवल गेम कोड शामिल करते हैं, इसलिए बहुत से खिलाड़ी एकल सर्वर पर आसानी से खेल सकते हैं।

मुझे नहीं पता कि बर्फ़ीला तूफ़ान उनके सर्वर का प्रबंधन कैसे करता है, मुझे नहीं पता कि वे क्लस्टर का उपयोग करते हैं या नहीं।

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

मुझे लगता है कि वाह के नेटवर्क भाग के प्रभारी व्यक्ति एक वास्तविक बदमाश हो सकता है।


3
"मुझे लगता है कि वाह के नेटवर्क भाग के प्रभारी व्यक्ति एक वास्तविक बदमाश हो सकता है।" छोटे सर्वर आबादी और क्लाइंट-साइड आंदोलन वास्तव में मेरी राय में, खराब-आश्रय के लिए नहीं बनाते हैं। हालांकि इसमें हेंडसाइट भी 20/20 है।


0

वहाँ दर्जनों खेल इंजन हैं। मेरे दिमाग में जो दो पॉप हैं वे हैं अवास्तविक इंजन और स्रोत।

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


0

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


जब कोई लुआ जैसी भाषा को संशोधित करता है, तो इसका मतलब है कि वे अपना निजी ढांचा बना रहे हैं जो लुआ पर आधारित है। सही बात? यदि हां, तो क्या इससे विकसित कार्यक्रमों के प्रदर्शन / गति में कमी आती है?

@ J3M7OR3 - यह मेरी समझ है कि उन्होंने लुआ के आधार पर अपना आंतरिक ढांचा बनाया, लेकिन मैं प्रदर्शन / गति के बारे में संभवतः नहीं कह सकता था।
काइल सी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.