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

Sách trắng lag game › Sự cố chỉ một số người gặp

Kích thước bộ đệm input theo người chơi Per-player server input buffer (jitter buffer)

ID nguyên nhân pt-input-buffer · 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 gom input của mỗi người một chút rồi lấy ra một input mỗi tick, người khác thấy mượt, nhưng thời điểm hành động của chính người đó được xác nhận trên server sẽ muộn đi tương ứng.

Vì sao Server gom input của người chơi chậm vào bộ đệm và áp dụng một input mỗi tick → Dẫn đến Bộ đệm nhỏ thì hay bị trống, nhân vật đó đứng yên tại chỗ hoặc server đoán theo input cuối để di chuyển; bộ đệm lớn thì input của chính người đó được xác nhận muộn → Trên màn hình Nhỏ thì trong mắt người khác bị khựng, lớn thì kết quả skill của chính người đó ra muộn (trễ thao tác)

Triệu chứng
Giật khựng, Trễ thao tác
Yếu tố
Jitter
Ai gặp phải
Chỉ một nhân vật trông bất thường, Chỉ mình tôi
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ự động điều chỉnh kích thước bộ đệm theo tình trạng đường truyền của từng người, khi bị dồn thì lấy ra hai input một lần để bắt kịp, yêu cầu client của người hay bị trống bộ đệm gửi input sớm hơn. Client: gửi input sớm hơn một chút theo chỉ thị của server (điều chỉnh thời gian client).
Con số tham khảo
Tùy game nhưng thường là lượng input của 1–3 tick. VALORANT trên server 128 tick giữ bộ đệm phía server ngắn hơn, trung bình nửa khung hình (khoảng 4 ms). Kiểu thích ứng, chỉ tăng bộ đệm cho người có jitter lớn, là phổ biến.
Trên đồ thị
Chỉ một phần cao · Độ dài bộ đệm input, số lần bị trống theo người chơi
Chỗ cần xem
Ghi trên server theo từng người chơi, mỗi tick: số input còn lại trong bộ đệm, số lần bộ đệm trống phải đoán theo input cuối để lấp, thời gian từ khi input tới đến khi được áp dụng
Đúng nếu
người có bộ đệm nhỏ bị trống nhiều lần và vào lúc đó dừng ngắn trên màn hình người khác, còn người có bộ đệm lớn thì thời gian từ input đến áp dụng tăng lên đúng bằng độ dài bộ đệm
Loại trừ nếu
bộ đệm gần như không bị trống mà trên màn hình người khác vẫn thấy giật khựng → vấn đề nội suy ở phía người xem. Bộ đệm ngắn mà trễ thao tác vẫn lớn → do chính RTT hoặc chờ tick hai lần
Cách kiểm tra
Cần log và chỉ số của server, client game

Nguồn

  1. Peeking into VALORANT's Netcode Riot Games
    Server điều chỉnh mốc thời gian của client để giữ hàng đợi input ở mức độ trễ tối thiểu mà vẫn đủ hấp thụ việc gói tới không đều. Mục tiêu đệm trên server là trung bình nửa khung hình
  2. NetworkTimeSystem class (Netcode for GameObjects 2.5) Unity
    LocalBufferSec: thời gian server đệm message của client. Đẩy thời gian client lên sớm hơn để message tới server sớm hơn
  3. NetworkTime and ticks (Netcode for GameObjects 2.5) Unity
    Người chơi có đường truyền kém có thể tăng giá trị bộ đệm

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

Cùng tầng: Sự cố chỉ một số người gặp

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