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

Tải render khi đông người Render/animation cost of crowds

ID nguyên nhân cg-crowd · 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 →

Khi hàng trăm người cùng hiện trên một màn hình như lúc công thành hay đánh world boss, riêng chi phí vẽ đã vượt quá sức máy.

Vì sao Hàng trăm người và hiệu ứng chồng lên nhau trên một màn hình → Dẫn đến Chi phí hoạt ảnh, bóng đổ, bảng tên, hiệu ứng tăng theo số người → Trên màn hình FPS tụt từ 60 → 15, mọi chuyển động đều giật khựng và thao tác cũng bị trễ

Triệu chứng
Giật khựng, Trễ thao tác
Yếu tố
Ngưng 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)
Việc cần làm (Đội phát triển game)
Giảm chi tiết theo khoảng cách (LOD), giới hạn số người hiển thị, tùy chọn giảm hiệu ứng, giảm tần suất cập nhật hoạt ảnh.
Con số tham khảo
Dù 1 nhân vật chỉ tốn 0,02–0,1 ms, 300 nhân vật đã là 6–30 ms. Ngân sách một khung hình ở 60 FPS là 16,7 ms, nên riêng phần này đã chiếm hơn 1/3, nhiều thì vượt luôn ngân sách.
Trên đồ thị
Tăng theo số người và tải · Frame time, số nhân vật trên màn hình
Chỗ cần xem
So sánh frame time và CPUBusy, GPUBusy của PresentMon trước và sau công thành hoặc world boss. Trên bản build development: stat Unit của Unreal (thời gian game thread, render thread, GPU)
Đúng nếu
số người trên màn hình càng tăng thì frame time càng tăng theo, bật giới hạn số người hiển thị hoặc tùy chọn giảm hiệu ứng là đỡ ngay
Loại trừ nếu
vọt lên bất kể số người → “Frame time vọt lên” hoặc “Thu gom rác (GC) phía client”. FPS bình thường mà chỉ chuyển động của người khác bị trễ dần → “Nghẽn xử lý gói tin trên main thread”
Cách kiểm tra
Kiểm tra ở môi trường phía người chơi

Nguồn

  1. Introduction to level of detail Unity
    Không có LOD thì vật thể trông nhỏ trên màn hình vẫn được vẽ với cùng độ phức tạp; LOD giảm tải việc vẽ
  2. Animation Budget Allocator in Unreal Engine Epic Games
    Giảm linh động tần suất cập nhật hoạt ảnh (tick) của skeletal mesh để giữ thời gian dành cho hoạt ảnh trong ngân sách
  3. PresentMon Capture Application (README-CaptureApplication.md) Intel
    Dùng FrameTime, CPUBusy, GPUBusy để phân biệt CPU hay GPU đang làm chậm khung hình
  4. Stat Commands in Unreal Engine Epic Games
    stat Unit: tổng frame time và thời gian game thread, render thread, GPU

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