मैं क्लासिक बैटलशिप गेम की मूल रूप से एक मल्टीप्लेयर (दो से अधिक खिलाड़ियों में) की एक छोटी परियोजना शुरू कर रहा हूं।इंटरनेट पर एंड्रॉइड पी 2 पी (सीधा कनेक्शन) (एनएटी के पीछे)
एक समस्या जो मैं कोडिंग में गोता लगाने से पहले हल करने की कोशिश कर रहा हूं वह कई खिलाड़ियों के बीच संचार की समस्या है। एक मौजूदा संभावना केंद्रीय HTTP सर्वर को संचार के लिए केंद्रीय केंद्र के रूप में उपयोग करना है (एंड्रॉइड सी 2 डीएम एपीआई के साथ HTTP सर्वर से पुश संचार को डिवाइस पर अनुमति देने के लिए)। यह एक अच्छा समाधान प्रतीत होता है, क्योंकि जब तक आपके पास इंटरनेट तक पहुंच है, तब तक इसे पूरी तरह से काम करना चाहिए, चाहे आप एनएटी के पीछे हों या नहीं।
हालांकि, प्रस्तावित समाधान में असफलता/अतिरिक्त लोड (वेबसर्वर) के मौजूदा एकल बिंदु का नुकसान होता है। तो मैं अन्य विकल्पों को आजमा देना चाहता हूं। मैंने ग्राहकों के बीच सॉकेट का उपयोग करके प्रत्यक्ष कनेक्शन बनाने का विचार किया (वेबसर्वर के साथ बस प्रारंभिक मीटिंग पॉइंट के रूप में उपयोग किया जा रहा है), हालांकि यह केवल तभी काम करेगा जब सभी डिवाइस एक ही नेटवर्क में हों। यह मानते हुए कि आज हम लगभग राउटर के एनएटी के पीछे हैं, मैं प्रत्यक्ष संचार कैसे प्राप्त कर सकता हूं? मैं छेद पंचिंग के बारे में पढ़ रहा हूं लेकिन मुझे कोई अच्छी लाइब्रेरी नहीं मिल रही है जो अच्छी तरह से प्रलेखित है (उपयोग के अच्छे उदाहरण हैं) और यह सुनिश्चित करने के लिए एंड्रॉइड पर काम करता है। इसके अलावा अधिकांश (यदि नहीं सभी) छेद पंचिंग तकनीक (स्टन, आईसीई, इत्यादि ...) व्यापक रूप से केवल यूडीपी के साथ काम करते हैं, जो ऑडियो/वीडियो और रीयल टाइम मल्टीप्लेयर गेम के लिए ठीक है जो कुछ संदेश खो सकता है, लेकिन मल्टीप्लेयर मोड़ के लिए आधारित गेम प्रत्येक मोड़ के डेटा की डिलीवरी की गारंटी देना महत्वपूर्ण है (ऐसा कुछ जो यूडीपी के साथ सीधे संभव नहीं है)।
तो एंड्रॉइड एनएटी के पीछे डिवाइस के बीच विश्वसनीय छेद पंचिंग (अधिमानतः टीसीपी से अधिक) प्राप्त करने के लिए कोई विचार कैसे है? इसे 100% मामलों पर काम करने की ज़रूरत नहीं है (कुछ अजनबी एनएटी समर्थित नहीं हो सकते हैं) लेकिन यह अच्छा होगा अगर यह ज्यादातर मामलों पर काम करता है।
विन माई हेटेट द्वारा प्रस्तुत समाधान में एक अच्छी क्षमता है (यह Google के अपने बुनियादी ढांचे का उपयोग करती है)। हालांकि, मुझे अभी भी एंड्रॉइड पर टीसीपी और/या यूडीपी छेद पंचिंग के लिए एक अच्छे समाधान में दिलचस्पी है। – petersaints
आपने @petersaints के साथ क्या किया? – kishu27