आरटीएस जैसे गेम को नेटवर्क बनाने के लिए, मैंने कई उत्तरों को देखा है जो गेम को पूरी तरह से नियतात्मक बनाने का सुझाव देते हैं; तब आपको केवल उपयोगकर्ताओं के कार्यों को एक-दूसरे को स्थानांतरित करना होगा, और अगले फ्रेम के प्रस्तुत होने से पहले हर किसी के इनपुट को "लॉक" करने के लिए थोड़ा सा प्रदर्शित किया जाएगा। फिर यूनिट की स्थिति, स्वास्थ्य आदि जैसी चीजों को नेटवर्क पर लगातार अपडेट करने की आवश्यकता नहीं है, क्योंकि प्रत्येक खिलाड़ी का सिमुलेशन बिल्कुल समान होगा। मैंने भी वही बात सुनी है जो रिप्ले बनाने के लिए सुझाई गई है।
हालांकि, चूंकि फ्लोटिंग-पॉइंट गणना मशीनों के बीच गैर-नियतात्मक हैं, या यहां तक कि एक ही मशीन पर एक ही कार्यक्रम के विभिन्न संकलन के बीच, क्या ऐसा करना वास्तव में संभव है? हम उस तथ्य को खिलाड़ियों (या रिप्ले) के बीच छोटे अंतर पैदा करने से कैसे रोकते हैं जो कि पूरे खेल में लहर है ?
मैंने सुना है कि कुछ लोग पूरी तरह से फ्लोटिंग-पॉइंट नंबरों से बचने और int
एक अंश के भागफल का प्रतिनिधित्व करने के लिए उपयोग करने का सुझाव देते हैं, लेकिन यह मेरे लिए व्यावहारिक नहीं है - क्या होगा यदि मुझे उदाहरण के लिए, एक कोण के कोज्या लेना चाहिए? क्या मुझे गंभीरता से एक संपूर्ण गणित पुस्तकालय को फिर से लिखने की आवश्यकता है?
ध्यान दें कि मुझे मुख्य रूप से C # में दिलचस्पी है, जो कि जहां तक मैं बता सकता हूं, इस संबंध में C ++ जैसी ही समस्याएं हैं।