한국어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

Nghẽn xử lý gói tin trên main thread Network processing on the main thread

ID nguyên nhân cg-net-mainthread · 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 mỗi khung hình chỉ xử lý một lượng gói tin cố định, số gói dồn tới sẽ liên tục bị đẩy sang khung hình sau.

Vì sao Ở nơi đông người, mỗi giây có hàng nghìn bản cập nhật đổ về → Dẫn đến Main thread chạm giới hạn xử lý mỗi khung hình nên đọc không hết → Trên màn hình Chuyển động của người khác hiện ra ngày càng trễ và dồn cục

Triệu chứng
Tua nhanh, Trễ thao tác
Yếu tố
Ngưng trệ, Độ trễ
Ai gặp phải
Một địa điểm hoặc kênh, Chỉ mình tôi
Khi nào
Khi đông người
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: nhận và giải mã trên thread riêng, gộp các bản cập nhật vị trí cũ của cùng một đối tượng và chỉ áp dụng bản mới nhất. Server: ở nơi đông người, gửi cập nhật của nhân vật ở xa thưa hơn để giảm lượng dữ liệu gửi.
Con số tham khảo
Gói tin chưa xử lý mà dồn lại thì chỉ vài giây là đã trễ tới 1 giây.
Trên đồ thị
Tăng theo số người và tải · Số gói nhận chưa xử lý, độ trễ từ lúc nhận đến lúc áp dụng
Chỗ cần xem
Ghi log số gói client để lại chưa xử lý ở mỗi khung hình và độ trễ từ lúc gói tới đến lúc áp dụng vào game, rồi đối chiếu với số người xung quanh
Đúng nếu
ở nơi đông người, số gói tồn và độ trễ áp dụng tăng liên tục, trong khi ping và khoảng cách gửi của server cùng lúc đó vẫn bình thường
Loại trừ nếu
không có độ trễ áp dụng nhưng bản thân gói tin tới muộn → đoạn mạng. Frame time tăng mạnh → “Tải render khi đông người”
Cách kiểm tra
Cần log và chỉ số của server, client game

Nguồn

  1. Actor Priority in Unreal Engine Epic Games
    Khi thiếu băng thông, thay vì replicate mọi actor mỗi lần, engine xếp ưu tiên theo khoảng cách tới người xem và thời gian kể từ lần replicate cuối
  2. Replication Graph in Unreal Engine Epic Games
    Game có nhiều người kết nối và nhiều đối tượng cần replicate (như MMORPG) phải gom theo vị trí và chỉ gửi đối tượng cần thiết thì mới tránh được nghẽn CPU server

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 (Tua nhanh)

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