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

Sách trắng lag game › L1 Tiến trình game phía client

Bộ đệm nội suy không có hoặc quá ngắn Missing/short interpolation buffer

ID nguyên nhân cg-no-buffer · 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)

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

Nếu vẽ ngay khi nhận gói tin từ server, jitter (độ dao động của khoảng cách giữa các lần gói tin đến) lộ nguyên trên màn hình.

Vì sao Vẽ ngay vị trí vừa nhận, hoặc bộ đệm ngắn hơn jitter → Dẫn đến Gói tới muộn bao lâu thì dừng bấy lâu, gói dồn tới bao nhiêu thì nhảy bấy nhiêu → Trên màn hình Nhân vật khác di chuyển khựng khựng

Triệu chứng
Giật khựng
Yếu tố
Jitter
Ai gặp phải
Chỉ mình tôi
Khi nào
Luôn luôn
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 bộ đệm nội suy, tự động điều chỉnh độ dài bộ đệm theo tình trạng đường truyền. Server: áp dụng bù trễ (phán định có quay ngược) để phán định vẫn đúng khi người chơi bắn vào hình ảnh quá khứ trễ đúng bằng bộ đệm.
Con số tham khảo
Thường đặt bộ đệm bằng khoảng 2 lần khoảng cách gửi gói của server (nhận 20 lần trong 1 giây thì là 100 ms).
Trên đồ thị
Luôn cao ngay từ đầu · Khoảng cách gói tin đến, số lần bộ đệm nội suy bị cạn
Chỗ cần xem
Ghi lại trên client phân bố khoảng cách đến của gói tin từ server, và số khung hình bị dừng hoặc chuyển sang ngoại suy vì không có snapshot kế tiếp để nội suy
Đúng nếu
độ dao động khoảng cách đến thường xuyên lớn hơn độ dài bộ đệm nội suy, mỗi lần như vậy bộ đệm cạn và nhân vật khác khựng lại. Tăng bộ đệm thì giảm
Loại trừ nếu
bộ đệm đủ mà vẫn khựng → kiểm tra xem bản thân khoảng cách gửi của server có thất thường không (tick bị trễ)
Cách kiểm tra
Cần log và chỉ số của server, client game
Tìm hiểu thêm
Tăng bộ đệm thì chuyển động mượt hơn, nhưng bạn cũng thấy đối thủ ở trạng thái quá khứ lâu hơn chừng ấy. Vì vậy, phán định đòn đánh dùng kèm bù trễ: server quay ngược về “quá khứ mà người đó đang thấy” để kiểm tra.

Nguồn

  1. Interpolation and extrapolation (Netcode for Entities 6.5) Unity
    Nội suy có bộ đệm: cố ý vẽ trễ để chờ gói tới muộn; bộ đệm càng lớn càng chính xác nhưng độ trễ cũng tăng tương ứng
  2. Struct ClientTickRate (Netcode for Entities 6.5) Unity
    Giá trị mặc định của bộ đệm nội suy InterpolationTimeNetTicks = 2 (bằng 2 lần gửi của server)
  3. Physics (Netcode for Entities 6.5) Unity
    Bù trễ: server tìm lại thế giới va chạm mà client đang thấy ở tick đó để phán định trúng hay trượt

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

Cùng tầng: L1 Tiến trình game phía client

Nguyên nhân ở tầng khác gây cùng triệu chứng (Giật khựng)

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