मैं एक नेटवर्क गेम के लिए एक इकाई प्रणाली पर काम कर रहा हूं और मैं प्रत्येक इकाई को एक अद्वितीय 32-बिट पूर्णांक आईडी प्रदान कर रहा हूं जिसका उपयोग मैं संस्थाओं और स्वयं संस्थाओं के संदर्भों को क्रमबद्ध करने के लिए कर सकता हूं।
वर्तमान में मैं हर बार एक इकाई बनाने पर एक काउंटर बढ़ा रहा हूँ। मुझे लगता है कि आईडी अंततः बाहर चला जाएगा, लेकिन मुझे वास्तव में 4 बिलियन संस्थाओं की उम्मीद नहीं है। यदि इकाई # 5 को नष्ट कर दिया जाता है, तो भी हम इस समस्या से बचते हैं और हमें 5. की एक आईडी मिलती है। क्या इसका मतलब नए # 5 या पुराने हटाए गए # 5 से है?
समस्या यह है कि मुझे यकीन नहीं है कि टकराव को कैसे संभालना / टालना है। वर्तमान में यदि कोई क्लाइंट किसी ऐसी ईट के साथ किसी इकाई के लिए अपडेट प्राप्त करता है, जो वर्तमान "फ्री आईडी" से अधिक है, तो यह केवल उसी ई-मेल को डाउनलोड करता है, जो पिछले है। लेकिन यह बहुत मजबूत नहीं लगता है।
मैंने सोचा कि शायद प्रत्येक ग्राहक को रेंज सौंपने के लिए ताकि वे बिना संघर्ष के संस्थाओं को आवंटित कर सकें (कहते हैं कि शीर्ष n बिट्स खिलाड़ी संख्या हैं), लेकिन मुझे चिंता है कि अगर समय के साथ सीमाएं ओवरलैप होने लगीं तो क्या होगा।
क्या इससे निपटने का एक बेहतर तरीका है? क्या मुझे आईडी की अतिप्रवाह या अनुमत सीमा के अंत में जाने की भी परवाह करनी चाहिए? मैं इन मामलों का पता लगाने के लिए कोड जोड़ सकता हूं, लेकिन अगर वे दुर्घटना के अलावा होते हैं तो यह क्या करेगा।
एक और विकल्प 128-बिट GUID की तरह अद्वितीय होने की उच्च संभावना के साथ कुछ का उपयोग करना है, लेकिन यह एक गेम के लिए वास्तव में भारी लगता है जो नेटवर्क ट्रैफ़िक को कम करने की कोशिश कर रहा है। इसके अलावा, वास्तविक रूप से मुझे कभी भी अधिक संस्थाओं की आवश्यकता नहीं होगी, फिर एक 32-बिट या यहां तक कि 24 बिट पूर्णांक में फिट होगा।
धन्यवाद!