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

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

Phán định không có bù trễ Server-now hit validation

ID nguyên nhân sy-no-lagcomp · Phụ trách chính Phát triển server (Đội phát triển game) · Phối hợp 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 →

Nếu server chỉ phán định trúng đích bằng “vị trí hiện tại trên server”, phán định sẽ lệch với những gì bạn thấy trên màn hình.

Vì sao Đối thủ trên màn hình của bạn đang ở vị trí trong quá khứ khoảng 0,2 giây (khi ping 150 ms, nội suy 100 ms) → Dẫn đến Server phán định theo vị trí hiện tại nên đối thủ đã không còn ở chỗ bạn ngắm → Trên màn hình Rõ ràng đã bắn trúng mà vẫn trượt. Phải bắn đón đầu mục tiêu đang di chuyển

Triệu chứng
Nuốt thao tác·rollback
Yếu tố
Độ trễ
Ai gặp phải
Chỉ mình tôi
Khi nào
Khi làm một thao tác nhất định
Phụ trách
Phụ trách chính Phát triển server (Đội phát triển game) · Phối hợp Phát triển client (Đội phát triển game)
Việc cần làm (Đội phát triển game)
Server: quay ngược về thời điểm người tấn công đang nhìn thấy để phán định (bù trễ), hoặc chuyển sang cơ chế chọn mục tiêu (tab-target). Client: khi tấn công thì gửi kèm thời điểm mình đang nhìn thấy (giờ server đang được nội suy).
Trên đồ thị
Chỉ một phần cao · Tỷ lệ trúng mục tiêu di chuyển (theo khoảng ping)
Chỗ cần xem
Ghi cùng lúc vào log phán định của server: thời điểm tấn công, vị trí mục tiêu trên màn hình người tấn công (giá trị client gửi), vị trí mục tiêu trên server dùng để phán định, RTT của người tấn công. Trong bản build dev, vẽ chồng vị trí server dùng để phán định lên màn hình client là thấy ngay
Đúng nếu
ở các lần phán định trượt, chênh lệch giữa hai vị trí xấp xỉ tốc độ mục tiêu × (RTT người tấn công + thời gian nội suy), và ping càng cao thì riêng tỷ lệ trúng mục tiêu di chuyển càng giảm
Loại trừ nếu
mục tiêu đứng yên cũng trượt → vấn đề hitbox hoặc kiểm tra va chạm. Đã có quay ngược mà vẫn lệch → xem client có báo sai thời gian nội suy cho server không
Cách kiểm tra
Cần log và chỉ số của server, client game

Nguồn

  1. Latency Compensating Methods in Client/Server In-game Protocol Design and Optimization (Yahn W. Bernier, GDC 2001) Valve
    Không có bù trễ thì phải bắn đón đầu đúng bằng độ trễ. Bù trễ là việc server quay ngược đúng bằng độ trễ và thời gian nội suy để phán định
  2. Peeking into VALORANT's Netcode Riot Games
    Server quay ngược về trạng thái game mà người chơi thấy vào lúc bắn để phán định trúng đích, client gửi kèm thời điểm mô phỏng mà mình đang thấy
  3. Source SDK 2013: player_lagcompensation.cpp Valve
    Thời gian quay ngược của Source engine = độ trễ mạng + thời gian nội suy

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 (Nuốt thao tác·rollback)

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