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

คู่มือเกมแลค › L1 โปรเซสเกมฝั่งไคลเอนต์

เฟรมไทม์พุ่ง Frame hitch

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

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

เฟรมหนึ่งใช้เวลาคำนวณนานกว่าปกติหลายเท่า ภาพบนจอจึงหยุดไปครู่หนึ่ง

ทำไม เอฟเฟกต์สกิลเยอะผิดปกติ, spawn จำนวนมาก และการอัปเดต UI ทั้งหน้าจอ มารวมอยู่ในเฟรมเดียว → ผลคือ ทำไม่เสร็จภายใน 16.7 ms และกินเวลา 50–300 ms → บนหน้าจอ ภาพหยุดแวบ แล้วทุกตัวขยับไปพร้อมกันในเฟรมถัดไป

อาการ
กระตุก, ค้าง
ปัจจัย
การหยุดชะงัก
ใครเจอ
เราคนเดียว
เกิดเมื่อไร
ตอนคนแห่มารวมกัน, ตอนทำแอ็กชันบางอย่าง, สุ่มเป็นครั้งคราว
ผู้รับผิดชอบ
ผู้รับผิดชอบหลัก พัฒนาไคลเอนต์ (ทีมพัฒนาเกม)
งานฝั่งทีมพัฒนาเกม
แบ่งงานหนักไปทำในหลายเฟรม, ใช้ profiler หาเฟรมที่พุ่ง, จำกัดจำนวนเอฟเฟกต์
ตัวเลขที่ควรรู้
หนึ่งเฟรมที่ 60 FPS คือ 16.7 ms แค่มีเฟรมเดียวที่เกิน 50 ms ก็รู้สึกได้ง่ายว่า “กระตุก”
บนกราฟ
พุ่งแบบสุ่มเป็นครั้งคราว · เฟรมไทม์
จุดที่ต้องดู
ใช้ PresentMon อัดเฟรมไทม์ (FrameTime) และเวลาที่ CPU/GPU ใช้กับเฟรมนั้น (CPUBusy/GPUBusy) ระหว่างเล่น บนมือถือดูเมตริก slow sessions และ slow rendering ของ Android vitals
สัญญาณว่าใช่
จังหวะที่เฟรมไทม์ซึ่งปกติอยู่ราว 16.7 ms พุ่งเกิน 50 ms ตรงกับเอฟเฟกต์สกิล, spawn จำนวนมาก หรือการอัปเดต UI ทั้งหน้าจอ และขณะนั้นปิงยังเท่าเดิม
สัญญาณว่าไม่ใช่
เฟรมไทม์สม่ำเสมอ แต่มีแค่ตัวละครอื่นที่หยุดแวบ: น่าจะเป็นฝั่งเครือข่าย เช่น “ไม่มี interpolation buffer หรือสั้นเกินไป” ถ้าพุ่งเป็นรอบสม่ำเสมอ ให้ดู “GC ฝั่งไคลเอนต์” ก่อน
วิธีตรวจ
ตรวจที่สภาพแวดล้อมฝั่งผู้เล่น

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

  1. Slow rendering Android (Google)
    ต้องวาดหนึ่งเฟรมให้เสร็จภายใน 16 ms จึงจะได้ 60 FPS ถ้าช้ากว่านั้นเฟรมจะถูกข้ามและเห็นเป็นอาการกระตุก (jank)
  2. Slow Sessions (games only) Android (Google)
    Android vitals ถือว่าเฟรมของเกมที่เกิน 50 ms (20 FPS) หรือ 34 ms (30 FPS) เป็นเฟรมช้า
  3. PresentMon Capture Application (README-CaptureApplication.md) Intel
    FrameTime (เวลา CPU ระหว่างเฟรม), CPUBusy/GPUBusy (เวลาที่ CPU/GPU ใช้สร้างเฟรมนั้น)

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

ชั้นเดียวกัน: L1 โปรเซสเกมฝั่งไคลเอนต์

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

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