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

คู่มือเกมแลค › L2 OS และอุปกรณ์ฝั่งไคลเอนต์

จำกัดการประมวลผลเมื่อย่อหรือสลับหน้าต่าง Minimized / unfocused window throttling

ID สาเหตุ co-unfocused · ผู้รับผิดชอบหลัก พัฒนาไคลเอนต์ (ทีมพัฒนาเกม)

เปิดการ์ดในฉบับหลักที่มีภาพและการทดลอง →

เมื่อไปดูหน้าต่างอื่นหรือย่อเกม ตัวเกมและ Windows จะลดความเร็วการทำงานของเกมเพื่อประหยัดไฟ พอกลับมา แพ็กเก็ตที่กองรอจะทะลักเข้ามา หรือหลุดไปแล้ว

ทำไม กด Alt+Tab ไปดูหน้าต่างอื่น หรือย่อเกม → ผลคือ ระหว่างที่มองไม่เห็นเกม เกมลด FPS ลงมากหรือหยุด และ Windows ก็ลด priority ของโปรแกรมที่มองไม่เห็นด้วย → บนหน้าจอ ทันทีที่กลับมาเกิดอาการกรอเร็ว ถ้าย่อไว้นานจะหลุด

อาการ
กรอเร็ว, กระตุก, หลุด
ปัจจัย
การหยุดชะงัก
ใครเจอ
เราคนเดียว
เกิดเมื่อไร
ตอนทำแอ็กชันบางอย่าง, หลังอยู่เฉย ๆ สักพัก
ผู้รับผิดชอบ
ผู้รับผิดชอบหลัก พัฒนาไคลเอนต์ (ทีมพัฒนาเกม)
งานฝั่งทีมพัฒนาเกม
ให้การรับแพ็กเก็ตและ heartbeat ทำงานต่อในเธรดแยกแม้มองไม่เห็นหน้าต่าง, ตรวจการตั้งค่า “Run In Background” ของเอนจิน, ตอนกลับมาให้ปรับเป็นสถานะล่าสุดในครั้งเดียว
ตัวเลขที่ควรรู้
ถ้าลด FPS เหลือ 5–10 ตอนที่มองไม่เห็นหน้าต่าง หนึ่งเฟรมจะยาว 100–200 ms เกมที่ประมวลผลแพ็กเก็ตทุกเฟรมก็จะอ่านแพ็กเก็ตช้าลงเท่านั้น
บนกราฟ
ขาดช่วงแล้วมารวดเดียว · ช่วงห่างระหว่างเฟรม (ก่อนและหลังสลับหน้าต่าง), จำนวนแพ็กเก็ตที่ประมวลผล
จุดที่ต้องดู
เปิด PresentMon ไว้แล้วลองกด Alt+Tab หรือย่อหน้าต่าง ดูช่วงห่างระหว่างเฟรมตอนที่มองไม่เห็นหน้าต่าง บันทึกเวลาที่โฟกัสหน้าต่างเปลี่ยนลง log ของเกม แล้วเทียบกับสาเหตุที่หลุด
สัญญาณว่าใช่
ระหว่างที่มองไม่เห็นหน้าต่าง ช่วงห่างระหว่างเฟรมยาวขึ้นเกิน 100 ms หรือบันทึกขาดหาย และทันทีที่กลับมา เกมประมวลผลแพ็กเก็ตที่กองรอรวดเดียวจนเกิดอาการกรอเร็ว ถ้าย่อไว้นานจะหลุดเพราะ heartbeat timeout
สัญญาณว่าไม่ใช่
เปิดหน้าต่างไว้ก็ยังเป็นเหมือนกัน: น่าจะเป็น “โปรเซสเบื้องหลังแย่ง CPU” หรือฝั่งเครือข่าย
วิธีตรวจ
ตรวจที่สภาพแวดล้อมฝั่งผู้เล่น
รายละเอียดเพิ่มเติม
Windows 11 ไม่รับประกันตัวจับเวลา 1 ms ให้โปรแกรมของหน้าต่างที่ถูกย่อหรือถูกบังมิดและไม่มีเสียง บนโน้ตบุ๊กที่ใช้แบตเตอรี่ Windows จะลดความเร็วของโปรแกรมแบบนี้ลงไปที่ระดับที่ใช้ไฟน้อยที่สุด และถ้าเป็น CPU ที่มีคอร์หลายแบบผสมกัน ก็อาจย้ายไปรันบน efficiency core ที่ช้ากว่า ถ้าไคลเอนต์สองตัวใน PC เครื่องเดียวกันผิดปกติเฉพาะตัวที่อยู่เบื้องหลัง ให้ดูรายการ “จำกัดการประมวลผลของหน้าต่างเบื้องหลัง” ประกอบด้วย

แหล่งอ้างอิง

  1. Quality of Service Microsoft
    โปรแกรมของหน้าต่างที่มองไม่เห็นและไม่มีเสียงจะได้ Low QoS เมื่อใช้แบตเตอรี่จะถูกจัดให้รันที่ความเร็ว CPU ที่ประหยัดที่สุดและบน efficiency core
  2. timeBeginPeriod function (timeapi.h) Microsoft
    Windows 11 ไม่รับประกันความละเอียดของตัวจับเวลาที่สูงกว่าค่าเริ่มต้นให้โปรเซสของหน้าต่างที่ถูกบังหรือถูกย่อ
  3. Application.runInBackground Unity
    ค่าเริ่มต้นของ Unity คือ false เมื่อหน้าต่างไปอยู่เบื้องหลัง ลูปของเกมจะหยุด
  4. PresentMon Capture Application (README-CaptureApplication.md) Intel
    MsBetweenPresents: เวลาระหว่างการเรียก Present() ครั้งนี้กับครั้งก่อน (ms)

สาเหตุที่ควรดูประกอบ

ชั้นเดียวกัน: L2 OS และอุปกรณ์ฝั่งไคลเอนต์

สาเหตุจากชั้นอื่นที่ทำให้เกิดอาการเดียวกัน (กรอเร็ว)

ดูการ์ดในฉบับหลักที่มีภาพและการทดลอง