(सी ++) गेम सर्वर, (फ्लैश) क्लाइंट

मुझे क्लाइंट के रूप में फ्लैश का उपयोग करके अपना पहला ऑनलाइन गेम एक साथ रखने और सी ++ में बैक-एंड एप्लिकेशन लिखने में दिलचस्पी है जहां वास्तविक गेम स्टेट रखा जाता है।

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

मुझे फ्लैश या एएस 3 में बहुत कम अनुभव है, लेकिन ब्राउज़र के माध्यम से गेम तक पहुंचने में सक्षम होने के विचार की तरह - सीखने की फ्लैश एक बाधा बनने जा रही है जिसे मुझे दूर करना होगा, लेकिन मेरी मुख्य रुचि पुस्तकालयों पर फिर से कोई सुझाव है , या स्रोत, या ट्यूटोरियल जो सॉकेट के माध्यम से डेटा भेजने/प्राप्त करने के लिए अच्छे हैं या जो भी तरीका सर्वोत्तम काम करता है।

मैंने टीसीपी/यूडीपी के बीच तर्कों के बारे में पढ़ा है, इसलिए मैं यहां ऐसा युद्ध शुरू नहीं करना चाहता हूं; बस सामान्य सहायक सलाह कृपया - मैं केवल मुझे लेने और चलाने के लिए कुछ आसान ढूंढ रहा हूं: -पी

एक साइड नोट के रूप में, कारण मैं सी ++ चुन रहा हूं क्योंकि खिलाड़ी वास्तव में नाबालिग आभासी मशीनों के साथ रोबोट हैं और सबकुछ सर्वर पर चल जाएगा ताकि प्लेयर गिनती बढ़े, इसलिए प्रत्येक वीएम को अनुकरण करने की आवश्यकता होगी: -p

अद्यतन करें:

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

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

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

मैं एक "लैब" रखने की योजना बना रहा था जिससे आप रोबोट स्थापित कर सकते हैं और क्लाइंट पर रीयलटाइम में उनका परीक्षण कर सकते हैं, इसका वास्तविक गेम दुनिया से कोई लेना-देना नहीं है और इस प्रकार किसी भी नेटवर्किंग की आवश्यकता नहीं है - हालांकि मुझे कल्पना नहीं है दोनों भाषाओं में एक वीएम लिखना :(

मैं सी ++ में पूरी तरह से आरामदायक हूं और पहले से ही लगातार दुनिया के कुछ कामकाजी प्रोटोटाइप हैं - जब नेटवर्किंग की बात आती है तो मैं सिर्फ एक पूर्ण नौसिखिया हूं इसलिए लगा कि पहले सलाह लेना सबसे अच्छा होगा।

0

3 उत्तर

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

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

शायद आपके पास अपने प्लेटफ़ॉर्म के आधार पर सी # या PHP या जावा में एक सर्वर हो सकता है जो वेबसर्वर में चलता है और अनुरोधों और प्रतिक्रियाओं को संभालता है और आपके सी ++ सर्वर के अनुरोध पर गुजरता है जो किसी संदेश कतार या डेटाबेस या स्थानीय के माध्यम से किसी सर्वर पर स्वतंत्र रूप से चला सकता है कनेक्शन।

फ्लैश और सर्वर दोनों पक्षों को नेटवर्किंग और संचार समस्याओं को इस तरह से संभालना आसान हो सकता है क्योंकि सी ++ लाइब्रेरी के साथ भी नेटवर्किंग करने की सबसे आसान भाषा नहीं है।

मुझे नहीं पता कि यह आपके गेम या मंच के लिए आपकी आवश्यकताओं को पूरा करता है, हालांकि, मैं इसे एक सुझाव के रूप में फेंक रहा हूं

0
जोड़ा

हालांकि यह मुख्य रूप से सी के लिए लिखा गया है, यह अभी भी सी ++:
के लिए बहुत अच्छा है नेटवेयर प्रोग्रामिंग.के के लिए बीज की मार्गदर्शिका
इसमें सभी मूलभूत बातें शामिल हैं, और Win32 :)
के लिए आवश्यक परिवर्तनों पर एक अनुभाग है मुझे यह भी याद है कि फ्लैश को प्रत्येक पैकेट पर नल-बाइट्स को समाप्त करने की आवश्यकता है, इसलिए भेजने की बजाय (सॉकेट, szData, strlen (szData), 0); भेजें (सॉकेट, szData, strlen (szData) +1,0 का उपयोग करें); एक स्ट्रिंग भेजने के लिए :)

0
जोड़ा

फ्लैश की सॉकेट या एक्सएमएल सॉकेट कक्षाओं का उपयोग करते समय, सुनिश्चित करें कि आपके पास आपके सर्वर पर एक सुरक्षा नीति फ़ाइल है। अन्यथा, आप एक सॉकेट खोलने में सक्षम नहीं होंगे। अधिक जानकारी के लिए यह SO प्रश्न देखें।

0
जोड़ा
............ +1!
जोड़ा लेखक Poni, स्रोत