Nội suy giữa hai trạng thái nối mạng?


11

Tôi có nhiều thực thể ở phía máy khách được mô phỏng (vận tốc của chúng được thêm vào vị trí của chúng trên cơ sở mỗi khung hình) và tôi để chúng tự nghĩ ra. Họ gửi thông tin cập nhật về nơi họ được nhìn thấy lần cuối và vận tốc của họ thay đổi. Điều này làm việc tuyệt vời và những người chơi khác thấy công việc này tìm thấy. Tuy nhiên, sau một thời gian những người chơi này bắt đầu không đồng bộ sau một thời gian. Điều này là do độ trễ.

Tôi muốn biết làm thế nào tôi có thể nội suy giữa các trạng thái để chúng có vẻ ở đúng vị trí. Tôi biết người chơi đã nhìn thấy LAST ở đâu và vận tốc hiện tại của họ nhưng nội suy đến trạng thái nhìn thấy lần cuối khiến người chơi thực sự di chuyển ngược lại-. Tôi hoàn toàn không thể sử dụng vận tốc cho các khách hàng khác và chỉ đơn giản là 'lerp' họ theo hướng thích hợp nhưng tôi cảm thấy điều này sẽ gây ra chuyển động lởm chởm. Các lựa chọn thay thế là gì?

Câu trả lời:


9

Vì lý do này, bạn sẽ thấy các mô phỏng thường chạy 1 hoặc nhiều khung hình trước những gì thực tế được hiển thị tại thời điểm nhất định trên một ứng dụng khách. Vì vậy, nói cách khác, những gì bạn kết xuất trong thực tế có thể là khung cuối cùng thứ hai, không phải khung cuối cùng.

Tìm kiếm bài viết này cho tất cả các trường hợp của từ "phía trước" và tôi nghĩ rằng bạn sẽ bắt đầu có được hình ảnh tốt hơn tôi có thể đã giải thích nó ở trên.


Được rồi, vì vậy bạn có nghĩa là tôi thực sự nên kết xuất trình phát như cách đây 300 ms và nội suy hướng tới tương lai? (Ở một trạng thái riêng biệt, khi một trạng thái mới xuất hiện; điều này sẽ chuyển sang)
Vaughan Hilts

@VaughanHilts Một lần nữa, xin vui lòng đọc bài viết và các ý kiến. Gaffer là một chuyên gia trong lĩnh vực đó và anh ấy giải thích nó rõ ràng hơn nhiều so với tôi có thể. Nhưng ý tưởng chung là có, mô hình mô phỏng của bạn ở phía trước trong khi kết xuất của bạn hơi chậm hơn để giải thích cho hiệu ứng bạn mô tả. Nó không phải là nơi duy nhất tôi thấy kỹ thuật này được mô tả.
Kỹ sư

2

Khi bạn nói:

Những người chơi này bắt đầu không đồng bộ sau một thời gian

nó khiến tôi nghĩ rằng vấn đề của bạn có thể liên quan nhiều hơn đến việc đồng hồ của bạn không còn hoạt động hơn bất kỳ vấn đề nào về độ trễ. Nếu độ trễ, nó sẽ tệ như vậy khi bắt đầu hơn 10 phút. Nếu một đồng hồ trò chơi chạy nhanh hơn một chút, sẽ có một số tạo tác jitter kỳ lạ sẽ ngày càng tệ hơn theo thời gian. Một máy khách có thể được mô phỏng trong tương lai, khi các gói hiện tại đến từ máy chủ, nó sẽ kéo máy khách trở lại, khiến các thực thể nhảy xung quanh. Chạy một số bài kiểm tra để tìm hiểu.

Nếu đồng hồ trò chơi không đồng bộ thực sự là một vấn đề, bạn sẽ cần xem xét rất kỹ vòng lặp cập nhật của mình và đảm bảo rằng mọi cập nhật đều dựa trên lượng thời gian trò chơi đã qua (cố định hoặc biến) và trò chơi -time được nâng cao bằng cách sử dụng một cái gì đó như đồng hồ treo tường (không hiển thị thời gian hoặc các biến khác). Gaffer có một số bài viết hay về điều này, và có một câu hỏi khá hay ở đây khi nói về dấu thời gian cố định và biến đổi . Hi vọng điêu nay co ich.


Đây không phải là trường hợp, trường hợp thực sự là tôi đã chết quá xa (một sự chậm trễ hoặc một cái gì đó - gói 'dừng lại' không được nhận kịp thời và khách hàng không thể tự sửa kịp thời. Tôi biết điều này chắc chắn trường hợp bởi vì sau khi khách hàng dừng lại, hầu hết tôi có thể DEFINTELAY nội suy trở lại vị trí.
Vaughan Hilts
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.