한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

Sách trắng lag game › Thiết kế đồng bộ

Rollback netcode dự đoán sai Rollback misprediction

ID nguyên nhân sy-rollback · Phụ trách chính Phát triển client (Đội phát triển game)

Mở thẻ gốc có hình minh họa và thí nghiệm →

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

Triệu chứng
Dịch chuyển tức thời
Yếu tố
Độ trễ, Jitter
Ai gặp phải
Chỉ mình tôi
Khi nào
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

  1. GGPO Rollback Networking SDK GGPO
    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
  2. 8 Frames in 16ms: Rollback Networking in 'Mortal Kombat' and 'Injustice 2' GDC
    Dùng rollback để loại bỏ độ trễ input cục bộ của lockstep, quay ngược và tính lại tối đa 8 khung hình trong vòng 16 ms

Nguyên nhân nên xem cùng

Cùng tầng: Thiết kế đồng bộ

Nguyên nhân ở tầng khác gây cùng triệu chứng (Dịch chuyển tức thời)

Xem thẻ gốc có hình minh họa và thí nghiệm