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

Sách trắng lag game › L2 OS và thiết bị phía client

Giới hạn xử lý khi cửa sổ bị thu nhỏ hoặc mất focus Minimized / unfocused window throttling

ID nguyên nhân co-unfocused · 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 bạn chuyển sang cửa sổ khác hoặc thu nhỏ game, cả game lẫn Windows đều cho game chạy chậm lại để tiết kiệm điện. Lúc quay lại, gói tin tồn đọng dồn tới một lượt, hoặc kết nối đã bị ngắt.

Vì sao Nhấn Alt+Tab sang cửa sổ khác hoặc thu nhỏ game → Dẫn đến Trong lúc không hiển thị, game hạ FPS xuống rất thấp hoặc dừng hẳn, Windows cũng hạ mức ưu tiên của chương trình không hiển thị → Trên màn hình Vừa quay lại thì tua nhanh, nếu thu nhỏ lâu thì mất kết nối

Triệu chứng
Tua nhanh, Giật khựng, Mất kết nối
Yếu tố
Ngưng trệ
Ai gặp phải
Chỉ mình tôi
Khi nào
Khi làm một thao tác nhất định, Sau khi để yên một lúc
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)
Dù cửa sổ không hiển thị, vẫn nhận gói tin và gửi heartbeat trên thread riêng, kiểm tra thiết lập “chạy nền” (Run In Background) của engine, khi quay lại thì đồng bộ về trạng thái mới nhất một lần.
Con số tham khảo
Khi cửa sổ không hiển thị mà FPS bị hạ còn 5–10, mỗi khung hình dài 100–200 ms. Game xử lý gói tin theo từng khung hình sẽ đọc gói tin trễ đúng chừng ấy.
Trên đồ thị
Đứt quãng rồi dồn về · Khoảng cách khung hình (trước và sau khi chuyển cửa sổ), số gói đã xử lý
Chỗ cần xem
Để PresentMon chạy rồi thử Alt+Tab hoặc thu nhỏ, xem khoảng cách khung hình khi cửa sổ không hiển thị. Ghi thời điểm đổi focus cửa sổ vào log game để đối chiếu với lý do mất kết nối
Đúng nếu
trong lúc cửa sổ không hiển thị, khoảng cách khung hình tăng lên trên 100 ms hoặc không còn được ghi, lúc quay lại thì xử lý dồn một lượt các gói tồn đọng và tua nhanh. Thu nhỏ lâu thì mất kết nối do heartbeat timeout
Loại trừ nếu
cửa sổ vẫn mở phía trước mà vẫn bị như vậy → “Tiến trình chạy nền chiếm giữ CPU” hoặc phía mạng
Cách kiểm tra
Kiểm tra ở môi trường phía người chơi
Tìm hiểu thêm
Windows 11 không bảo đảm timer 1 ms cho chương trình có cửa sổ bị thu nhỏ hoặc bị che hoàn toàn và không phát âm thanh. Trên laptop chạy pin, Windows hạ các chương trình đó xuống tốc độ tiết kiệm điện nhất, và với CPU có nhiều loại core thì có thể cho chạy trên core hiệu suất (efficiency core) chậm hơn. Nếu trong hai client trên cùng PC chỉ client chạy nền bị bất thường, hãy xem thêm mục “Giới hạn xử lý ở cửa sổ chạy nền”.

Nguồn

  1. Quality of Service Microsoft
    Chương trình có cửa sổ không nhìn thấy và không phát âm thanh được xếp vào Low QoS; khi chạy pin thì được lập lịch với tốc độ CPU tiết kiệm nhất và trên efficiency core
  2. timeBeginPeriod function (timeapi.h) Microsoft
    Windows 11 không bảo đảm độ phân giải timer cao hơn mặc định cho tiến trình có cửa sổ bị che hoặc thu nhỏ
  3. Application.runInBackground Unity
    Giá trị mặc định của Unity là false nên khi cửa sổ xuống nền, vòng lặp game dừng lại
  4. PresentMon Capture Application (README-CaptureApplication.md) Intel
    MsBetweenPresents: thời gian giữa lần gọi Present() này và lần gọi trước (ms)

Nguyên nhân nên xem cùng

Cùng tầng: L2 OS và thiết bị 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