Để tiết kiệm băng thông trong trò chơi nhiều người chơi của tôi , tôi không cập nhật mọi đối tượng mỗi lần đánh dấu máy chủ, thay vào đó mỗi đối tượng có một updateRate thông báo cho trò chơi rằng đối tượng này dự kiến sẽ được cập nhật mỗi lần đánh dấu máy chủ X.
Khi tôi nhận được thông báo cập nhật cho một đối tượng, tôi tính thời gian tôi mong đợi bản cập nhật tiếp theo xuất hiện:
origin = serverCurrentPosition
diff = serverNextPosition - origin
arriveTime = now + timeBetweenTicks * updateRate
Khi tôi vẽ đối tượng, tôi tính thời gian còn lại cho đến lần cập nhật tiếp theo và nội suy vị trí tương ứng:
step = 100 / timeBetweenTicks * updateRate
delta = 1 - step * ((arriveTime - now) / 100)
position = origin + diff * delta
Nó hoạt động ... nhưng vẫn còn một chút jitter trong bản vẽ, mặc dù trong lý thuyết của tôi, mọi thứ sẽ hoạt động tốt, vì việc chia tỷ lệ sẽ xử lý một số độ trễ, phải không?
Vì vậy, câu hỏi ở đây là, đây có phải là cách tiếp cận tốt nhất? Tôi có nên đặt độ trễ thực tế vào tính toán? Nếu vậy, làm thế nào tôi làm điều đó? Tôi đã làm một số thử nghiệm, nhưng jitter chỉ trở nên tồi tệ hơn.