FiveM LOD คืออะไร และมีผลต่อ Map อย่างไร แก้ Object หาย Pop-in และ FPS ตก
ถ้า FiveM Custom Map มีอาการ อาคารโผล่เมื่อเข้าใกล้ หายเมื่ออยู่ไกล เปลี่ยน Model แบบกระตุก หรือ Map ใช้ Model รายละเอียดสูงเกินความจำเป็น สิ่งสำคัญที่ควรตรวจคือระบบ LOD — Level of Detail
Cfx.re มี Workflow สำหรับ LOD โดยตรง โดยแนะนำให้สร้าง Asset สองระดับ ได้แก่ HD Model ซึ่งเป็น Full-detail Version และ LOD Model ซึ่งลดทั้ง Geometry และ Materials จากนั้น Convert ทั้งสองเป็น Drawables สร้าง YTYP Archetypes และเชื่อม HD/LOD ผ่าน YMAP Hierarchy ใน CodeWalker.
บทความนี้จาก comsiam จะอธิบายตั้งแต่ FiveM LOD คืออะไร, LodDist, ChildLodDist, HD/LOD YMAP, Parent/Child Hierarchy ไปจนถึงวิธีแก้ Object Pop-in และ Map หายเมื่อมองจากระยะไกล
FiveM LOD คืออะไร
LOD ย่อมาจาก Level of Detail เป็นแนวคิดที่ใช้ Model หลายระดับรายละเอียดตามระยะของผู้เล่น
ตัวอย่างง่าย ๆ
อยู่ใกล้อาคาร
→ ใช้ HD Model
อยู่ไกลออกไป
→ ใช้ LOD Model
ใน Workflow อย่างเป็นทางการของ Cfx.re จะเตรียม Model สองแบบ คือ HD ที่มีรายละเอียดเต็ม และ LOD ที่ลด Geometry/Materials ลง ก่อนเชื่อมกันใน Map Setup.
① ทำไม FiveM Map ต้องมี LOD
จุดประสงค์คือไม่จำเป็นต้องใช้ Model รายละเอียดสูงสุดกับ Object ที่อยู่ไกลจากผู้เล่นตลอดเวลา
แทนที่จะใช้
HD
HD
HD
HD
ทุกระยะ สามารถออกแบบเป็น
ใกล้
→ HD
ไกล
→ LOD
Cfx.re ระบุชัดว่า LOD Model ควรเป็น Version ที่ลด Geometry และ Materials เมื่อเทียบกับ HD Model.
② HD Model คืออะไร
HD คือ Model รายละเอียดสูงที่ใช้เมื่อผู้เล่นอยู่ในระยะที่ควรเห็นรายละเอียดชัด
ตัวอย่าง
building_hd
อาจมี
ขอบหน้าต่าง
กรอบประตู
Details ของผนัง
Geometry ที่เห็นใกล้
ใน Official Workflow Cfx.re เรียก HD Model ว่า full-detail version.
③ LOD Model คืออะไร
LOD Model คือ Version ที่ลดรายละเอียดลง
ตัวอย่าง
building_lod
อาจตัด
Decoration เล็ก
Geometry ภายใน
Details ที่มองไม่เห็นจากไกล
Materials ที่ไม่จำเป็น
Cfx.re แนะนำให้ LOD เป็น Model ที่มี simplified geometry and materials.
④ HD กับ LOD ต่างกันอย่างไร
จำแบบนี้
HD
= ใกล้ + รายละเอียดสูง
LOD
= ไกล + รายละเอียดลดลง
ทั้งสองไม่ได้เป็น Model คนละอาคาร แต่เป็น Representation คนละระดับของ Asset เดียวกันใน LOD Workflow.
⑤ LOD ช่วยเรื่อง FPS ได้ไหม
LOD ถูกออกแบบมาเพื่อลดรายละเอียดของ Asset ที่อยู่ไกล จึงสามารถลดงานที่ไม่จำเป็นเมื่อ Scene มี Objects จำนวนมาก โดยเฉพาะอาคารหรือ Map Assets ขนาดใหญ่ นี่เป็นเหตุผลเชิงการออกแบบที่สอดคล้องกับการที่ Cfx.re กำหนดให้ LOD ใช้ Geometry และ Materials ที่เรียบง่ายกว่า HD.
แต่ FPS ยังขึ้นกับ Texture, จำนวน Objects, Materials, Scripts และ Hardware ด้วย ไม่ควรโทษ LOD อย่างเดียว
⑥ Map ไม่มี LOD จะเกิดอะไร
ไม่จำเป็นว่า Map จะเสียทันที แต่ Asset ใหญ่ที่ไม่มี LOD อาจมีพฤติกรรมระยะมองไม่เหมาะสม หรือใช้ Model รายละเอียดสูงกว่าที่จำเป็น
โดยเฉพาะ
อาคารใหญ่
Airport
Island
City Expansion
Racetrack
Landmark
ควรตรวจ LOD อย่างจริงจัง เพราะเป็น Assets ที่ผู้เล่นสามารถมองเห็นจากระยะไกล
⑦ Object โผล่เมื่อเข้าใกล้คืออะไร
อาการนี้มักเรียกว่า Pop-in
ตัวอย่าง
ขับรถมา
↓
พื้นที่ว่าง
↓
เข้าใกล้
↓
อาคารโผล่ทันที
จุดที่ควรตรวจคือ
LOD มีหรือไม่
LodDistHD/LOD Hierarchy
Streaming
Model/Texture Complexity
Cfx.re ใช้ LodDist, ChildLodDist และ LOD Levels ใน YMAP Setup เพื่อกำหนดความสัมพันธ์ของ HD และ LOD Entities.
⑧ Object หายเมื่ออยู่ไกลเกี่ยวกับ LOD ไหม
เกี่ยวข้องได้โดยตรง
ถ้า
ใกล้ → ขึ้น
ไกล → หายเร็วผิดปกติ
ควรตรวจ
LodDist
LOD Level
Parent/Child YMAP
LOD Model
ก่อนเพิ่ม Streaming Distance แบบสุ่ม เพราะ Official Workflow ใช้ค่าเหล่านี้ในการสร้าง HD/LOD Setup.
⑨ LodDist คืออะไร
LodDist เป็นค่าระยะที่เกี่ยวข้องกับการใช้งาน Entity ในระบบ LOD
ใน Cfx.re Tutorial ฝั่ง LOD Entity จะตั้ง
LodDist
เป็นค่าที่เพิ่มขึ้นตามระยะ Streaming ที่ต้องการ.
ดังนั้นค่าไม่ได้ควรถูกตั้งให้สูงที่สุดทุก Object โดยไม่มีเหตุผล
⑩ ChildLodDist คืออะไร
ใน Official HD/LOD Workflow ค่า
ChildLodDist
ของ LOD Entity จะถูกตั้งให้เท่ากับ LodDist ของ HD Entity.
แนวคิดคือใช้ค่าเหล่านี้ประสาน Transition ระหว่าง Entity ระดับ HD และ Parent LOD
⑪ LodLevel คืออะไร
ในตัวอย่าง Cfx.re จะตั้ง HD Entity เป็น
LODTYPES_DEPTH_HD
ส่วน LOD Entity ตั้งเป็น
LODTYPES_DEPTH_LOD
เพื่อบอกระดับของ Entity ใน LOD Hierarchy.
นี่เป็นเหตุผลว่าทำไมการมี Model สองตัวอย่างเดียวไม่พอ ต้องกำหนด Hierarchy ถูกด้วย
⑫ LOD in Parent Map คืออะไร
สำหรับ HD Entity Official Workflow กำหนด Flag
LOD in Parent Map
ก่อนนำ HD YMAP ไปเชื่อมกับ Parent LOD YMAP.
ถ้ากำลังสร้าง LOD ด้วย CodeWalker ควรทำตาม Hierarchy Workflow ให้ครบ ไม่ใช่เพียงเพิ่ม Model LOD เข้า Resource
⑬ ทำไมต้องมี HD YMAP และ LOD YMAP
Cfx.re Tutorial สร้าง YMAP แยกสองตัว
HD YMAP
LOD YMAP
HD YMAP เก็บ HD Entity ส่วน LOD YMAP เก็บ LOD Entity และทั้งสองถูกเชื่อม Parent/Child กันภายหลัง.
ดังนั้น LOD System ไม่ได้เป็นเพียงการตั้งชื่อไฟล์ *_lod.ydr
⑭ HD กับ LOD ต้องอยู่พิกัดเดียวกันไหม
ใน Official Workflow LOD Entity จะถูกวางที่ ตำแหน่งเดียวกับ HD Entity ก่อนตั้งค่าระยะและ Hierarchy.
หากตำแหน่งไม่ตรง อาจเห็น Model กระโดดหรือเปลี่ยนตำแหน่งเมื่อ Transition ระหว่างระดับ
⑮ LOD Model อยู่ผิดตำแหน่งมีอาการอย่างไร
ตัวอย่าง
เข้าใกล้ → อาคารอยู่จุด A
ถอยไกล → อาคารกระโดดไปจุด B
นี่ควรตรวจ Transform ของ HD/LOD Entities ก่อน
เพราะ Official Setup กำหนดให้ทั้งสองอยู่ Coordinates เดียวกัน.
⑯ LOD Model Scale ไม่ตรง HD จะเกิดอะไร
อาจเกิด
ใกล้ → อาคารขนาดปกติ
ไกล → อาคารใหญ่/เล็กผิด
หรือ Transition เห็นชัดผิดธรรมชาติ
จึงควรทำ LOD จาก Asset เดียวกันและรักษา Scale/Shape หลักให้สัมพันธ์กับ HD Model
⑰ LOD Model ควรหน้าตาเหมือน HD แค่ไหน
ควรรักษา Silhouette และรูปทรงหลัก ให้ใกล้เคียงพอที่เมื่อเปลี่ยนระดับแล้วผู้เล่นไม่เห็นการกระโดดของรูปทรงชัดเกินไป
สิ่งที่ควรลดคือรายละเอียดที่มองไม่เห็นจากระยะไกล เช่น
ร่องเล็ก
Decoration
Interior Geometry
ขอบย่อย
Materials ที่ไม่จำเป็น
Cfx.re ระบุหลักสำคัญว่า LOD Model ต้องลด Geometry และ Materials จาก HD.
⑱ LOD ควรลด Polygon แค่ไหน
ไม่มีตัวเลขเดียวที่เหมาะกับทุก Asset
อาคารหนึ่งหลังกับป้ายหนึ่งป้ายมีรูปทรงและระยะมองต่างกัน
หลักที่ถูกกว่าคือ
ลดให้มากพอ
แต่ยังรักษารูปร่างที่เห็นจากระยะนั้น
โดย Official Guide ระบุหลักเชิงคุณภาพว่า LOD ควรเป็น Simplified Version ไม่ได้กำหนด Polygon Target เดียวสำหรับทุก Model.
⑲ Material ของ LOD ต้องลดด้วยไหม
ควรพิจารณา
Cfx.re ระบุโดยตรงว่า LOD Model ต้องลดทั้ง geometry and materials.
ดังนั้นการ Decimate Polygon แต่ยังคง Material Complexity เท่า HD อาจยังไม่ใช่ LOD ที่ดีเท่าที่ควร
⑳ Texture ของ LOD ต้องเป็น 4K ไหม
ไม่จำเป็นต้องใช้ Texture ความละเอียดสูงสุดกับ Model ที่แสดงในระยะไกล
แม้ Official LOD Tutorial เน้น Geometry และ Materials เป็นหลัก แต่หลักการสร้าง LOD คือไม่ใช้รายละเอียดที่ผู้เล่นมองไม่เห็นจากระยะนั้น.
จึงควรประเมิน Texture Budget ร่วมกับ Asset จริงด้วย
㉑ YTYP เกี่ยวข้องกับ LOD อย่างไร
ก่อนสร้าง HD/LOD YMAP Cfx.re ให้
Convert HD และ LOD เป็น Drawables
Export Assets
สร้าง YTYP
เพิ่ม Drawables ทั้งสองเป็น Archetypes
จากนั้นจึงไปสร้าง YMAP.
ดังนั้นถ้า LOD Model ไม่ขึ้น ต้องตรวจ YTYP ด้วย ไม่ใช่ YMAP อย่างเดียว
㉒ YDR เกี่ยวข้องกับ LOD อย่างไร
ทั้ง HD และ LOD Models ถูก Convert เป็น Drawable Assets ใน Workflow
แนวคิดเช่น
building_hd.ydr
building_lod.ydr
จากนั้นทั้งคู่ถูกเพิ่มเป็น Archetypes ใน YTYP.
ดังนั้น LOD Level หนึ่งต้องมี Model Asset ที่ใช้งานได้จริง
㉓ YMAP เกี่ยวกับ LOD มากแค่ไหน
มาก
Official Cfx.re Workflow ใช้ YMAP ในการ
วาง HD Entity
วาง LOD Entity
กำหนด
LodLevelกำหนด
LodDistกำหนด
ChildLodDistเชื่อม Parent/Child
ทั้งหมดนี้เกิดใน HD/LOD YMAP Setup.
㉔ Parent YMAP คืออะไร
ใน Workflow ของ Cfx.re จะนำชื่อไฟล์ LOD YMAP ไปตั้งเป็น Parent ของ HD YMAP.
จึงได้โครงสร้างแนวคิด
LOD YMAP
└── HD YMAP
ไม่ใช่แค่สอง Map Files ที่อยู่ใน Folder เดียวกัน
㉕ ParentIndex คืออะไร
หลังเชื่อม YMAP Cfx.re ให้เลือก HD Entity แล้วเปลี่ยน
ParentIndex
-1 → 0
ใน LOD Hierarchy.
ถ้าค่า Hierarchy ไม่ถูก HD Entity อาจไม่ถูกเชื่อมกับ LOD Parent ตามที่ตั้งใจ
㉖ NumChildren คืออะไร
สำหรับ LOD Entity ในตัวอย่าง Official Workflow จะตั้ง
NumChildren = 1
เพื่อระบุว่ามี HD Child หนึ่งตัวภายใต้ LOD Entity นั้น.
หาก Project มีโครงสร้างซับซ้อนกว่าตัวอย่าง ต้องออกแบบ Hierarchy ตามจำนวน Children จริง
㉗ _manifest.ymf สำคัญกับ LOD ไหม
สำคัญใน Workflow ที่ Cfx.re แสดง
หลังตั้ง HD/LOD Hierarchy แล้วจะใช้
Tools
→ Manifest Generator
→ Generate
และบันทึก
_manifest.ymf
เพื่อให้ Setup โหลดในเกมอย่างถูกต้อง.
ดังนั้นอย่าลบทิ้งเพียงเพราะไฟล์มีขนาดเล็ก
㉘ Calculate Extents สำคัญไหม
ในการสร้าง YMAP ทั่วไป Cfx.re ให้ใช้
Calculate Extents
Calculate All Flags
ก่อน Save YMAP.
หลังเพิ่มหรือแก้ Entities จึงควรทำตาม Workflow นี้ แทนการ Save Map ทันทีโดยไม่คำนวณข้อมูล YMAP ใหม่
㉙ Object หายเพราะ Extents ผิดได้ไหม
ถ้ากำลังสร้างหรือแก้ YMAP เอง Extents/Flags เป็นข้อมูลที่ควรตรวจ เพราะ Official Map Workflow กำหนดให้ Calculate ก่อนบันทึก.
ดังนั้นอาการ Object แสดงผิดระยะไม่ควรถูกโยนให้ LodDist เพียงค่าเดียว
㉚ เพิ่ม LodDist สูงสุดแก้ Pop-in ได้ไหม
ไม่ใช่วิธีที่ดีเสมอไป
การเพิ่มระยะอย่างเดียวโดยไม่มี LOD Model ที่เหมาะสมอาจทำให้ HD Asset ถูกใช้ในระยะไกลเกินความจำเป็น
แนวทางของ Cfx.re คือสร้าง LOD Model ที่เบากว่า แล้วใช้ LodDist ร่วมกับ HD/LOD Hierarchy แทนการพึ่งระยะสูงอย่างเดียว.
㉛ LodDist ต่ำเกินไปมีอาการอย่างไร
อาจพบ
อาคารหายเร็ว
Object Pop-in
Transition ใกล้ผู้เล่นเกินไป
โดยเฉพาะ Object ใหญ่ที่ควรมองเห็นจากไกล
ให้ปรับโดยดูขนาด Asset และระยะการใช้งานจริง ไม่ใช่ Copy ค่าเดียวจากทุก Object
㉜ LodDist สูงเกินไปมีอาการอย่างไร
อาจทำให้ Asset รายละเอียดสูงถูกเก็บไว้ในระยะที่ไม่จำเป็น หาก Hierarchy/LOD Design ไม่เหมาะสม
จุดประสงค์ของ LOD คือใช้ Detail ให้เหมาะกับระยะ ไม่ใช่บังคับให้ทุก Object อยู่ไกลที่สุดเท่าที่ทำได้.
㉝ อาคารใหญ่กับ Props เล็กควรใช้ LodDist เท่ากันไหม
ไม่ควรตั้งเป็นกฎ
อาคารใหญ่สามารถมองเห็นได้จากระยะไกล
แต่ขวดหรือ Decoration เล็ก ๆ ไม่จำเป็นต้องแสดงจากระยะเดียวกัน
จึงควรตั้ง LOD ตาม
ขนาด Object
ความสำคัญ
ระยะมองจริง
Map Design
㉞ Map ทั้งเมืองควรใช้ HD ตลอดไหม
ไม่เหมาะในแง่ LOD Design
หากมีอาคารจำนวนมาก การใช้ HD Model ทุกตัวจากระยะไกลจะขัดกับแนวคิดที่ Cfx.re แนะนำให้มี Model ลดรายละเอียดสำหรับ LOD.
Map ใหญ่ยิ่งควรออกแบบ Detail Levels อย่างเป็นระบบ
㉟ MLO ต้องมี LOD ไหม
MLO Interior ที่อยู่ภายในและไม่ถูกมองจากไกลทุกส่วนอาจมีความต้องการต่างจากอาคาร Exterior ใหญ่
แต่ Exterior Shell หรือ Building ที่มองเห็นจากไกลยังควรตรวจ LOD
ดังนั้นไม่ควรใช้กฎ
MLO = ไม่ต้องมี LOD
หรือ
MLO = ต้องมี LOD ทุกชิ้น
ให้ดู Asset จริง
㊱ Interior Props ต้องมี LOD ทุกชิ้นไหม
ไม่
ของเล็กภายในห้อง เช่น
แก้ว
ปากกา
ของตกแต่งเล็ก
ไม่จำเป็นต้องออกแบบ LOD ซับซ้อนเท่า Building Exterior ขนาดใหญ่
เป้าหมายคือใช้เวลาพัฒนาใน Assets ที่มีผลต่อ Scene จริง
㊲ ต้นไม้และเสาไฟควรมี LOD ไหม
Objects ที่มีจำนวนมากและมองเห็นในระยะไกลควรได้รับการพิจารณา LOD เป็นพิเศษ เพราะจำนวน Instances รวมอาจสูง
แต่ต้องทดสอบ Transition ให้ไม่เห็น Model เปลี่ยนรูปแบบชัดเกินไป
㊳ LOD Transition กระตุกเกิดจากอะไร
ถ้าเห็น
HD
↓
เปลี่ยนทันที
↓
LOD คนละทรงชัดเจน
ควรตรวจ
Silhouette ของ LOD
Scale
Coordinates
LodDistParent/Child
Texture/Material Differences
Official Workflow กำหนดให้ HD และ LOD อยู่ตำแหน่งเดียวกันและเชื่อม Hierarchy อย่างถูกต้อง.
㊴ LOD หาย แต่ HD ขึ้น
ให้ตรวจ
LOD YDR/Drawable
YTYP Archetype
LOD YMAP
LodLevelLodDistParent Hierarchy
_manifest.ymf
เพราะ Official Setup ต้องมีองค์ประกอบเหล่านี้เชื่อมกันครบ.
㊵ HD หาย แต่ LOD ขึ้น
ให้ตรวจฝั่ง HD
HD Archetype
HD Entity
LODTYPES_DEPTH_HDLOD in Parent MapParentIndex
YMAP Placement
Cfx.re กำหนดค่าเหล่านี้ใน HD Entity Setup โดยตรง.
㊶ LOD ขึ้นพร้อม HD ซ้อนกัน
หากเห็น Model สองระดับพร้อมกันอย่างผิดปกติ ให้ตรวจ Hierarchy และระยะ Transition
โดยเฉพาะ
ParentIndex
NumChildren
LodLevel
ChildLodDist
LodDist
เพราะทั้งหมดมีบทบาทใน HD/LOD YMAP Configuration ตาม Workflow ของ Cfx.re.
㊷ Model กระพริบตอนเปลี่ยน LOD
อย่ารีบสรุปว่า Texture เสีย
ตรวจ
Geometry ซ้อน
HD/LOD Alignment
Parent Setup
Distance
Duplicate Map
ก่อน
ถ้า HD กับ LOD อยู่ไม่ตรงกันหรือมี Duplicate Entity อาจดูเหมือน Texture กระพริบได้
㊸ Duplicate LOD ทำให้ Map หนักได้ไหม
ถ้า Resource มี LOD Entities ซ้ำหรือ Maps ซ้อนกัน ผู้เล่นอาจต้องจัดการ Assets มากกว่าที่ตั้งใจและอาจเกิด Visual Conflict
วิธีที่ปลอดภัยคือเปิด Resource เดี่ยวก่อน แล้วค่อยเพิ่ม Maps อื่นทีละตัว
㊹ Merge Map แล้ว LOD พัง
นี่พบได้เมื่อ Merge แล้วลืม
LOD YMAP
LOD YDR
YTYP Archetype
Parent Name
_manifest.ymf
หรือทำ Hierarchy เปลี่ยน
ถ้า Original Resource ปกติแต่ Merged Resource มี Pop-in ให้เปรียบเทียบ LOD Structure ก่อนแก้ Model ใหม่ทั้งหมด
㊺ Rename YMAP แล้ว LOD หายได้ไหม
ต้องระวัง
Official Workflow ใช้ชื่อไฟล์ LOD YMAP เป็น Parent ของ HD YMAP.
ดังนั้น Rename File โดยไม่อัปเดตความสัมพันธ์ที่เกี่ยวข้องอาจทำให้ Parent Setup ไม่ตรงกับที่ Project ออกแบบไว้
㊻ Rename LOD Model ต้องตรวจอะไร
ตรวจทั้ง
YDR
YTYP Archetype
YMAP Entity
เพราะ Official Workflow สร้าง Drawables → YTYP Archetypes → YMAP Entities เป็นลำดับ.
อย่า Rename เฉพาะไฟล์ใน Windows แล้วคิดว่า References ภายในจะเปลี่ยนตามเอง
㊼ วิธีสร้าง LOD FiveM แบบย่อ
Workflow ตาม Cfx.re คือ
สร้าง HD Model
↓
สร้าง LOD Model ที่เบากว่า
↓
Convert ทั้งสองเป็น Drawables
↓
Export
↓
เพิ่มทั้งสองใน YTYP
↓
สร้าง HD YMAP
↓
สร้าง LOD YMAP
↓
ตั้ง LodDist / ChildLodDist / LodLevel
↓
เชื่อม Parent/Child
↓
Generate _manifest.ymf
↓
ทดสอบในเกม
นี่คือโครงสร้างหลักของ Official LOD Tutorial.
㊽ วิธี Debug LOD ด้วย F8
FiveM Client Console เปิดด้วย
F8
และมี Developer Commands สำหรับตรวจ Streaming โดยตรง.
ถ้า Object มีอาการหายหรือ Streaming แปลก สามารถใช้เครื่องมือเหล่านี้ประกอบกับการตรวจ YMAP/LOD ได้
㊾ strdbg ใช้กับ LOD ได้ไหม
ใช้ช่วยดูระบบ Streaming ได้
strdbg true
Cfx.re ระบุว่า strdbg แสดงสิ่งที่ GTA Streamer กำลังโหลด และใช้ช่วยตรวจปัญหา Streaming เช่นกรณี World หยุดโหลด.
ถ้า LOD Setup ถูกแต่ Asset ยังไม่ Stream ตามที่คาด เครื่องมือนี้ช่วยให้ Debug ต่อได้
㊿ strlist คืออะไร
ใช้
strlist true
เพื่อเปิด Interface แสดง Entries ที่ลงทะเบียนใน GTA Streamer และสถานะของแต่ละรายการ.
เหมาะสำหรับงาน Development เมื่อพยายามแยก
LOD Configuration Problem
ออกจาก
Streaming Asset Problem
51. strmem ช่วยอะไร
ใช้
strmem true
เพื่อดู Streaming Memory ที่ Assets แต่ละรายการใช้ รวมถึงภาพรวมของ Streaming Memory.
ถ้า Map มี HD Assets จำนวนมากหรือ Texture/Models หนัก เครื่องมือนี้ช่วยให้มองปัญหา Asset Budget ได้มากกว่าการเดาจากขนาด ZIP
52. Developer Commands ใช้ไม่ได้ทำอย่างไร
Cfx.re ระบุว่า Developer Commands เช่น strdbg ต้องเปิด Client Developer Mode มิฉะนั้นอาจขึ้นข้อความว่าคำสั่งถูกปิดใน Production Mode.
ดังนั้นถ้าพิมพ์แล้ว Access Denied ไม่ได้หมายความว่า Map ไม่มี Streaming Data
53. วิธีทดสอบ LOD ที่ถูกต้อง
ให้ทดสอบระยะหลายระดับ
ใกล้มาก
ใกล้
กลาง
ไกล
ไกลมาก
แล้วสังเกต
HD ขึ้นเมื่อไร
LOD ขึ้นเมื่อไร
Transition เห็นชัดไหม
Asset หายช่วงใดหรือไม่
Scale/Position ตรงกันไหม
อย่าทดสอบเพียงยืนข้างอาคาร
54. ทดสอบ LOD ด้วยรถจะเห็นปัญหาง่ายกว่าไหม
สำหรับ Map ขนาดใหญ่ การขับรถเข้าหาอาคารจากระยะไกลช่วยให้เห็น
LOD
↓
Transition
↓
HD
ได้ชัดกว่าการยืนอยู่กับที่
โดยเฉพาะปัญหา Pop-in ที่เกิดตอนผู้เล่นเคลื่อนที่เร็ว
55. LOD ดีควรเปลี่ยนจนผู้เล่นแทบไม่สังเกต
เป้าหมายเชิงคุณภาพคือ Transition ไม่ควรรบกวนการเล่น
LOD ไม่ได้มีไว้เพื่อให้ผู้เล่นเห็นว่า
Model A
↓
Model B
อย่างชัดเจน
แต่ใช้รักษารูปร่างโดยลดรายละเอียดเมื่อไกลออกไป ตามแนวทางที่ Cfx.re ให้ LOD เป็น Simplified Version ของ HD.
56. LOD กับ Map Optimization ต่างกันไหม
LOD เป็น ส่วนหนึ่ง ของ Map Optimization
แต่ Optimization ยังรวม
Geometry
Textures
Materials
Props
Collision
Duplicate Assets
Streaming
Scripts
ดังนั้น Map มี LOD ไม่ได้หมายความว่า Optimize ดีทุกด้าน
ตารางสรุปปัญหา FiveM LOD
| อาการ | จุดที่ควรตรวจ |
|---|---|
| อาคารโผล่เมื่อเข้าใกล้ | LOD / LodDist / Streaming |
| อาคารหายเร็วเมื่อไกล | LodDist / LOD Setup |
| HD ขึ้นแต่ LOD หาย | LOD YDR/YTYP/YMAP |
| LOD ขึ้นแต่ HD หาย | HD Entity / Hierarchy |
| HD และ LOD ซ้อน | Parent/Child / Distance |
| เปลี่ยน Model แล้วกระโดดตำแหน่ง | Coordinates / Transform |
| ขนาดเปลี่ยนตอน Transition | Scale |
| LOD คนละทรงมาก | LOD Model Design |
| Merge แล้ว Pop-in | LOD Files / Parent Hierarchy |
| Rename YMAP แล้ว LOD พัง | Parent YMAP Reference |
| Object หายเป็นช่วง | LOD/Streaming |
| Map ยังหนักแม้มี LOD | Geometry/Texture/Materials/จำนวน Assets |
Checklist FiveM LOD
ก่อนขึ้น Production ควรตรวจ
☐ มี HD Model
☐ มี LOD Model เมื่อ Asset ต้องการ
☐ LOD เบากว่า HD
☐ Materials ของ LOD ลดลงตามเหมาะสม
☐ HD/LOD Archetypes อยู่ใน YTYP
☐ มี HD YMAP
☐ มี LOD YMAP
☐ Coordinates ตรงกัน
☐ HD ใช้ LODTYPES_DEPTH_HD
☐ LOD ใช้ LODTYPES_DEPTH_LOD
☐ ChildLodDist ถูก
☐ LodDist เหมาะสม
☐ ParentIndex ถูก
☐ NumChildren ถูก
☐ _manifest.ymf ถูก Generate
☐ ทดสอบใกล้และไกลแล้ว
ค่าหลักเหล่านี้มาจาก Official Cfx.re LOD Workflow.
LOD ที่ดีควรมีลักษณะอย่างไร
LOD ที่ดีควร
รักษารูปทรงหลักของ HD
ลด Geometry ที่ไม่เห็นจากไกล
ลด Material Complexity
อยู่ตำแหน่งเดียวกับ HD
Transition ในระยะเหมาะสม
ไม่หายเป็นช่วง
ไม่แสดงซ้อน HD
Hierarchy ถูก
Asset References ครบ
ไม่สร้าง Pop-in ที่เห็นชัดเกินไป
Cfx.re สรุป Workflow ที่สมบูรณ์ว่าต้องมี HD/LOD Drawables, Archetypes ใน YTYP, YMAP แยกที่เชื่อมกัน และ LOD Hierarchy ที่ตั้งถูกต้อง.
อย่าแก้ Pop-in ด้วยการเพิ่ม LodDist อย่างเดียว
นี่เป็นข้อผิดพลาดที่พบบ่อย
ถ้า
HD Model หนักมาก
+
ไม่มี LOD ที่ดี
แล้วเพิ่ม
LodDist สูงมาก
คุณเพียงทำให้ Asset รายละเอียดสูงถูกใช้ไกลขึ้น แทนที่จะสร้างระบบ Detail Levels ที่เหมาะสม
แนวทางที่ถูกกว่าคือ
สร้าง LOD ที่เบา
↓
ตั้งระยะเหมาะสม
↓
เชื่อม Hierarchy
↓
ทดสอบ Transition
ตาม Workflow ของ Cfx.re.
วิธี Debug FiveM LOD แบบเร็วที่สุด
ใช้ลำดับนี้
ขั้นที่ 1
ยืนไกลจาก Object แล้วค่อย ๆ เข้าใกล้
ขั้นที่ 2
ดูว่ามี LOD Model จริงหรือไม่
ขั้นที่ 3
ตรวจ YTYP ว่ามี HD และ LOD Archetypes
ขั้นที่ 4
ตรวจ HD YMAP
LOD in Parent Map
LODTYPES_DEPTH_HD
ขั้นที่ 5
ตรวจ LOD YMAP
ChildLodDist
LodDist
LODTYPES_DEPTH_LOD
ขั้นที่ 6
ตรวจ Coordinates ให้ตรงกัน
ขั้นที่ 7
ตรวจ Parent ของ HD YMAP
ขั้นที่ 8
ตรวจ
ParentIndex
NumChildren
ขั้นที่ 9
Generate
_manifest.ymf
ขั้นตอนที่ 3–9 สอดคล้องกับ Official FiveM LOD Setup.
ขั้นที่ 10
ถ้า Asset ยังหายผิดปกติ ใช้ Streaming Debug
strdbg true
strlist true
strmem true
FiveM มีทั้งสามคำสั่งสำหรับดูสิ่งที่ Streamer กำลังโหลด รายการ Entries และ Streaming Memory.
สรุป FiveM LOD คืออะไร และมีผลต่อ Map อย่างไร
FiveM LOD หรือ Level of Detail คือระบบที่ใช้ Model หลายระดับรายละเอียด เพื่อให้ Asset ใกล้ผู้เล่นใช้ HD Model และ Asset ที่อยู่ไกลสามารถใช้ Model ที่ลด Geometry และ Materials ลง
Workflow อย่างเป็นทางการของ Cfx.re คือ
HD Model
+
LOD Model
↓
Convert เป็น Drawables
↓
สร้าง YTYP Archetypes
↓
สร้าง HD YMAP
↓
สร้าง LOD YMAP
↓
กำหนด LodDist / ChildLodDist
↓
เชื่อม Parent/Child Hierarchy
↓
Generate _manifest.ymf
ถ้า Object โผล่เมื่อเข้าใกล้ ให้ตรวจ LOD และ Streaming
ถ้า Object หายเร็วเมื่ออยู่ไกล ให้ตรวจ LodDist
ถ้า HD ขึ้นแต่ LOD หาย ให้ตรวจ LOD YDR, YTYP และ YMAP
ถ้า HD/LOD กระโดดตำแหน่ง ให้ตรวจ Coordinates และ Transform
ถ้า LOD ไม่เปลี่ยนตามระยะ ให้ตรวจ Parent/Child Hierarchy, ParentIndex, NumChildren และ LOD Levels ตาม Workflow ของ Cfx.re.
และถ้าทุกอย่างใน YMAP ดูถูกต้องแต่ World ยังมีปัญหา Streaming สามารถใช้ strdbg, strlist และ strmem ผ่าน FiveM Client Developer Console เพื่อดูสิ่งที่ GTA Streamer กำลังจัดการและ Memory ที่ Streaming Assets ใช้อยู่.
แนวทางของ comsiam คืออย่าใช้วิธีเพิ่มระยะมองให้สูงที่สุดกับทุก Object แต่ให้สร้าง HD/LOD ตามขนาดและความสำคัญของ Asset เพราะ Map ที่ดีไม่ใช่ Map ที่แสดงทุกอย่างด้วยรายละเอียดสูงสุดตลอดเวลา แต่เป็น Map ที่เลือกใช้รายละเอียดให้เหมาะกับระยะโดยผู้เล่นแทบไม่รู้สึกถึงการเปลี่ยนระดับ
Comments
Post a Comment