क्या हमें किसी गेम की प्रोग्रामिंग की प्रक्रिया में बाइट के आदेशों के बारे में चिंता करनी है? क्या गेम कंसोल अलग-अलग बाइट ऑर्डर का उपयोग करते हैं?
क्या हमें किसी गेम की प्रोग्रामिंग की प्रक्रिया में बाइट के आदेशों के बारे में चिंता करनी है? क्या गेम कंसोल अलग-अलग बाइट ऑर्डर का उपयोग करते हैं?
जवाबों:
क्या आपको इसकी चिंता करनी है? शायद नहीं। गेम प्रोग्रामिंग का एक विशाल स्तर इस स्तर पर होने वाला है कि अंत्येष्टि दूर हो जाती है। नेटवर्किंग में भी, आप लगभग निश्चित रूप से नेटवर्किंग प्रोटोकॉल के लिए एक पुस्तकालय का उपयोग करने जा रहे हैं। यह अच्छा है कि आप इसके बारे में जानते हैं, लेकिन मुझे संदेह है कि आप इसके साथ एक समस्या में भाग लेंगे।
अधिकांश समय, नहीं।
एंडियनस आमतौर पर एक गेम इंजन के उच्च स्तर के मॉड्यूल में दूर होता है, और आपको इसके बारे में दैनिक आधार पर चिंता करने की आवश्यकता नहीं है। यदि यह अमूर्त नहीं है, तो इंजन में एक गंभीर मुद्दा है और इसे ठीक किया जाना चाहिए, क्योंकि इस तरह का विवरण नहीं है जब आपको गेम बनाते समय चिंता होनी चाहिए।
हालाँकि यदि आप C / C ++ मल्टी-प्लेटफ़ॉर्म इंजन के कुछ निम्न-स्तरीय भागों पर काम कर रहे हैं, तो आपको इससे निपटना पड़ सकता है।सभी तीन वर्तमान-जीन कंसोल एक पावरपीसी आर्किटेक्चर का उपयोग करते हैं, जो बड़े-एंडियन हैं, जबकि पीसी पर उपयोग किए जाने वाले x86 आर्किटेक्चर थोड़ा-एंडियन हैं। इसलिए यदि आप कुछ ऐसे कोड पर काम कर रहे हैं जो कच्चे बाइट्स को डेटा संरचनाओं (बाइनरी सीरियललाइज़ेशन, नेटवर्किंग ...) में डालने के लिए कहीं से पढ़ते हैं, तो हाँ आपको इससे निपटना होगा।
उदाहरण के लिए, C / C ++ में, इस तरह की बाइट स्वैपिंग को कार्रवाई में देखना आम है (परीक्षण नहीं, सुधार का स्वागत करते हुए):
// Assume bytes comes ordered as big-endian
u16 u16FromBytes(void* data)
{
#if BIG_ENDIAN
return (u16(data[0]) << 8) + u16(data[1]);
#else // LITTLE_ENDIAN
return (u16(data[1]) << 8) + u16(data[0]);
#endif
}
एक बार फिर, यह निम्न-स्तर के कोड में ठीक है, लेकिन इसका उपयोग हर जगह नहीं किया जाना चाहिए।
यह उन प्लेटफार्मों पर निर्भर करता है जिन्हें आप लक्षित कर रहे हैं। उदाहरण के लिए, मेरा मानना है कि PS3 बड़ा-एंडियन है इसलिए यदि यह आपके किसी लक्ष्य में से एक है तो यह कुछ ऐसा है जिसके बारे में आपको अवगत होना चाहिए, हाँ।
होम कंप्यूटर स्पेस में "बिग 3" (विंडोज़, लिनक्स, मैक) इन दिनों इंटेल एक्स 86 / एक्स 64 आर्किटेक्चर पर सभी विशेष रूप से या सभी लेकिन विशेष रूप से हैं, इसलिए एंडियननेस चिंताएं अब प्रासंगिक नहीं हैं।