Client của bạn đã cho nhân vật di chuyển trước, nhưng nếu server tính ra kết quả khác thì nhân vật của bạn bị kéo đi.
Vì sao Client cho di chuyển trước khi server xác nhận (dự đoán) → Dẫn đến Server tính va chạm, tốc độ di chuyển, buff theo cách khác, hoặc không nhận được lệnh → Trên màn hình Khi xác nhận về, nhân vật của bạn bị kéo ngược về sau
Khi di chuyển hoặc chuyển bản đồ, Thỉnh thoảng bất chợt
Phụ trách
Phụ trách chính Phát triển client (Đội phát triển game) · Phối hợp Phát triển server (Đội phát triển game)
Việc cần làm (Đội phát triển game)
Client: dùng chung code di chuyển với server, gửi lặp input (dư thừa), hiệu chỉnh mượt mà. Server: dùng chung code di chuyển với client, lọc input trùng theo số thứ tự input và chỉ xử lý một lần.
Con số tham khảo
Khoảng cách bị kéo là “thời gian lệch × tốc độ di chuyển”. Chỉ mất vài lệnh cũng đã 1–3 m.
Trên đồ thị
Thỉnh thoảng vọt lên bất chợt · Số lần hiệu chỉnh theo server (dự đoán sai)
Chỗ cần xem
Ghi lại số lần và khoảng cách hiệu chỉnh vị trí mà server gửi. Với Unreal: đếm lần server hiệu chỉnh bằng ClientAdjustPosition; với Unity Netcode for Entities: đếm lần phải quay lại tính lại vì dự đoán sai
Đúng nếu
hiệu chỉnh dồn vào lúc người chơi báo kéo ngược, khoảng cách hiệu chỉnh lặp lại ở mức lớn với một số buff, địa hình hoặc skill di chuyển nhất định
Loại trừ nếu
hiệu chỉnh chỉ dồn vào lúc mất gói nhiều → mất gói input (đường truyền). Không có hiệu chỉnh mà chỉ nhân vật khác trông bị kéo đi → “Ngoại suy quá mức (dead reckoning)”