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


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


ข้อกำหนดเบื้องต้น
SLIM ต้องการสิ่งต่อไปนี้:
- StreamingEnabled ต้องเปิดใช้งานในวัตถุ Workspace ดูเพิ่มเติมที่ คุณสมบัติการสตรีม สำหรับการตั้งค่าที่แนะนำที่เกี่ยวข้อง
- สถานที่ต้อง บันทึกไปยัง Roblox (ไม่ใช่ไฟล์ .rbxl ท้องถิ่น) เนื่องจาก SLIM ใช้การแปลงสัญญาณในคลาวด์เพื่อสร้างสินทรัพย์ที่ถูกปรับให้เหมาะสม หากคุณกำลังทดสอบในท้องถิ่น ให้เผยแพร่สถานที่และจากนั้นเปิดใช้งาน SLIM
- Team Create ต้องเปิดใช้งานสำหรับเกม เนื่องจาก SLIM ขึ้นอยู่กับคุณสมบัติที่เกี่ยวข้องสำหรับการสร้างสินทรัพย์ในคลาวด์
พฤติกรรมทางเทคนิค
เมื่อคุณเผยแพร่หรือทดสอบเกมที่มีโมเดลที่เปิดใช้งาน SLIM เอนจินจะอัปโหลดข้อมูลโมเดลไปยังบริการคลาวด์ที่สร้างเมชรวมที่ถูกปรับให้เหมาะสมพร้อมระดับรายละเอียดหลายระดับ ในระหว่างการทำงาน ลูกค้าจะดึงสินทรัพย์เหล่านี้จาก CDN และเอนจินจะเลือกระดับรายละเอียดที่เหมาะสมตามระยะทางและความสามารถของอุปกรณ์ โดยจัดประเภทแต่ละโมเดล SLIM ลงในโซนการเรนเดอร์ตามระยะห่างจากกล้อง:

| ระยะ | พฤติกรรม |
|---|---|
| สตรีมอินสแตนซ์ทั้งหมด; การเรนเดอร์แบบส่วนต่อส่วนแบบดั้งเดิม | |
| สตรีมอินสแตนซ์ทั้งหมด แต่เอนจินจะเรนเดอร์ SLIM composite เมื่อมีประสิทธิภาพมากขึ้น | |
| สตรีมอินสแตนซ์ออก (มีเพียงเพลตโฮลเดอร์ขั้นต่ำใน DataModel เท่านั้น ไม่ใช่โครงสร้างโมเดลทั้งหมด) การเรนเดอร์ SLIM composite | |
| เพลตโฮลเดอร์ขั้นต่ำใน DataModel ไม่ได้เรนเดอร์ |
SLIM สำหรับโมเดล
SLIM ทำงานได้ดีที่สุดกับโมเดลที่แสดงถึง เรขาคณิตของโลกที่ไม่เปลี่ยนแปลง — อาคาร, อุปกรณ์, ยานพาหนะ, ลักษณะภูมิประเทศ และวัตถุในสภาพแวดล้อมอื่น ๆ ที่ไม่เปลี่ยนแปลงในระหว่างการทำงาน การเพิ่มหรือลบส่วน การเปลี่ยนวัสดุ หรือการปรับเปลี่ยนเรขาคณิตในระหว่างการทำงานจะทำให้ SLIM ไม่สามารถเรนเดอร์โมเดลได้อย่างถูกต้อง ดูที่ โครงสร้างโมเดล สำหรับแนวทางทั่วไปเกี่ยวกับโครงสร้างโมเดลและ ข้อจำกัด สำหรับรายการข้อยกเว้นทั้งหมด
ในการเปิดใช้งาน SLIM บนโมเดล ให้ตั้งค่า LevelOfDetail เป็น SLIM ในหน้าต่าง Properties

เมื่อ SLIM ถูกตั้งค่าในโมเดล เอนจินจะ:
- ทำการจัดเรียงคุณสมบัติที่เกี่ยวข้องกับการเรนเดอร์ของโมเดล (เรขาคณิต, วัสดุ, พื้นผิว, การเปลี่ยนแปลง) เป็นตัวแทนที่กระชับ ประเภทอินสแตนซ์ที่รองรับภายในโมเดลรวมถึง Part, MeshPart, Decal, Texture, SurfaceAppearance, PartOperation, NegateOperation, และ SpecialMesh
- อัปโหลดข้อมูลนี้ไปยังบริการการแปลงสัญญาณในคลาวด์เมื่อเผยแพร่หรือเล่นครั้งแรก
- บริการคลาวด์จะสร้างเมชที่รวมกันพร้อมระดับรายละเอียดหลายระดับ โดยลบเรขาคณิตภายในที่ซ่อนอยู่และปรับแต่งพื้นผิว
- ในระหว่างการทำงาน ลูกค้าจะดึงสินทรัพย์ SLIM ที่ถูกปรับให้เหมาะสมและเรนเดอร์เมื่อเอนจินสตรีมโมเดลต้นฉบับออกหรือเมื่อ SLIM มีประสิทธิภาพมากกว่าตัวโมเดลทั้งหมด
หากเกมของคุณใช้การตั้งค่า StreamingMesh แบบเก่าสำหรับ Model.LevelOfDetail คุณสามารถแปลงโมเดลแต่ละตัวได้โดยการเลือกและเปลี่ยนคุณสมบัติในหน้าต่าง Properties หรือคุณสามารถแปลงโมเดลหลายตัวพร้อมกันโดยใช้สคริปต์เช่นต่อไปนี้ใน Command Bar โปรดทราบว่าโมเดลบางตัวที่ทำงานกับ StreamingMesh อาจต้องมีการปรับเปลี่ยนสำหรับ SLIM โดยเฉพาะโมเดลที่มีส่วนที่ทับซ้อนกันหรือโครงสร้าง PartOperation ที่ซับซ้อน
for _, descendant in workspace:GetDescendants() do
if descendant:IsA("Model") and descendant.LevelOfDetail ==
Enum.ModelLevelOfDetail.StreamingMesh then
descendant.LevelOfDetail = Enum.ModelLevelOfDetail.SLIM
end
endSLIM สำหรับอวตาร
อวตารของแพลตฟอร์มนอกพื้นที่ที่กำลังสตรีมจะไม่มองเห็นโดยค่าเริ่มต้น การเปิดใช้งานอวตาร SLIM จะเรนเดอร์ ตัวละคร ผู้เล่นแบบมาตรฐาน — ไม่ว่าจะมีอุปกรณ์เสริมหรือชั้นเสื้อผ้ากี่ชั้น — เป็นตัวแทนที่เบาและเคลื่อนไหวที่รักษาความถูกต้องของภาพในราคาการเรนเดอร์ที่ต่ำกว่า


คุณสมบัติที่สำคัญเฉพาะสำหรับ SLIM สำหรับอวตารคือ Workspace.EnableSLIMAvatars ซึ่งควรตั้งค่าเป็น Enabled ในหน้าต่าง Properties พร้อมกับ LevelOfDetail ที่ตั้งค่าเป็น SLIM บนโมเดลโลกที่ไม่ใช่อวตารของคุณ

เมื่อเปิดใช้งาน EnableSLIMAvatars เอนจินจะ:
- เรนเดอร์เวอร์ชัน SLIM เมื่อโมเดลอวตารจริงสตรีมออก
- สลับระหว่าง SLIM และการแสดงผลความละเอียดเต็มตามทรัพยากรที่มีอยู่ แม้ในรัศมีการสตรีม
- จำกัดการเคลื่อนไหวของ SLIM ตามความสำคัญของฉากและแบนด์วิธที่มีอยู่
แตกต่างจาก SLIM โมเดล ที่คุณสามารถทดสอบได้เพียงแค่เคลื่อนที่ออกจากโมเดลจนกว่าจะสตรีมออก อวตาร SLIM ต้องการผู้เล่นหลายคนในเกมเพื่อสังเกต ใช้หนึ่งใน โหมดการทดสอบ เหล่านี้เพื่อลองอวตาร SLIM:
- Team Test — เข้าร่วมกับเพื่อนหรือบัญชีสำรองเพื่อดูอวตาร SLIM ที่ระยะไกล
- Server and Clients — เปิดหน้าต่างลูกค้าสองหน้าต่างขึ้นไป ซึ่งแต่ละลูกค้าจะแสดงสำเนาอวตารที่ลูกค้าอื่นเรนเดอร์เป็น SLIM เมื่ออยู่ห่างไกล
โปรดทราบว่าอวตารต้องได้รับการแปลงสัญญาณในเกมที่เปิดใช้งาน SLIM ก่อนที่จะปรากฏเป็น SLIM หากอวตารไม่เรนเดอร์เป็น SLIM ในการทดสอบครั้งแรกของคุณ ให้เข้าร่วมเกมอีกครั้งหลังจากสักครู่เพื่อให้การแปลงสัญญาณเสร็จสิ้น
ข้อจำกัด
| ข้อจำกัด | รายละเอียด |
|---|---|
| ต้องการการสตรีม | SLIM ทำงานได้เฉพาะเมื่อ StreamingEnabled ตั้งค่าเป็น true หากไม่มีการสตรีม โมเดลที่มีสิทธิ์ SLIM จะกลับไปใช้การเรนเดอร์ระดับรายละเอียดแบบดั้งเดิม |
| โมเดลที่ไม่เปลี่ยนแปลงเท่านั้น | SLIM โมเดล ไม่รองรับโมเดลที่ถูกปรับเปลี่ยนในระหว่างการทำงาน (ส่วนที่เพิ่ม/ลบ เปลี่ยนคุณสมบัติ) หรือโมเดลที่เล่นอนิเมชัน |
| อินสแตนซ์ Humanoid | เอนจินจะไม่รวมโมเดลที่มี Humanoid ในการประมวลผล SLIM โมเดล แบบคงที่ ใช้ อวตาร SLIM สำหรับตัวละครผู้เล่นที่เคลื่อนไหว |
| ข้อจำกัดของอวตาร | อวตาร SLIM รองรับเฉพาะตัวละครผู้เล่น R15 อุปกรณ์ R6 ตัวละคร NPC และอวตารที่มีสัดส่วนที่กำหนดเองจะกลับไปใช้การเรนเดอร์เริ่มต้น |
| การพึ่งพาคลาวด์ | บริการคลาวด์จะสร้างและจัดเก็บสินทรัพย์ SLIM บน CDN การทดสอบแบบออฟไลน์หรือในท้องถิ่นโดยไม่มีสถานที่ที่เผยแพร่จะไม่ผลิตผลลัพธ์ SLIM |
| โมเดลที่มีขนาดเป็นศูนย์ | เอนจินจะไม่รวมโมเดลที่มี Scale เป็น 0 ในการประมวลผล SLIM |
| ความพร้อมใช้งานของแพลตฟอร์ม | ในแพลตฟอร์มที่ SLIM ยังไม่รองรับ โมเดลที่ตั้งค่าเป็น SLIM จะกลับไปใช้ Disabled |
การแก้ไขปัญหา
- ตรวจสอบว่า StreamingEnabled ตั้งค่าเป็น true
- ยืนยันว่าสถานที่ถูกเผยแพร่ไปยัง Roblox และ Team Create เปิดใช้งาน
- ตรวจสอบว่า LevelOfDetail ตั้งค่าเป็น SLIM สำหรับโมเดล
- รอ 1–2 นาทีหลังจากเผยแพร่ครั้งแรกเพื่อให้การแปลงสัญญาณในคลาวด์เสร็จสิ้น จากนั้นเข้าร่วมใหม่
- ตรวจสอบว่าโมเดลไม่มีอินสแตนซ์ Humanoid
อินสแตนซ์ PartOperation สำหรับ การสร้างโมเดลที่เป็นของแข็ง (การรวมกัน การตัดกัน การปฏิเสธ) อาจไม่เรนเดอร์อย่างถูกต้องในบางโมเดล SLIM หากการรวมกันดูเหมือนจะหายไปหรือบิดเบี้ยวในตัวแทน SLIM ให้ลองแยก PartOperation ที่ได้รับผลกระทบออกเป็นโมเดลของตัวเองหรือทำให้การดำเนินการ CSG ง่ายขึ้น
การต่อสู้ Z อาจเกิดขึ้นเมื่อส่วนในโมเดลต้นฉบับมีใบหน้าที่ทับซ้อนกันหรืออยู่ในระนาบเดียวกัน เพื่อแก้ไข:
- เคลื่อนย้ายส่วนที่ทับซ้อนกันออกไปเล็กน้อย (แม้แต่ 0.01 สตั๊ดก็เพียงพอ)
- หลีกเลี่ยงพื้นผิวที่เรียบสนิทระหว่างส่วนที่อยู่ติดกันในโมเดลเดียวกัน
SLIM จะสร้าง UV mapping ใหม่ (วิธีการที่พื้นผิวถูกฉายไปยังพื้นผิว 3D) ในระหว่างการแปลงสัญญาณ วัสดุ Roblox เริ่มต้นอาจแสดงรูปแบบการปูพื้นที่แตกต่างกันเล็กน้อยเมื่อเปรียบเทียบกับต้นฉบับ เพื่อบรรเทา:
- ใช้พื้นผิวที่กำหนดเองผ่าน SurfaceAppearance สำหรับพื้นผิวที่สำคัญ
- จัดกลุ่มส่วนที่เกี่ยวข้องทางสายตาเข้าด้วยกันในโมเดลเดียวกันเพื่อให้แน่ใจว่ามีการใช้พื้นผิวที่สอดคล้องกัน
- ตรวจสอบว่า Workspace.EnableSLIMAvatars ตั้งค่าเป็น Enabled
- ทดสอบด้วยลูกค้าหลายรายโดยใช้โหมดทดสอบ Server and Clients (ต้องมีลูกค้าอย่างน้อย 2 ราย)
- ยืนยันว่าเกมไม่เปลี่ยนแปลงอวตารหลังจากเหตุการณ์ Player.CharacterAppearanceLoaded
การเคลื่อนไหวของร่างกายทั้งหมดหรือการเคลื่อนไหวของนิ้วอาจแสดงข้อบกพร่องทางภาพเนื่องจากการจำลองกระดูกที่มีการซิงค์เวลา นี่เป็นปัญหาที่ทราบและกำลังได้รับการปรับปรุงอย่างต่อเนื่อง หากปัญหานี้รุนแรง ให้ตรวจสอบว่าสคริปต์การเคลื่อนไหวไม่ได้ปรับเปลี่ยนการเปลี่ยนแปลงกระดูกนอกเหนือจากกระบวนการเคลื่อนไหวมาตรฐาน
แผงสถิติการเรนเดอร์อาจรายงานจำนวนสามเหลี่ยมที่ไม่ถูกต้องเมื่อเปิดใช้งานอวตาร SLIM นี่เป็นข้อบกพร่องในการรายงานที่ทราบและไม่ส่งผลกระทบต่อประสิทธิภาพการเรนเดอร์จริง