2012-03-08 10 views
8

मैं एक सरल खेल में कुछ यादृच्छिक मैच बनाने करने के लिए सबसे अच्छा तरीका है साथ आने के लिए कोशिश कर रहा हूँ के लिए केवल RTMFP का उपयोग करना।यादृच्छिक मिलान (एडोब सिरस)

एडोब सिरस का उपयोग कर Netstreams के साथ प्रयोग करते हैं, मैं आसानी से सीधे कनेक्शन, डेटा, पाठ, वीडियो भेजने ध्वनि सभी का उपयोग कर सिरस जो महान है सेट कर सकते हैं,। मैं इसे बहुत आसान एक सरल पी 2 पी कनेक्शन जा रहा प्राप्त करने के लिए मिल जाए, और यह सिर्फ तरह मैं करने के लिए इसकी आवश्यकता है काम करता है।

लेकिन मैं वास्तव में केवल सिरस का उपयोग कर तो सब कुछ है, हालांकि p2p है एक यादृच्छिक विवाह सुविधा को लागू करना चाहते हैं ...

मैं कैसे ... जो वह नहीं है एक ही समूह में एक यादृच्छिक सहकर्मी हथियाने के बारे में जाना होगा एक सीधा में किसी और के साथ कनेक्शन पहले से ही?

कुछ विचार:

मैं सोच रहा था शायद मैं वस्तु प्रतिकृति इस्तेमाल कर सकते हैं ... और जब कोई GroupSpecifier से जोड़ता है, मैं तो इस साझा सरणी है कि स्थानीय PEERID और उनकी स्थिति है में किसी अन्य वस्तु धक्का सकता है । तो जब मैं एक खेल में होता हूं तो मैं सरणी को बदल सकता हूं। लेकिन तब चिंतित कोई गारंटी नहीं है कि उनके प्रवेश करता है, तो व्यक्ति सिर्फ वेब खिड़की बंद कर देता हटा दिया जाएगा है im।

- मैंने पास के आईडी वाले समूह को "पोस्ट" करने के बारे में भी सोचा था, और अन्य साथियों को पोस्ट मिल सकता है ... और जो लोग गेम में नहीं हैं वे वापस कनेक्ट करने और सीधे कनेक्ट करने का प्रयास करेंगे। तब वह पक्ष उनसे जुड़ जाएगा। तो फिर वे दोनों एक दूसरे के साथ सीधे संबंध में होंगे। लेकिन फिर मुझे लगता है अगर संभावित है कि "उपलब्ध" हैं लोगों के 100s ... पद मिलता है ... तो वे सब कोशिश करते हैं और एक व्यक्ति से कनेक्ट की तरह है, तो यह समस्या हो सकती है।

- इसके अलावा, मैंने बस भेजने के बारे में सोचा था ... लेकिन लोगों से मेल खाने का सबसे अच्छा तरीका नहीं होगा ... क्योंकि आप केवल इतने सारे पड़ोसियों को सोच सकते हैं ... अगर वहां 1000 लोग थे समूह। आप केवल कुछ पड़ोसियों से जुड़ने में सक्षम होंगे जो वास्तव में आपके पड़ोसी को सही मानते हैं? तो बुनियादी तौर पर आप हो सकते हैं सिर्फ एक ही 5-10 लोगों के साथ मिलान या हालांकि तकनीकी रूप से एक पड़ोसी माना जाता है।

+0

साफ विचार! मुझे पहले दो के कुछ संयोजन पसंद हैं, टोकन (या एन टोकन, # सहकर्मियों के आधार पर) के साथ। प्रत्येक बेजोड़ साथी को कम समय के लिए टोकन असाइन किया जाता है। यह कनेक्ट करने का उनका मौका है, इसलिए उपयोगकर्ताओं की बाढ़ नहीं है, और यदि वे परिणाम की रिपोर्ट नहीं करते हैं, तो उन्हें हटा दिया जाता है। एक पुराने स्कूल टोकन रिंग नेटवर्क की तरह :) –

उत्तर

1

मुझे नहीं लगता कि टाइमआउट्स से बचने के लिए कोई तरीका है और नोड्स से मेल खाने पर रीट्रीज़ 1) अज्ञात और परिवर्तनीय नेटवर्क विलंबता है, और 2) कनेक्शन अज्ञात समय में शामिल हो रहे हैं और छोड़ सकते हैं।

इसलिए किसी भी नोड एक और नोड के लिए कनेक्ट करने के लिए निम्नलिखित स्टेटफुल मापदंडों रखना चाहिए प्रयास कर:

  • मैं एक नोड
  • मैं एक मैच अनुरोध बकाया राशि के साथ मिलान कर रहा हूँ
    • मेरे बकाया मैच अनुरोध है नोड एक्स के

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

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

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

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

यह पीरियड लंबा है, कुछ 256-बिट्स की तरह है। आप इसके साथ एक सॉर्टिंग ऑर्डर बना सकते हैं - शायद कुछ ऐसा: पहले 32-बिट्स को एक इंट के रूप में देखते हुए, एक्सओआर रिमोट नोड पीरियड अपने स्वयं के पीरियड के साथ, और दूरस्थ नोड्स को निम्नतम से उच्चतम क्रमबद्ध करें।

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

यह शायद आदर्श समाधान नहीं है - शायद एक बेहतर एक मौजूद है, लेकिन मुझे लगता है कि यह यादृच्छिक रूप से या प्रसारण संदेशों का उपयोग करने से नोड्स की कोशिश करने से बेहतर है।

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