Для того, щоб зберегти пропускну здатність в моїй грі для кількох гравців , я не оновлюю кожен об'єкт, кожен сервер галочку, натомість кожен об’єкт має updateRate, який повідомляє гру, що цей об’єкт, як очікується, буде оновлюватися кожні X серверні тики.
Коли я отримую повідомлення про оновлення об'єкта, я обчислюю час, коли очікую наступного оновлення:
origin = serverCurrentPosition
diff = serverNextPosition - origin
arriveTime = now + timeBetweenTicks * updateRate
Коли я малюю об'єкт, я обчислюю час, що залишився до наступного оновлення, і відповідно інтерполюю позицію:
step = 100 / timeBetweenTicks * updateRate
delta = 1 - step * ((arriveTime - now) / 100)
position = origin + diff * delta
Це працює ... але в малюнку все ще є трохи тремтіння, хоча в моїй теорії кожна річ повинна спрацьовувати нормально, оскільки масштабування має сприймати деяку кількість відставання, чи не так?
Тож питання тут, чи це найкращий підхід? Чи слід ставити фактичне відставання у обчисленні? Якщо так, то як би я це зробив? Я робив деякі переживання, але тремтіння тільки погіршилося.