ออกแบบเพื่อประสิทธิภาพ

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

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

อุปกรณ์ระดับต่ำ

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

  • หากคุณต้องการสนับสนุนอุปกรณ์ระดับล่าง ให้เลือกชุดเริ่มต้นของอุปกรณ์ที่มีลักษณะประสิทธิภาพบางอย่าง ทดสอบประสิทธิภาพของประสบการณ์ของคุณบนพวกเขาในระหว่างกระบวนการพัฒนา แล

    ตัวอย่างเช่นคุณอาจทด

  • เครื่องมือจำลองอุปกรณ์ใน Roblox Studio มีประโยชน์สำหรับการตรวจสอบอัตราส่วนระหว่างอุปกรณ์ แต่ไม่สามารถใช้งานได้สำหรับการใช้หน่วยความจำ เมื่อคุณทดสอบประสบการณ์ใน Roblox จะทำงานเซิร์ฟเวอร์และคลายเคล

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

Header image for Real World Building and Scripting Optimization.

การสตรีมและการเทเลพอร์ต

  • การสตรีมเครื่องกลาง ช่วยให้ Roblox โหลดและปลดโหลดเนื้อหา 3D ได้อย่างไร้ความล่าช้าและเป็นตัวเลือกที่ดีสำหรับส่วนใหญ่ของประสบการณ์โดยเฉพาะอย่างยิ่ง สตรีมมิ่งปรับ

  • แบ่งสถานที่ขนาดใหญ่เป็นสถานที่ที่จัดการได้มากขึ้นและใช้ การเคลื่อนย้ายผู้เล่น เพื่อเคลื่อนย้ายผู้เล่นระหว่างพวกเขา

วัสดุและการเลียนแบบ

  • วัสดุที่อยู่ในตัวใช้หน่วยความจำน้อยลงมากเมื่อเปรียบเทียบกับวัสดุที่กำหนดเอง อย่างไรก็ตาม พยายามใช้วัสดุให้น้อยที่สุดเท่าที่จะเป็นไปได้เพื่อประหยัดความจำสำหรับวัสดุที่เป็นศูนย์กลางของประส

  • เมื่อคุณสร้างสินทรัพย์ แปลงพวกเขาเป็น แพ็กเกจ ให้พวกเขาเป็นส่วนหนึ่งของกระบวนการทำงานของคุณ การดำเนินการ

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

ความโปร่งใส

สคริปต์

  • เมื่อเป็นไปได้ให้เขียนโค้ดขับเหตุการณ์แทนการคำนวณ per-frame อย่างเคย ที่ 60 ยิงมุมมองบุคคลที่หนึ่งการคำนวณงบประมาณรวมสำหรับแต่ละเฟรมคือ 16.67 มิลลิวินาที (ms) แม้ว่าจะเป็นเรื่องเล็กน้อยก็ตาม

  • หาวิธีการแบ่งโค้ดที่วิ่งนานเป็นชุดขนาดเล็ก หากชิ้นโค้ดหนึ่งใช้เวลา 100 ยิงมุมมองบุคคลที่หนึ่งประสบการณ์

    แทนที่, สำรวจวิธีที่คุณสามารถแบ่งรหัสออกได้ บางทีคุณอาจสามารถดำเนินการ 5 มลิวินาตุต่อแถ่นหนึ่ง, ใช้ task.wait() และมีการคำนวณที่เสร็จสิ้นทุก 20 ยิงมุมมองบุคคลที่หนึ่ง

  • ใช้วิธีการ RBXScriptConnection:Disconnect() เพื่อหยุดการเรียกฟังก์ชันที่ไม่จำเป็นในครั้งต่อไปที่เหตุการณ์เกิดขึ้น

  • อย่าเรียกวิธีเดียวกันทุกครั้งที่คุณต้องการค่า โทรวิธีหนึ่งครั้ง เก็บค่าไว้ แล้วเขียนเขียวค่าด้านล่างเมื่อเป็นไปตามความจำเป็น

  • อย่าเก็บทุกอย่างใน ReplicatedStorage ตราบเท่าที่คลายแล้วจะโหลดทุกอย่างที่อยู่ในคอนเทนเนอร์นี้ แทนที่จะใช้ ServerStorage สำหรับสิ่งที่ลูกค้าไม่ต้องการเข้าถึง