अपने मल्टीप्लेयर गेम में बैंडविड्थ को बचाने के लिए , मैं हर सर्वर टिक को हर ऑब्जेक्ट को अपडेट नहीं करता, इसके बजाय प्रत्येक ऑब्जेक्ट में एक अपडेटरेट होता है जो गेम को बताता है कि यह ऑब्जेक्ट हर एक्स सर्वर टिक के अपडेट होने की उम्मीद है।
जब मैं किसी वस्तु के लिए एक अद्यतन संदेश प्राप्त करता हूं, तो मैं उस समय की गणना करता हूं जो मुझे अगले अद्यतन में आने की उम्मीद है:
origin = serverCurrentPosition
diff = serverNextPosition - origin
arriveTime = now + timeBetweenTicks * updateRate
जब मैं उस वस्तु को खींचता हूं जो अगले अद्यतन तक छोड़े गए समय की गणना करता है और तदनुसार स्थिति को प्रक्षेपित करता है:
step = 100 / timeBetweenTicks * updateRate
delta = 1 - step * ((arriveTime - now) / 100)
position = origin + diff * delta
यह काम करता है ... लेकिन ड्राइंग में अभी भी थोड़ा सा घबराहट है, हालांकि मेरे सिद्धांत में हर चीज को ठीक से काम करना चाहिए, क्योंकि स्केलिंग में कुछ मात्रा में अंतराल का ध्यान रखना चाहिए, इसे करना चाहिए?
तो यहाँ सवाल यह है कि क्या यह सबसे अच्छा तरीका है? क्या मुझे गणना में वास्तविक अंतराल डालना चाहिए? यदि हां, तो मैं यह कैसे करूंगा? मैंने कुछ experiements किया, लेकिन घबराना केवल बदतर हो गया।