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

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

Phát ngay khi nhận, không có timestamp Events played on arrival (no timestamps)

ID nguyên nhân sy-no-timestamp · 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 sự kiện từ server không kèm thời điểm xảy ra mà được phát ngay khi nhận, thời điểm hiển thị sẽ lệch lung tung đúng theo jitter của mạng.

Vì sao Thực thi sự kiện “bắt đầu tấn công”, “phát hiệu ứng” ngay khi nhận → Dẫn đến Mỗi gói tin có thời gian tới khác nhau nên khoảng cách lúc dài lúc ngắn → Trên màn hình Chuỗi động tác tấn công lúc nhanh lúc chậm, thời điểm ra pattern của boss mỗi lần một khác

Triệu chứng
Giật khựng, Tua nhanh
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: phát theo thời điểm gắn trong sự kiện (đặt lịch sự kiện, bộ đệm nội suy). Server: gắn thời điểm xảy ra (giờ server) vào sự kiện khi gửi.
Trên đồ thị
Thỉnh thoảng vọt lên bất chợt · Khoảng cách phát sự kiện, khoảng cách gói tin tới
Chỗ cần xem
Khớp thời điểm xảy ra sự kiện trong log server với thời điểm tới và thời điểm phát trong log client theo số thứ tự sự kiện, rồi so sánh khoảng cách. Trong bản build dev, thêm jitter (giá trị jitter của tc netem, độ trễ tối thiểu và tối đa trong mô phỏng mạng của Unreal) để tái hiện
Đúng nếu
khoảng cách xảy ra trên server đều đặn nhưng khoảng cách phát lệch lung tung theo đúng khoảng cách gói tin tới
Loại trừ nếu
khoảng cách tới đều mà phát vẫn lệch lung tung → vấn đề khung hình phía client (frame time vọt lên). Khoảng cách xảy ra trên server đã dao động → vượt tick budget
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
    Gắn giờ server vào mỗi bản cập nhật, rồi vẽ đối tượng ở vị trí của thời điểm mục tiêu, bằng thời điểm hiện tại trừ thời gian nội suy (100 ms)
  2. Snapshot Interpolation Gaffer On Games
    Vẽ ngay snapshot nhận được thì bị ngắt quãng do jitter, gom một chút vào bộ đệm nội suy rồi mới vẽ thì mượt
  3. NetworkTime and ticks (Netcode for GameObjects 2.5) Unity
    Ví dụ đưa thời điểm gửi vào RPC để bên nhận phát hiệu ứng theo giờ server
  4. tc-netem(8) — Linux manual page iproute2
    Công cụ thử nghiệm giả lập mạng thực bằng cách thêm độ trễ, jitter (delay TIME JITTER) và mất gói (loss random PERCENT) vào gói tin đi ra
  5. Using Network Emulation in Unreal Engine Epic Games
    Thử nghiệm bằng cách đặt độ trễ tối thiểu, tối đa và tỷ lệ mất gói cho server và client; trên console thì cấu hình như NetEmulation.PktLag

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 (Giật khựng)

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