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

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

Client có thẩm quyền Client-authoritative results

ID nguyên nhân sy-client-auth · 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 mỗi client tự quyết định kết quả của mình, màn hình của bạn mượt mà nhưng kết quả lệch với màn hình người khác và dễ bị hack.

Vì sao Client quyết định vị trí và việc trúng đích, server chỉ chuyển tiếp → Dẫn đến Hai người cùng khẳng định mình bắn trúng trước, server không kiểm chứng được → Trên màn hình Đối thủ dịch chuyển tức thời, đi xuyên tường, “tôi bắn trúng rồi mà không ăn”

Triệu chứng
Dịch chuyển tức thời, Nuốt thao tác·rollback
Yếu tố
Độ trễ
Ai gặp phải
Cả server
Khi nào
Luôn luôn
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: tự kiểm tra các kết quả quan trọng (trúng đích, v.v.), kiểm tra tốc độ và quãng đường di chuyển. Client: khi nhận kết quả bị server từ chối hoặc hiệu chỉnh thì quay về giá trị đó.
Trên đồ thị
Luôn cao ngay từ đầu · Số báo cáo có tốc độ di chuyển bất khả thi hoặc trúng đích mâu thuẫn
Chỗ cần xem
Ghi lại nguyên vẹn trên server các vị trí và lần trúng mà client báo cáo, tính tốc độ di chuyển từ các báo cáo vị trí liên tiếp, rồi đếm các báo cáo vượt tốc độ tối đa và các báo cáo hai người cùng nói mình trúng trước
Đúng nếu
server chuyển tiếp báo cáo cho client khác mà không kiểm tra, và các báo cáo tốc độ bất khả thi hoặc trúng đích mâu thuẫn xuất hiện đều đặn bất kể bản cập nhật hay khu vực
Loại trừ nếu
server đang tự tính hoặc kiểm tra kết quả → không phải nguyên nhân này. Khi đó hiện tượng dịch chuyển tức thời thì xem mất gói hoặc bộ đệm nội suy
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
    Cách để client báo cáo kết quả chỉ khả thi khi có thể tin client. Vì lo ngại hack nên dùng server có thẩm quyền
  2. Peeking into VALORANT's Netcode Riot Games
    Mô hình server có thẩm quyền: server tuyệt đối không tin trạng thái game mà client thấy
  3. Distributed authority topologies (Netcode for GameObjects 2.5) Unity
    Chia quyền cho client thì gian lận dễ hơn, và không còn một mô phỏng duy nhất điều khiển mọi đối tượng

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