Game dự đoán input của đối thủ để hiển thị trước, nếu sai thì quay ngược lại và tính lại. Ping càng lớn thì khoảng quay ngược càng lớn.
Vì sao Đối thủ đổi input (khác với dự đoán) → Dẫn đến Input thực tới muộn một nửa ping, nên phải quay ngược đúng khoảng đó để tính lại → Trên màn hình Động tác của đối thủ bỏ qua vài khung hình hoặc đột ngột thay đổi
Khi làm một thao tác nhất định, 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)
Việc cần làm (Đội phát triển game)
Kết hợp độ trễ input 1–3 khung hình để giảm khoảng quay ngược, đặt giới hạn quay ngược.
Con số tham khảo
Ping 100 ms (mỗi chiều 50 ms) thì ở 60 fps phải quay ngược khoảng 3 khung hình. Đặt độ trễ input 2 khung hình thì giảm còn 1 khung hình.
Trên đồ thị
Thỉnh thoảng vọt lên bất chợt · Số khung hình bị quay ngược, RTT (ping)
Chỗ cần xem
Client ghi lại cho mỗi lần quay ngược: số khung hình quay ngược, RTT lúc đó, cấu hình độ trễ input, thời gian quay ngược và tính lại
Đúng nếu
vào lúc có báo cáo động tác đối thủ bị nhảy, số khung hình quay ngược lớn, khoảng quay ngược trung bình xấp xỉ (độ trễ một chiều − độ trễ input) ÷ thời gian một khung hình, và càng lớn khi ping càng cao
Loại trừ nếu
khoảng quay ngược nhỏ mà vẫn bị giật khựng → vấn đề hiệu năng, việc tính lại vượt quá thời gian một khung hình. Sau khi quay ngược mà kết quả trên hai màn hình vẫn tiếp tục khác nhau → kết quả tính toán bị lệch (desync)
Cách kiểm tra
Cần log và chỉ số của server, client game
Nguồn
GGPO Rollback Networking SDKGGPO Dự đoán input của đối thủ để chạy trước, nếu input thực khác thì tính lại từ thời điểm bị lệch đến hiện tại