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

Frame time vọt lên Frame hitch

ID nguyên nhân cg-hitch · Phụ trách chính 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 →

Việc tính toán một khung hình mất thời gian gấp nhiều lần bình thường nên màn hình dừng lại trong chốc lát.

Vì sao Hiệu ứng skill tăng đột biến, spawn hàng loạt, cập nhật toàn bộ UI dồn vào cùng một khung hình → Dẫn đến Không xong kịp trong 16,7 ms, mất tới 50–300 ms → Trên màn hình Màn hình khựng lại, sang khung hình sau mọi nhân vật cùng nhảy tới vị trí mới một lượt

Triệu chứng
Giật khựng, Đứng hình
Yếu tố
Ngưng trệ
Ai gặp phải
Chỉ mình tôi
Khi nào
Khi đông người, Khi làm một thao tác nhất định, Thỉnh thoảng bất chợt
Phụ trách
Phụ trách chính Phát triển client (Đội phát triển game)
Việc cần làm (Đội phát triển game)
Chia việc nặng ra nhiều khung hình, dùng profiler tìm khung hình vọt lên, đặt giới hạn số hiệu ứng.
Con số tham khảo
Ở 60 FPS, một khung hình dài 16,7 ms. Chỉ cần một khung hình vượt quá 50 ms là người chơi đã dễ cảm thấy “bị giật”.
Trên đồ thị
Thỉnh thoảng vọt lên bất chợt · Frame time
Chỗ cần xem
Dùng PresentMon ghi lại frame time (FrameTime) và thời gian CPU, GPU dùng cho khung hình đó (CPUBusy, GPUBusy) trong lúc chơi. Trên di động: chỉ số phiên chậm (slow session) và render chậm (slow rendering) của Android vitals
Đúng nếu
frame time vốn quanh 16,7 ms vọt lên quá 50 ms đúng lúc có hiệu ứng skill, spawn hàng loạt hoặc cập nhật toàn bộ UI, còn ping lúc đó không đổi
Loại trừ nếu
frame time đều nhưng chỉ nhân vật khác bị khựng → phía mạng, ví dụ “Bộ đệm nội suy không có hoặc quá ngắn”. Các lần vọt lên cách đều nhau → xem “Thu gom rác (GC) phía client” trước
Cách kiểm tra
Kiểm tra ở môi trường phía người chơi

Nguồn

  1. Slow rendering Android (Google)
    Muốn đạt 60 FPS thì phải vẽ một khung hình trong 16 ms; trễ hơn thì khung hình bị bỏ qua, trông như giật (jank)
  2. Slow Sessions (games only) Android (Google)
    Android vitals coi khung hình game vượt 50 ms (20 FPS) hoặc 34 ms (30 FPS) là khung hình chậm
  3. PresentMon Capture Application (README-CaptureApplication.md) Intel
    FrameTime (thời gian CPU giữa hai khung hình), CPUBusy và GPUBusy (thời gian CPU, GPU dùng để tạo khung hình đó)

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