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

Giới hạn xử lý ở cửa sổ chạy nền Background window throttling

ID nguyên nhân pt-background · Phụ trách chính Phát triển client (Đội phát triển game) · Phối hợp Bên ngoài (Bên ngoài)

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

Với client ở cửa sổ chạy nền, game, engine và OS đều giảm khung hình và việc xử lý. Gói tin nhận được không được xử lý kịp nên bị dồn lại hoặc tràn.

Vì sao Giới hạn khung hình khi chạy nền trong tùy chọn game hoặc driver đồ họa (ví dụ driver NVIDIA cho chọn từ 20 đến 200 khung hình mỗi giây), tiết kiệm điện, cấu hình tạm dừng khi chạy nền của engine. OS cũng ưu tiên cấp CPU và GPU cho cửa sổ đang ở phía trước (foreground) → Dẫn đến Số gói xử lý mỗi khung hình giảm nên hàng đợi dồn lại, bộ đệm nhận tràn thì gói bị bỏ → Trên màn hình Đưa cửa sổ lên phía trước thì mọi thứ hiện ra dồn một lượt, hoặc một số NPC mãi không hiển thị

Triệu chứng
Không hiển thị·đối tượng ma, Tua nhanh, Mất kết nối
Yếu tố
Ngưng trệ, Mất gói
Ai gặp phải
Chỉ một client trên cùng PC
Khi nào
Sau khi để yên một lúc, 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 Bên ngoài (Bên ngoài)
Việc cần làm (Đội phát triển game)
Nhận dữ liệu mạng liên tục trên thread tách riêng khỏi vòng lặp game, bảo đảm thông lượng xử lý tối thiểu cả khi chạy nền, bật cấu hình chạy nền của engine (Unity là runInBackground).
Việc cần làm (Bên ngoài)
Hướng dẫn người chơi tắt giới hạn khung hình khi chạy nền của driver đồ họa và chế độ tiết kiệm điện của PC.
Con số tham khảo
Với Unity, nếu tắt runInBackground, vòng lặp game dừng ngay khi cửa sổ mất focus. Nếu chỉ nhận dữ liệu trong vòng lặp đó thì trong thời gian này không gói tin nào được xử lý.
Trên đồ thị
Đứt quãng rồi dồn về · Khoảng cách khung hình của client, số gói xử lý mỗi khung hình
Chỗ cần xem
Trên cùng một PC, đặt một cửa sổ ở trước, cửa sổ kia ở sau rồi đổi vai để so sánh. Dùng PresentMon đo khoảng cách khung hình của hai tiến trình; nếu có log phía game thì xem trạng thái focus của cửa sổ và số gói xử lý mỗi khung hình
Đúng nếu
chỉ khi ở cửa sổ chạy nền thì khoảng cách khung hình tăng mạnh (nếu do giới hạn của driver thì đi ngang ở khoảng cách tương ứng với số khung hình mỗi giây đã đặt) hoặc việc xử lý dừng lại, và khi đổi cửa sổ thì vấn đề cũng chuyển sang client kia
Loại trừ nếu
cửa sổ ở phía trước cũng bị y như vậy → không phải do giới hạn chạy nền. Luôn chỉ cùng một client bất thường, bất kể vị trí cửa sổ → xem khác tùy chọn hiển thị hoặc khác phiên bản
Cách kiểm tra
Kiểm tra ở môi trường phía người chơi

Nguồn

  1. Application.runInBackground Unity
    Giá trị mặc định của runInBackground là false, khi đó ứng dụng tạm dừng khi chạy nền
  2. Manage 3D Settings (reference) — NVIDIA Control Panel Help NVIDIA
    Background Application Max Frame Rate: giới hạn khung hình tối đa của game chạy nền trong khoảng 20–200 khung hình mỗi giây
  3. Priority Boosts Microsoft
    Windows nâng mức ưu tiên tiến trình của cửa sổ foreground lên bằng hoặc cao hơn tiến trình chạy nền
  4. PresentMon README Intel
    Công cụ thu thập frame time của CPU, GPU, màn hình theo từng ứng dụng đồ họa trên Windows

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 (Không hiển thị·đối tượng ma)

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