2011-10-04 11 views
7

मुझे जावा में एक साधारण टूर क्लाइंट-सर्वर गेम को लागू करना होगा। दुर्भाग्य से, मैं बस नेटवर्क प्रोग्रामिंग के साथ शुरुआत कर रहा हूं और एक अनुचित समाधान चुनने में कुछ समस्याएं हैं।जावा में क्लाइंट-सर्वर गेम एप्लेट्स के साथ

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

मेरा मतलब है, मैंने आरएमआई, सॉकेट, सर्वलेट जैसी कई अलग-अलग संभावनाओं के बारे में पढ़ा है, लेकिन अभी भी यह नहीं पता कि कौन सी मेरी आवश्यकताओं को पूरा करता है। मैं थोड़ी उलझन में हूं क्योंकि मैं पूरी तरह समझ नहीं पा रहा हूं कि संचार कैसे किया जाएगा।

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

मैं कुछ सुझावों के लिए वास्तव में आभारी हूं।

उत्तर

3

मैं एक सर्वलेट बनाने के लिए और बिलाव सर्वर पर डाल सकते हैं ताकि सर्वर केवल अगर कोई खिलाड़ियों

बिलाव उदाहरण वैसे भी चल पाएंगे हैं चलाया जाएगा, अन्यथा खिलाड़ियों के लिए कनेक्ट नहीं हो सका यह।

आप क्या कर सकते हैं एक सर्वर प्रदान करना जो खिलाड़ियों को कनेक्ट करते समय एक नया गेम उदाहरण शुरू करता है। सर्वर को हमेशा चलना होगा।

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

तो यदि आपके पास पहले से ही एक संचार तकनीक के साथ कुछ ज्ञान है, तो कोशिश करें और इसका उपयोग करें। बस सीमाओं से अवगत रहें और उन्हें ध्यान में रखें (उदा। संदेश स्वरूप, पुश/पुल संचार इत्यादि)।

0

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

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

कोई नहीं है। अच्छा tutorial available to jump start और प्रारंभिक सेटअप करना बहुत आसान है।

हालांकि, किसी उभरते हुए ओपनसोर्स प्रोजेक्ट की तरह, इसमें भी इसकी समस्याएं हैं। ये हैं: ऑनलाइन समुदाय छोटा और प्रलेखन है, हालांकि तेजी से सुधार करना बहुत सीमित है।

आधिकारिक user guide अधिकांश मूलभूत बातें शामिल करता है और यदि आप और जानना चाहते हैं तो यह एक अच्छा प्रारंभिक बिंदु है।

0

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

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

संबंधित मुद्दे