मैं उपयोगकर्ता के अनुकूल, अद्वितीय गेम आईडी कैसे बना सकता हूं?


11

मैं यूनिक गेम आईडी कैसे बनाऊं जो यूजर फ्रेंडली भी हो - ताकि एक यूजर आसानी से उस गेम आईडी को गेम में शामिल होने के लिए किसी और को दे सके।

मैं C # के साथ सिल्वरलाइट में अपना गेम बना रहा हूं।


3
यह एक उत्तर से कम है, इसलिए बीमार टिप्पणी है। मैंने 2 कुंजी प्रणाली का उपयोग किया। मैंने एक अद्वितीय कुंजी (UUID) उत्पन्न की, जिसे मैं आंतरिक रूप से संग्रहीत करता हूं। इस तरह से: 39d7e998-e654-4f8b-9e4b-0e61fe9eaf65। एक विशिष्ट आईडी बनाने के बाद, खिलाड़ी के दोस्त उसके उपनाम को खोजकर और पहले 4 अक्षरों का उपयोग करके उसकी प्रोफ़ाइल पा सकते हैं। 2 'माइक्रोड्यूड: 39 डी 7' होने की संभावना बहुत पतली है। यदि मुझे टकराव दिखाई देते हैं, तो मैं इसे पहले 5 या 6 बना सकता हूं। यह स्पष्ट रूप से सार्वजनिक (अक्षर) है ताकि उसके दोस्त उसे सीधे जोड़ सकें, और आईएम या चैट पर गेम बनाते समय निर्दिष्ट करने में मदद कर सकें।
underscorediscovery

वैध रहने के लिए चाबियों को कितने समय तक रखने की आवश्यकता है? यह प्रभावित करता है कि उनके लिए कितना अनूठा होना चाहिए और क्या आप पुरानी कुंजियों का पुन: उपयोग कर सकते हैं या नहीं।
टिम होल्ट

@ समय पर कुंजियाँ अधिकतम 2 घंटे के लिए मान्य हो सकती हैं।
ज़ैन शेख

जवाबों:


6

यदि आपके पास एक आधिकारिक स्रोत है, तो यह समस्या आसान है (जो मैं मान रहा हूं कि यदि उपयोगकर्ता किसी गेम से कनेक्ट करने के लिए आईडी में डाल रहा है तो वह कुछ केंद्रीय सर्वर का उपयोग करके पुनर्निर्देशित हो रहा है)। बस एक एल्गोरिथ्म का उपयोग करें जैसे http://www.safepasswd.com/ UIDs बनाने के लिए करता है जो मूल रूप से शब्द + छोटी संख्याएँ हैं। यदि सर्वरों की संख्या अपेक्षाकृत कम है, तो आप एक भोली एल्गोरिथ्म भी कर सकते हैं, जो तब तक यादृच्छिक रूप से कुछ उठाता है जब तक वह वर्तमान में उपयोग में नहीं आता है।

यदि आप चाहते हैं कि आपके ग्राहक यूआईडी का स्रोत हों, तो आपको उन आईडी के उपयोगकर्ता के अनुकूल भाग को फेंकना होगा। लेकिन कोडिंग पक्ष पर करना आसान है क्योंकि आप केवल System.Guid.NewGuid ()? ToString () का उपयोग कर रहे हैं। उस समय के अद्वितीय 100% होने की गारंटी सभी इरादों और उद्देश्यों के लिए है। स्रोत

फिर, GUIDs थोड़ा ओवरकिल हैं। आईपी ​​या उपयोगकर्ता नाम बी को याद रखना आसान होगा


अच्छा, मुझे लगता है कि मुझे उपयोगकर्ता नाम के साथ जाना चाहिए, कम से कम वे डुप्लिकेट नहीं होंगे, और वे उपयोगकर्ता के अनुकूल भी हैं। धन्यवाद :)
ज़ैन शेख

3

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

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


आपके सुझाव के लिए धन्यवाद, अब मैं @Tetrad द्वारा सुझाए गए अद्वितीय कुंजी के रूप में उपयोगकर्ता नाम का उपयोग करूंगा।
ज़ैन शेख़

3

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

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

उदाहरण के लिए अगर मुझे पता है कि मेरा उपयोगकर्ता नाम अद्वितीय प्रणाली चौड़ा है, तो MrCranky: 1 एक वैध यूआईडी है। अगर मैं देख सकता हूं कि क्या MrCranky: 1 पहले से ही उपयोग में है (किसी अन्य विधि से), तो मैं बस तब तक संख्याओं को रखने की कोशिश कर सकता हूं जब तक कि मुझे एक अद्वितीय न मिल जाए।

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

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


आपके सुझाव के लिए धन्यवाद, अब मैं @Tetrad द्वारा सुझाए गए अद्वितीय कुंजी के रूप में उपयोगकर्ता नाम का उपयोग करूंगा।
ज़ैन शेख

0

आप एक अद्वितीय पहचानकर्ता के रूप में एक खिलाड़ी के ईमेल पते का उपयोग कर सकते हैं। मुझे यकीन है कि वे याद कर सकते हैं कि :)


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