ไมโครโปรไฟล์ คือเครื่องมือสำหรับการเพิ่มประสิทธิภาพและการแก้ปัญหาใน Roblox Studio และไคลเอนต์ของ Roblox มันให้ข้อมูลการไทม์มิ่งที่ละเอียดและมีภาพสำหรับทุก งานของเอนจิน ที่รันในระหว่างเฟรม เช่น การเคลื่อนไหวของตัวละคร การอัปเดตฟิสิกส์ การรันสคริปต์ และการเรนเดอร์เรข geometry คุณสามารถระบุได้ว่างานใดรันในช่วงเฟรมใด งานไหนใช้เวลานานเท่าใด และว่างานใดมีผลทำให้คุณพลาดเป้าหมายเวลาเฟรมของคุณ
เวลาเฟรม
ในการใช้ไมโครโปรไฟล์ คุณต้องเข้าใจความสัมพันธ์ระหว่าง เวลาเฟรม และ อัตราเฟรม
- เวลาเฟรมคือระยะเวลาที่ใช้ในการเรนเดอร์เฟรมบนหน้าจอ โดยทั่วไปจะวัดเป็นมิลลิวินาที
- อัตราเฟรมคือจำนวนเฟรมที่เรนเดอร์บนหน้าจอ โดยทั่วไปจะวัดเป็นเฟรมต่อวินาที (FPS)
เวลาเฟรมที่ต่ำกว่าจะหมายถึงอัตราเฟรมที่สูงขึ้น หาร 1,000 มิลลิวินาที (1 วินาที) ด้วยเวลาเฟรมเพื่อที่จะได้อัตราเฟรม
| เวลาเฟรมเฉลี่ย | เฟรมต่อวินาที |
|---|---|
| 33.33 มิลลิวินาที | 30 FPS |
| 16.67 มิลลิวินาที | 60 FPS |
| 8.33 มิลลิวินาที | 120 FPS |
| 4.17 มิลลิวินาที | 240 FPS |
อย่างไรก็ตาม สำหรับการเล่นเกมที่ราบรื่น มันไม่เพียงพอที่จะมีอัตราเฟรมสูง คุณต้องมี เวลาเฟรมที่สม่ำเสมอ เช่น ถ้า 59 เฟรมมาถึงใน 10 มิลลิวินาทีและหนึ่งเฟรมใน 410 มิลลิวินาที ผู้เล่นจะรู้สึกถึงการกระตุกที่รุนแรง แม้ว่าเกมจะทำงานที่ 60 FPS หากทุกเฟรมใช้เวลาประมาณเดียวกันในการเรนเดอร์ เกมของคุณจะรู้สึกเรียบเนียนมากขึ้นเนื่องจากความสม่ำเสมอนั้น โดยเฉพาะที่อัตราเฟรมที่ต่ำกว่า
ไมโครโปรไฟล์มุ่งเน้น ไปที่เวลาเฟรม เท่านั้น จุดประสงค์ของมันคือช่วยคุณระบุจุดสูงสุดของเวลาเฟรมและสิ่งที่ทำให้เกิดมัน
เปิดไมโครโปรไฟล์
การเปิดไมโครโปรไฟล์จะแตกต่างกันไปตามแพลตฟอร์ม:
บนไคลเอนต์มือถือ ให้เปิดเมนู การตั้งค่า และเปลี่ยนไมโครโปรไฟล์เป็น เปิด จากนั้นจากเครื่องมือพัฒนา ในเครือข่ายเดียวกัน ให้ใช้เว็บเบราว์เซอร์ของคุณไปที่ IP address และ port ที่ให้มา

ภาพหน้าจอนี้แสดงที่อยู่ IP 172.18.56.105 และ port 1338 ดังนั้นคุณจะไปที่ 172.18.56.105:1338 ขึ้นอยู่กับการตั้งค่าเครือข่ายของอุปกรณ์ของคุณ คุณอาจเห็นที่อยู่ IP หลายแห่ง ถ้าอันใดอันหนึ่งใช้ไม่ได้ ให้ลองอันถัดไป
บนไคลเอนต์เดสก์ท็อป ให้กด CtrlF6 (⌘F6)
ในสตูดิโอ ให้กด CtrlF6 (⌘F6)
โดยทั่วไป ไคลเอนต์มือถือเป็นสถานที่ที่ดีที่สุดในการโปรไฟล์เกมของคุณ ผู้เล่นส่วนใหญ่ใน Roblox ใช้โทรศัพท์และแท็บเล็ต และอุปกรณ์เหล่านี้มีข้อจำกัดด้านอุณหภูมิและพลังงานที่รุนแรงซึ่งจำกัดประสิทธิภาพของมัน หากเกมของคุณทำงานได้ดีในแท็บเล็ต Android ระดับกลาง มันเกือบจะแน่นอนว่ามีประสิทธิภาพที่ดีกว่ามากในเดสก์ท็อปสำหรับเล่นเกม
พื้นฐานของไมโครโปรไฟล์
ไมโครโปรไฟล์มีสองส่วนประกอบหลัก: กราฟแทบเวลาเฟรม และ เส้นเวลาในรายละเอียดของงาน
- กราฟเวลาของเฟรมจะวิ่งบนด้านบนของอินเทอร์เฟซและแสดงว่าแต่ละเฟรมใช้เวลาเรนเดอร์นานแค่ไหน แทบที่สูงกว่าจะหมายถึงเวลาที่นานขึ้น
- ไทม์ไลน์จะแสดงงานแต่ละงานที่รันระหว่างเฟรม แทบที่กว้างกว่าจะหมายถึงงานที่ใช้เวลาในการรันมากกว่า
การทำงานปกติในไมโครโปรไฟล์คือใช้กราฟเวลาเฟรมเพื่อระบุจุดสูงสุด (แทบที่สูงกว่า) และจากนั้นใช้ไทม์ไลน์เพื่อระบุว่างานใดทำให้เกิดจุดสูงสุดนั้น จากนั้นคุณสามารถตรวจสอบ ตารางแท็ก สำหรับข้อมูลเกี่ยวกับงานและวิธีปรับปรุงประสิทธิภาพของมัน

กราฟเวลาเฟรม
ความสูงของแทบแต่ละอันแสดงถึงจำนวนมิลลิวินาทีที่ใช้ในการทำงานให้เสร็จสิ้นเฟรม เฟรมที่ใหม่กว่าจะอยู่ทางขวา เลื่อนเมาส์ไปที่เฟรมเพื่อดูข้อมูลพื้นฐานเกี่ยวกับการใช้งาน CPU และ GPU

แทบสีส้มคือเฟรมที่ เวลา Wall ของงาน เกินกว่า เวลา Wall ของการเรนเดอร์ ในเฟรมเหล่านี้ งานอย่างน้อยหนึ่งงานที่ดำเนินการโดย เธรดของคนงาน ซึ่งทำสิ่งต่าง ๆ เช่นรันสคริปต์ คำนวณฟิสิกส์ และเล่นอนิเมชัน ใช้เวลานานกว่า เธรดการเรนเดอร์หลัก
หากเกมไม่ได้ไปถึงเป้าหมายเวลาเฟรมและมีจำนวนแทบสีส้มจำนวนมาก สาเหตุทั่วไปจะเป็นสคริปต์ ฟิสิกส์ และอนิเมชัน ดูที่ ปรับปรุงประสิทธิภาพ
แทบสีน้ำเงินคือเฟรมที่ เวลา Wall ของการเรนเดอร์ เกินกว่า เวลา Wall ของงาน ในเฟรมเหล่านี้ เธรดการเรนเดอร์หลักใช้เวลามากกว่าเธรดของคนงานใด ๆ
หากเกมไม่ได้ไปถึงเป้าหมายเวลาเฟรมและมีจำนวนแทบสีฟ้าจำนวนมาก ซึ่งบ่งบอกถึงปัญหาการเรนเดอร์ สาเหตุทั่วไปจะเป็นความหนาแน่นของวัตถุที่มากเกินไป การเคลื่อนไหวของวัตถุ และแสง ดูที่ ปรับปรุงประสิทธิภาพ
แทบสีแดงคือเฟรมที่สองเงื่อนไขเป็นจริง:
- เวลา Wall การเรนเดอร์ เกินเวลา Wall งาน
- เวลา รอ GPU มีค่ามากกว่า 2.5 มิลลิวินาท
แทบสีแดงจะเกิดขึ้นน้อยกว่าแทบสีส้มและสีน้ำเงิน และมักจะเกิดจากความซับซ้อนของวัตถุที่มากเกินไป ขนาดของเท็กซ์เจอร์ และเอฟเฟกต์ภาพ การปรับปรุงทั่วไปก็คล้ายกับแทบสีฟ้า ดูที่ ปรับปรุงประสิทธิภาพ
งานเล็ก ๆ ที่อยู่ที่ปลายของเฟรมบางครั้งอาจทำให้ เวลา Wall ของงาน และ เวลา Wall ของการเรนเดอร์ ไม่ตรง จึงเป็นเหตุผลที่ดีในการมุ่งเน้นไปที่เวลาเฟรมมากกว่าสีเฟรม ไม่มีสี "ดี" ที่จะพยายามให้บรรลุ การผสมผสานของทอสีส้ม น้ำเงิน และแดงไม่เป็นปัญหาตราบใดที่คุณไปถึงเป้าหมายเวลาเฟรมของคุณ หากคุณ ไม่ ไปถึงเป้าหมายเวลาเฟรม สีสามารถบ่งบอกว่าที่ไหนควรปรับปรุง
ไทม์ไลน์
คลิกซ้ายและลากเพื่อเลื่อนไทม์ไลน์ บนเครื่องที่มี CPU หลายตัว คุณอาจต้องเลื่อนขึ้นหรือลงมากพอสมควรเพื่อหาความ เธรด ที่ทำงานเฉพาะ

การเลื่อนจะซูมไทม์ไลน์เข้าและออก ร่วมกับป้ายชื่อมิลลิวินาทีที่อยู่ด้านบนของไทม์ไลน์ คุณสามารถรับรู้ได้ว่างานใช้เวลานานเพียงใดในแง่สัมบูรณ์ แต่ยังรวมถึงเวลาที่ใช้สัมพันธ์กับงานอื่น ๆ ด้วย

ชั้นสีเขียวบนกราฟแทบแสดงถึงจำนวนเฟรมที่มองเห็นอยู่ในไทม์ไลน์—ระดับการซูมของคุณ คลิกซ้ายที่แทบเฟรมเพื่อกระโดดไปยังตำแหน่งนั้นในไทม์ไลน์
คุณอาจต้องปรับระดับการซูมของคุณ แต่การเลื่อนเมาส์เหนือแทบจะทำให้เฟรมไฮไลท์ในไทม์ไลน์ เส้นสีเทาอ่อนจะกำหนดเฟรม

ป้ายที่ปรากฏอยู่ใต้ป้ายอื่นหมายถึงงานที่ดำเนินการเป็นส่วนหนึ่งของงานในระดับสูงกว่า
แทนที่จะมองที่งานหลัก คุณมักต้องการแก้ไขปัญหางานที่จะทำงานแย่ที่สุด งานหลักไม่สามารถสั้นกว่ายอดรวมของงานลูก
คลิกขวาที่ป้ายเพื่อซูมไทม์ไลน์ไปที่ระยะเวลาที่แน่นอนของงานนั้น
หากจำนวนข้อมูลมากเกินไป ใช้เมนู กลุ่ม หรือ เธรด เพื่อกรองไทม์ไลน์ ตัวอย่างเช่น คุณอาจต้องการดูเฉพาะงาน เรนเดอร์ ในเธรดหลัก

ใช้ CtrlF (⌘F) เพื่อกระโดดไปยังการเกิดขึ้นของงานที่ใช้เวลามากที่สุดในดัมพ์ ตัวอย่างเช่น computeLightingPerform ทำงานในทุกเฟรมของไคลเอนต์ หากคุณค้นหามันในดัมพ์ที่มี 128 เฟรม คุณสามารถกระโดดไปยังเฟรมที่ใช้เวลายาวนานที่สุดในการทำงานเสร็จ
เธรด
เหมือนกับโปรแกรมหลาย ๆ โปรแกรม, Roblox ใช้หลายเธรดในการทำงานชุดของงานพร้อมกัน ไมโครโปรไฟล์จะแสดงชื่อเธรดด้านซ้ายของไทม์ไลน์

มีเธรดประเภทสำคัญสามประเภท:
หลัก ("RBX Main"): จัดการงานการเรนเดอร์ที่ใช้ CPU รวมทั้งการประมวลผลข้อมูลการอินพุต, Humanoids, อนิเมชัน/การเปลี่ยนรูป, การเป็นเจ้าของฟิสิกส์, เสียง, และการรอให้สคริปต์กลับมา นอกจากนี้ยังอัปเดตอินเทอร์เฟซของสตูดิโอและประสานเธรดอื่น ๆ
คนงาน ("RBX Worker"): ช่วยเธรดหลักในด้านการเชื่อมต่อเครือข่าย ฟิสิกส์ และการหาทาง ด้วยจำนวนของแกนใน CPU สมัยใหม่ คุณมีเธรดของคนงานจำนวนมาก ซึ่งส่วนใหญ่จะอยู่ในสถานะนอนหลับในเวลาใดเวลาหนึ่ง
เรนเดอร์ ("GPU"): ปฏิบัติตามตรรกะ "เตรียม การแสดงผล นำเสนอ" สื่อสารกับหน่วยประมวลผลกราฟิก (GPU) ของอุปกรณ์
- เตรียม: ข้อมูลจากเธรดหลักถูกใช้เพื่ออัปเดตโมเดลการเรนเดอร์
- แสดงผล: ออกคำสั่งการเรนเดอร์รวมถึงอินเทอร์เฟซ 2D
- นำเสนอ: ซิงโครไนซ์กับ GPU
โปรไฟล์สคริปต์ที่กำหนดเอง
หากสคริปต์ของคุณกำลังทำงานที่ซับซ้อน คุณสามารถโปรไฟล์ส่วนสำคัญของโค้ดเพื่อตรวจสอบว่ามันใช้เวลามากเกินไปหรือไม่ ห่อโค้ดด้วย debug.profilebegin() และ debug.profileend() เพื่อทำการนับเวลาที่ใช้ระหว่างการเรียกฟังก์ชันเหล่านั้นและสร้างป้ายในไทม์ไลน์ของไมโครโปรไฟล์
local RunService = game:GetService("RunService")
local function onPreSimulation()
debug.profilebegin("Hard Work")
-- ตัวอย่างงานยาก: สลับตัวแปรสองตัว 200,000 ครั้ง
local a, b = 0, 1
for _ = 1, 200000 do
a, b = b, a
end
debug.profileend()
end
RunService.PreSimulation:Connect(onPreSimulation)
จากระยะเวลาที่ปรากฏบนไทม์ไลน์ คุณสามารถบอกได้ว่าฟังก์ชันนั้นใช้เวลาประมวลผลมากเมื่อเปรียบเทียบกับงานอื่น ๆ
วิเคราะห์การจับภาพด้วยผู้ช่วย
ในสตูดิโอ คุณสามารถขอให้ Assistant วิเคราะห์การจับภาพไมโครโปรไฟล์ที่หยุดนิ่งโดยอัตโนมัติ ระบุขวดเปล่าประสิทธิภาพ และเสนอวิธีแก้ไข
- ในสตูดิโอ เปิดไมโครโปรไฟล์ด้วย CtrlF6 (⌘F6)
- เมื่อคุณเห็นจุดสูงของเวลาเฟรม ให้หยุดการจับภาพโดยการกด หยุด ในเมนูด้านบนหรือใช้ CtrlP (⌘P)
- เปิด Assistant และขอให้มันวิเคราะห์การจับภาพ ตัวอย่างการสั่งงานได้แก่:
- "ฉันได้จับจุดสูงของเวลาเฟรมในไมโครโปรไฟล์—วิเคราะห์มัน"
- "อะไรทำให้เกิดจุดสูงนั้น?"
- "มันถูกตรึงด้วยฟิสิกส์หรือสคริปต์?"
- "หมวดหมู่ใดมีเวลาที่ไม่รวมมากที่สุด?"
- "เมื่อฉันอยู่ที่ในฮังเกอร์ FPS ลดลง ทำซ้ำปัญหา ใช้ไมโครโปรไฟล์เพื่อตรวจหาสาเหตุ แก้ไขปัญหา และทดสอบใหม่"
Assistant อ่านการจับภาพที่หยุดนิ่งผ่าน MicroProfiler API และคืนรายงานเกี่ยวกับขวดเปล่าที่น่าจะเป็นไปได้ พร้อมกับเสนอการเปลี่ยนแปลงสคริปต์หรือฉากที่คุณสามารถนำไปใช้ได้
ฟังก์ชันนี้ยังทำงานผ่าน Studio MCP เซิร์ฟเวอร์ ดังนั้นคุณสามารถรวมการวิเคราะห์ไมโครโปรไฟล์เข้ากับตัวแทน AI ของคุณเองหรือลูปตัวแทนเพื่อรับข้อมูลย้อนกลับอัตโนมัติเกี่ยวกับวิธีที่การเปลี่ยนแปลงใหม่มีผลต่อประสิทธิภาพเกมของคุณ
บันทึกข้อมูลเฟรม
หากคุณต้องการบันทึกชุดข้อมูลเฟรมเพื่อการตรวจสอบในอนาคต (หรือต้องการแชร์กับคนอื่น) ให้ใช้ปุ่ม บันทึกลงไฟล์ ไมโครโปรไฟล์จะบันทึกข้อมูลเฟรมไปยังไฟล์ HTML ที่แยกต่างหากชื่อ microprofile-<date>-<time>.html

ในไคลเอนต์เดสก์ท็อปหรือในสตูดิโอ ให้ใช้เมนู ดัมพ์ ในทั้งสองกรณี ไมโครโปรไฟล์จะบันทึกไฟล์โดยอัตโนมัติไปยังไดเรกทอรีบันทึกของ Roblox:
บน Windows, ตรวจสอบที่ %LOCALAPPDATA%\Roblox\logs
หากคุณใช้แอปพลิเคชัน Universal Windows Platform (UWP) ตรวจสอบที่ \Users\<username>\AppData\Local\Packages\ROBLOXCORPORATION.ROBLOX_<hash>\LocalState\logs\
บน macOS, ตรวจสอบที่ ~/Library/Logs/Roblox
โปรไฟล์เซิร์ฟเวอร์
นอกเหนือจากการโปรไฟล์ไคลเอนต์แล้ว คุณสามารถบันทึกดัมพ์สั้น ๆ ของกิจกรรมเซิร์ฟเวอร์:
บนไคลเอนต์เดสก์ท็อป เข้าร่วมเกมที่คุณมีสิทธิ์แก้ไข
เปิด Developer Console โดยกด CtrlF9 (⌘F9)
ในเมนูแบบเลื่อนลง เลือก ไมโครโปรไฟล์
ในแท็บ เซิร์ฟเวอร์ ระบุจำนวนเฟรมที่ต้องการบันทึก (สูงสุด 60) และจำนวนวินาทีก่อนที่จะเริ่มการจับภาพ (สูงสุด 4)
คลิก เริ่มการบันทึกเซิร์ฟเวอร์

หลังจากไม่กี่วินาที Developer Console จะให้เส้นทางไปยังไฟล์ ซึ่งเป็นเส้นทางเดียวกับการ ดัมพ์ปกติ
ฟีเจอร์เว็บเท่านั้น
ไมโครโปรไฟล์มีสองอินเทอร์เฟซ: UI เว็บ (มือถือและดัมพ์) และ UI เดสก์ท็อป (ไคลเอนต์และสตูดิโอ) เราขอแนะนำให้ใช้ UI เว็บเมื่อเป็นไปได้ โดยทั่วไป ทั้งสองมีการทำงานที่คล้ายคลึงกัน แต่ UI เว็บมีฟีเจอร์เพิ่มเติมบางอย่าง:
ใช้เมนู X-Ray เพื่อเปิดใช้งานหรือปิดใช้งานการใช้สีเพื่อความจำ

- เฟรมที่สว่างขึ้นภายในกราฟแทบหลักจะแสดงถึงการใช้หน่วยความจำที่สูงขึ้น
- ส่วนที่สว่างขึ้นของกราฟแสดงตัวอย่างและป้ายที่เบาพร้อมกันจะหมายถึงส่วนของเฟรมที่ใช้หน่วยความจำสูงขึ้น
- ในโหมด X-Ray กด C เพื่อแสดงขนาดทั้งหมดของการจัดสรรหน่วยความจำแทนจำนวนการจัดสรร
ใช้เมนู ส่งออก เพื่อส่งออกกราฟ CPU หรือหน่วยความจำ ซึ่งเป็นการแสดงผลเฉพาะทางที่รวมการเรียกทั้งหมดที่รวมอยู่ในดัมพ์ รักษาลำดับชั้นระหว่างผู้ปกครอง-ลูก และขนาดตามระยะเวลา กราฟเปลวไฟนั้นมีความสำคัญโดยเฉพาะในการระบุภารกิจที่ไม่ทำให้คุณพลาดเป้าหมายเวลาเฟรม (และดังนั้นจึงยากต่อการสังเกต) แต่ทำงานบ่อยจนเวลาประมวลผลของมันมีความสำคัญ

คุณสามารถสร้างกราฟเปลวไฟในสตูดิโอได้เช่นกัน แม้ว่าเฉพาะสำหรับสคริปต์ (เวลาในการดำเนินการและการจัดสรรหน่วยความจำ) เมื่อเปรียบเทียบกับกราฟเปลวไฟที่อิงจากเว็บ กราฟในสตูดิโอจะเป็นมุมมองด้านบนลงแทนที่จะเป็นมุมมองด้านล่างขึ้นและรองรับช่วงเวลาการจับภาพที่ยาวนานกว่ามาก

ลากและวางไฟล์ดัมพ์ที่สองลงใน UI เว็บเพื่อสร้างกราฟเปลวไฟต่างกัน ซึ่งจะช่วยให้คุณระบุการปรับปรุงหรือการถดถอยในการดำเนินงานของเกมคุณในระยะยาว คลิก รวม & เปรียบเทียบ เพื่อส่งออกไฟล์ HTML ใหม่

กราฟเปลวไฟที่ต่างกันจะเน้นดัมพ์ (ซ้ายหรือขวา) ที่ใช้ CPU หรือหน่วยความจำมากกว่า โดยสีที่สว่างขึ้นจะบ่งบอกถึงความแตกต่างที่มากขึ้น

ฟีเจอร์เฉพาะเดสก์ท็อป
ในไทม์ไลน์เดสก์ท็อป คลิกซ้ายที่ป้ายเพื่อเพิ่มลงในกราฟในมุมขวาล่าง กราฟจะแสดงเวลาที่งานใช้แต่ละเฟรม โดยใช้กราฟนี้ คุณสามารถทดสอบประสิทธิภาพของเพียงบางงานในเกมของคุณ เมื่อต้องการเสร็จสิ้น ให้คลิกขวาที่กราฟเพื่อซ่อนมัน

กราฟนี้จะซิงโครไนซ์กับแทบโปรไฟล์หลัก ระยะเวลาที่เฟรมที่เลือกในปัจจุบันจะแสดงโดยโทนสีเขียวบนกราฟ คุณสามารถคลิกที่ใดก็ได้บนกราฟนี้เพื่อจัดให้มุมมองโปรไฟล์หลักเป็นเฟรมเฉพาะซึ่งเป็นประโยชน์ในการหาจุดสูงในมุมมองรายละเอียด