FiveM Map โหลดไม่ครบหรือโหลดช้า แก้อย่างไร เช็ก Streaming, Texture, LOD และ Memory
ปัญหา FiveM Map โหลดไม่ครบ โหลดช้า Object โผล่ทีหลัง Texture ไม่ขึ้น อาคารหาย หรือเข้าใกล้แล้ว Map ค่อยแสดง ไม่ได้มีสาเหตุจากอินเทอร์เน็ตเพียงอย่างเดียว เพราะระบบ Map ของ FiveM เกี่ยวข้องกับทั้ง Resource, Streaming Assets, YMAP/YTYP, Model, Texture, Collision, LOD และทรัพยากรของเครื่องผู้เล่น
FiveM มีเครื่องมือสำหรับตรวจระบบ Streaming โดยตรง เช่น strdbg, strlist และ strmem รวมถึง save_gta_cache สำหรับ Resource ที่มี Map หรือ Collision Files จำนวนมาก จึงควรวิเคราะห์จากข้อมูลจริงแทนการล้าง Cache หรือเพิ่ม RAM Server แบบเดาสุ่ม
บทความนี้จาก comsiam จะอธิบายวิธีแก้ FiveM Map โหลดไม่ครบหรือโหลดช้าแบบเป็นขั้นตอน ตั้งแต่การแยกอาการ ตรวจ Resource ไปจนถึงการ Optimize LOD และ Streaming Memory
FiveM Map โหลดไม่ครบคืออาการแบบไหน
อาการสามารถเป็นได้หลายแบบ เช่น
อาคารขึ้นเพียงบางส่วน
Props หาย
Texture เป็นสีขาว
พื้นหรือถนนโหลดช้า
เข้าใกล้แล้ว Object ค่อยโผล่
อยู่ไกลแล้วอาคารหายเร็วเกินไป
Interior โหลดช้า
Collision มาทีหลัง
Map บางส่วนหายเมื่อหมุนกล้อง
เข้าเมืองแล้วกระตุกระหว่าง Asset โหลด
ผู้เล่นบางคนเห็นครบแต่บางคนไม่เห็น
ก่อนแก้ต้องระบุให้ได้ว่าอาการเป็น Map ไม่โหลด, Texture ไม่โหลด, Collision ผิด, LOD ผิด หรือ Client Streaming ตัน
① แยก “โหลดช้า” ออกจาก “ไม่โหลดเลย”
ถ้า Resource ไม่ทำงานตั้งแต่ต้น จะมีอาการประมาณ
เข้า Map
↓
ไม่มีอะไรขึ้นเลย
ให้ตรวจ
Resource
fxmanifest.luaensureYMAP
YTYP
Dependency
แต่ถ้า
เข้า Map
↓
รอสักพัก
↓
อาคารค่อยขึ้น
หรือ
เข้าใกล้
↓
Object ค่อยปรากฏ
มีแนวโน้มเกี่ยวข้องกับ Streaming, Asset Complexity หรือ LOD มากกว่า
② เช็กว่า Map Resource ทำงานอยู่หรือไม่
FiveM Resources สามารถมีทั้ง Scripts และ Streaming Assets และแต่ละ Resource สามารถ Start, Stop หรือ Restart แยกกันได้
ตรวจใน Server Console เช่น
ensure custom_map
FiveM ระบุว่า ensure จะ Start Resource หากยังไม่ทำงาน หรือ Restart หาก Resource ทำงานอยู่แล้ว
ถ้า Resource ไม่ได้ Start การแก้ Texture หรือ LOD จะไม่ช่วย
③ เพิ่งเพิ่ม Map ใหม่ให้ใช้ refresh
ถ้า Copy Map Resource เข้า Server ขณะ FXServer ยังเปิดอยู่ ให้ใช้
refresh
FiveM ระบุว่า refresh จะ Rescan Folder Resources และโหลด Resource Manifest ใหม่ ทำให้ Resource ที่เพิ่งเพิ่มพร้อมถูก Start
จากนั้นใช้
ensure custom_map
④ ตรวจ fxmanifest.lua
ทุก Resource ต้องมี Manifest เช่น
fxmanifest.lua
เพื่อให้ FiveM Parse Resource ได้อย่างถูกต้อง
ตัวอย่างโครงสร้าง
custom_map/
├── fxmanifest.lua
└── stream/
ถ้า Resource Folder ซ้อนผิดระดับ เช่น
custom_map/
└── custom_map/
├── fxmanifest.lua
└── stream/
ให้ตรวจว่ากำลัง ensure Resource ชั้นที่ถูกต้อง
⑤ Map โหลดบางส่วนให้ตรวจ Asset ตามประเภท
จำง่าย ๆ
YMAP = Placement
YTYP = Archetype
YDR = Model
YTD = Texture
YBN = Collision
ดังนั้นอาการแต่ละแบบควรตรวจคนละจุด
Object ไม่อยู่
ตรวจ YMAP/YTYP
Model ขึ้น แต่ขาว
ตรวจ YTD/Texture
มองเห็นแต่เดินทะลุ
ตรวจ Collision/YBN
ไกลแล้วหายเร็ว
ตรวจ LOD/Streaming Distance
อย่าแก้ทุกไฟล์พร้อมกัน
⑥ YMAP โหลดไม่ครบเกิดอะไรได้บ้าง
YMAP ใช้กับการวาง Entities ใน World โดย Official Cfx.re Map Workflow แสดงการสร้าง YMAP แล้วเพิ่ม Entity, Archetype และกำหนดตำแหน่งของ Asset โดยตรง
ถ้า Objects บางตัวหาย ให้ตรวจ
Entity อยู่ใน YMAP หรือไม่
Archetype ถูกหรือไม่
Custom Asset อยู่ครบหรือไม่
YMAP ถูก Merge ครบหรือไม่
Map Version เก่าชนกันหรือไม่
⑦ YTYP หายทำให้ Map โหลดไม่ครบได้หรือไม่
ได้สำหรับ Custom Archetypes ที่ Resource ต้องใช้
ตัวอย่าง
custom_building.ydr
อาจต้องมีข้อมูล Archetype ที่สัมพันธ์กันก่อนถูก YMAP นำไปใช้
ถ้า Copy เฉพาะ YMAP/YDR แต่ลืม Asset Definition ที่ Resource ต้นฉบับใช้ Map อาจขึ้นเพียงบางส่วน
ดังนั้นไม่ควรเลือก Copy เฉพาะไฟล์ที่ดูคุ้นเคย
⑧ Model ขึ้นช้าควรตรวจ YDR หรือไม่
ควรตรวจ Model Complexity และ Asset Streaming
ถ้า Custom Building ใหญ่หรือมี Geometry จำนวนมาก การโหลดและ Render ย่อมมีภาระมากกว่า Asset ที่เรียบง่ายกว่า
แต่ก่อน Optimize YDR ควรตรวจว่า
Resource ทำงานปกติ
LOD มีหรือไม่
Texture ใหญ่เกินไปหรือไม่
เพราะปัญหาอาจไม่ได้มาจาก Model เพียงอย่างเดียว
⑨ Texture ขึ้นช้าควรตรวจ YTD
ถ้า Model ขึ้นทันทีแต่ Texture ค่อย ๆ มา
เช่น
อาคารขึ้น
↓
ขาว
↓
Texture ค่อยชัด
ให้สงสัย Texture Streaming/Memory ก่อน
โดยเฉพาะ Server ที่มี
รถ Custom จำนวนมาก
MLO หลายตัว
เสื้อผ้า
Props
Map Textures ความละเอียดสูง
ทำงานพร้อมกัน
⑩ Texture 4K ทุกไฟล์ทำให้ Map หนักไหม
ความละเอียด Texture สูงเพิ่ม Asset Memory Requirement ดังนั้นไม่ควรใช้ 4K กับทุกพื้นผิวเพียงเพราะภาพต้นฉบับมีขนาดใหญ่
ตัวอย่าง
ป้ายอาคารขนาดใหญ่
อาจต้องการรายละเอียดสูง
ขวดบนโต๊ะ
ไม่จำเป็นต้องใช้ Texture ใหญ่เท่าผนังทั้งอาคาร
พื้นผิวที่อยู่ไกลตลอด
ควรดูระยะที่ผู้เล่นเห็นจริง
Optimization ต้องดูคุณภาพที่เห็นจริงในเกม ไม่ใช่เลือก Resolution สูงสุดทุกไฟล์
⑪ รถ Custom ก็ทำให้ Map โหลดช้าลงทางอ้อมได้หรือไม่
ฝั่ง Client มี Streaming Memory ร่วมกับ Assets หลายประเภท
FiveM มีคำสั่ง strmem ซึ่งแสดง Streaming Memory ที่ใช้โดย Streaming Assets รายตัวพร้อมภาพรวมทั้งหมด
ดังนั้นหากพื้นที่เดียวกันมี
MLO
+
รถ Custom หลายคัน
+
Clothes
+
Props
+
Map
จำนวน Assets โดยรวมอาจมีความสำคัญกว่าดู Map Resource เดียว
⑫ ใช้ strmem ตรวจ Streaming Memory
สำหรับการ Debug ขั้นสูง FiveM มี
strmem true
ซึ่งแสดงรายการ Streaming Memory ที่ Assets ใช้และภาพรวมของ Memory
ใช้เมื่อสงสัยว่า
Texture โหลดไม่ทัน
Map หายเมื่อ Assets เยอะ
เข้า Car Meet แล้ว Map เริ่มเบลอ
Objects Pop-in มากขึ้น
อย่างไรก็ตามคำสั่ง Developer บางตัวอาจต้องใช้ Developer Mode ตาม Client Build ที่ใช้งาน
⑬ strdbg คืออะไร
FiveM มีคำสั่ง
strdbg true
สำหรับดูสิ่งที่ GTA Streamer กำลังโหลด และ Cfx.re ระบุว่าใช้ช่วยตรวจ Streaming Issues เช่นกรณี World หยุดโหลดได้
นี่มีประโยชน์มากกว่าการเดาว่า Internet ช้าทุกครั้งที่ Map ไม่ขึ้น
⑭ strlist คืออะไร
ใช้
strlist true
เพื่อเปิด Interface ที่แสดง Entries ที่ลงทะเบียนใน GTA Streamer พร้อมสถานะปัจจุบัน
เหมาะสำหรับ Developer ที่ต้องการตรวจว่า Asset
ถูกลงทะเบียนหรือไม่
อยู่ในสถานะอะไร
มีรายการ Streaming หรือไม่
⑮ Developer Commands ใช้ไม่ได้ทำอย่างไร
Cfx.re ระบุว่า Developer Commands เช่น resmon และ strdbg อาจแสดง Access Denied ใน Production Mode และต้องเปิด Client Developer Mode ตามวิธีที่ Documentation ระบุ
ดังนั้นถ้าพิมพ์
strdbg true
แล้วไม่ทำงาน ไม่ได้หมายความว่า FiveM ไม่มีคำสั่งนี้
⑯ LOD คือสาเหตุใหญ่ของ Map Pop-in
LOD คือ Level of Detail
Official FiveM Assets Manual แนะนำให้สร้าง
HD Model
+
LOD Model
โดย LOD ใช้ Geometry และ Materials ที่เรียบง่ายกว่า และกำหนดระยะ Streaming ผ่าน LodDist/ChildLodDist
ถ้า LOD ไม่ถูกต้องอาจเกิด
อาคารหายเมื่ออยู่ไกล
Object โผล่กะทันหัน
Map เปลี่ยนรายละเอียดชัดเกิน
HD Model โหลดช้า
⑰ Map อยู่ไกลแล้วหายเร็วแก้อย่างไร
อย่าเริ่มด้วยการเพิ่ม LodDist ของทุก Object เป็นค่ามหาศาล
ควรตรวจว่า Asset มี
HD
↓
LOD
ทำงานสัมพันธ์กันหรือไม่
Cfx.re Workflow กำหนดให้ LOD Entity มี LodDist สูงขึ้นตาม Streaming Distance ที่ต้องการ และ HD/LOD ถูกเชื่อมผ่าน YMAP Hierarchy
ค่าที่สูงเกินโดยไม่มี LOD เหมาะสมอาจเพิ่มภาระ Rendering โดยไม่จำเป็น
⑱ LOD Model ควรเบากว่า HD
ใช่
Official Documentation ระบุให้ LOD Model เป็น Version ที่มี Geometry และ Materials เรียบง่ายกว่า HD Model
แนวคิดคือ
ใกล้ → สวยเต็ม
ไกล → ลดรายละเอียด
ถ้า LOD มี Polygon และ Materials แทบเท่า HD ก็ลดประโยชน์ของระบบ LOD ลง
⑲ Map ไม่มี LOD ควรทำไหม
ถ้าเป็น Prop เล็ก ๆ อาจไม่ต้องการโครงสร้างซับซ้อนเท่าอาคารใหญ่
แต่สำหรับ
อาคารใหญ่
Island
Airport
Racetrack
City Expansion
Industrial Complex
ควรตรวจ LOD อย่างจริงจัง
เพราะ Asset เหล่านี้มองเห็นจากระยะไกลและอาจอยู่ใน Scene จำนวนมาก
⑳ _manifest.ymf สำคัญกับ LOD หรือไม่
ใน Official FiveM LOD Workflow หลังเชื่อม HD/LOD YMAP Cfx.re ให้ใช้ CodeWalker Manifest Generator เพื่อสร้าง _manifest.ymf และสรุปว่า Manifest ถูกสร้างเพื่อให้ Setup โหลดในเกมอย่างถูกต้อง
ดังนั้นถ้ากำลังสร้างหรือแก้ Custom Map เอง อย่าลบไฟล์ที่ Workflow ต้นฉบับกำหนดโดยไม่เข้าใจผล
㉑ Map โหลดช้าเพราะ Collision ได้หรือไม่
Resource ที่มี Collision หรือ Map Files จำนวนมากสามารถใช้เวลา Initial Loading มากขึ้นจน FiveM มีคำสั่งเฉพาะชื่อ
save_gta_cache
สำหรับกรณีนี้
จึงไม่ควรมองเฉพาะ Texture เมื่อ Map Resource ขนาดใหญ่โหลดช้า
㉒ save_gta_cache คืออะไร
FiveM ระบุว่า
save_gta_cache <resource name>
จะสร้าง Cache Data สำหรับ Resource ที่มี Collision หรือ Map Files จำนวนมาก เพื่อช่วยให้ Initial Loading ของผู้เล่นเร็วขึ้น
ตัวอย่าง
save_gta_cache city_map
จากนั้น Cache File ต้องถูกนำไปวางที่ Root ของ Resource และเพิ่มใน Resource Manifest ตาม Workflow ที่ Documentation กำหนด
㉓ ต้องใช้ save_gta_cache กับทุก Map ไหม
ไม่
FiveM ระบุวัตถุประสงค์สำหรับ Resources ที่มี Significant Amount of Collision or Map Files
Map ร้านเล็ก ๆ หรือ MLO ธรรมดาไม่ควรใช้ Cache Workflow เป็น Default เพียงเพราะโหลดช้าหนึ่งครั้ง
ต้องหา Root Cause ก่อน
㉔ save_gta_cache ไม่ได้ Optimize Map ให้เอง
ถูกต้อง
มันไม่ได้
ลด Polygon
ลด Texture
สร้าง LOD
แก้ YTYP
ซ่อม Collision
แก้ Map Conflict
หน้าที่ที่ Cfx.re ระบุคือช่วย Initial Loading ของ Resource ที่มี Map/Collision จำนวนมาก
ดังนั้น Asset ที่หนักเกินก็ยังควร Optimize ต้นทาง
㉕ Map โหลดช้าตอนเข้า Server กับเดินเข้า Map ช้าไม่เหมือนกัน
เข้า Server ครั้งแรกช้า
ตรวจ
Resource Download
Map Files จำนวนมาก
Collision
Client Storage
เข้า Server แล้ว แต่เดินเข้า Map จึงค่อยกระตุก
ตรวจ
Streaming
Texture
Geometry
LOD
Memory
Object หายตลอด
ตรวจ
Resource
YMAP
YTYP
Asset Files
ต้องแยกสามอาการนี้ออกจากกันก่อน
㉖ Map ใหญ่ควรแยก Resource หรือไม่
FiveM Resources เป็นหน่วย Content ที่สามารถ Start/Stop/Restart แยกกัน และสามารถประกอบด้วย Streaming Assets ได้
สำหรับ Server ใหญ่ อาจจัด
[maps]/
├── city_core/
├── police/
├── hospital/
├── island/
└── racetrack/
แทนการ Merge ทุก Map เป็น Resource เดียว
ข้อดีคือหา Map ที่มีปัญหาได้ง่ายกว่า
㉗ Resource เยอะทำให้ Map โหลดช้าเสมอไหม
ไม่ควรตัดสินจากจำนวน Resource เพียงอย่างเดียว
Resource หนึ่งอาจมีเพียง Map Asset
อีก Resource อาจมี Script Loop หนักตลอดเวลา
ดังนั้นต้องแยก
Streaming Asset Load
จาก
Script Runtime Load
ก่อน
㉘ ใช้ resmon ตรวจได้หรือไม่
ได้ในส่วนของ Resource Runtime
FiveM Resource Monitor แสดง CPU และ Memory Usage ของ Resources และสามารถเปิดด้วย
resmon true
ใน Environment ที่อนุญาต
ถ้า Map Package มี Script มาด้วยและ Resource ใช้ CPU สูงผิดปกติ ให้ตรวจ Script เพิ่ม
แต่ resmon ไม่ได้บอกจำนวน Polygon ของ YDR โดยตรง
㉙ Map โหลดช้าจาก Script ได้ไหม
ได้ถ้า Map Package มี Script เช่น
Door Logic
Dynamic Props
IPL Management
Teleport
Elevator
Interaction
และ Script ทำงานไม่มีประสิทธิภาพ
FiveM ระบุว่า Hitch Warnings อาจเกิดจาก Resources ที่ทำงานไม่ดี เช่น Loop ที่ไม่ได้ Optimize และ Profiler สามารถใช้ตรวจได้ทั้ง Client และ Server
ดังนั้นอย่าโทษ YTD ทุกครั้ง
㉚ Profiler ใช้เมื่อไร
ใช้เมื่อสงสัยว่า Runtime Code เป็นสาเหตุ
ตัวอย่าง
Map OFF → ปกติ
Map ON → Resource CPU สูง
แต่ Streaming Assets ไม่ได้ใหญ่ผิดปกติ
กรณีนี้ให้ใช้ Profiler หา Function หรือ Resource ที่ใช้เวลาประมวลผลสูง FiveM มี Profiler สำหรับทั้ง Client และ Server
㉛ Texture เบลอแล้วค่อยชัดเกิดจากอะไร
มีแนวโน้มเกี่ยวกับการ Streaming Texture และ Memory Budget ฝั่ง Client
ควรตรวจ
YTD ใหญ่หรือไม่
Texture Resolution
Assets อื่นใน Scene
strmemClient Hardware
ถ้าเกิดเฉพาะเมื่อมีรถ Custom จำนวนมากด้วย ให้ทดสอบพื้นที่เดิมโดยนำรถออกแล้วเปรียบเทียบ
㉜ ผู้เล่นเครื่องแรงโหลดครบ แต่เครื่องกลางโหลดช้า
นี่เป็นสัญญาณว่าควรตรวจ Asset Budget ฝั่ง Client
เพราะ Client แต่ละเครื่องมี
RAM
VRAM
Storage
GPU
CPU
ต่างกัน
Server Developer จึงไม่ควร Test Map เฉพาะคอมระดับสูง
ควรมี Client Test ระดับกลางเพื่อดูประสบการณ์ของผู้เล่นจริง
㉝ SSD มีผลกับ Asset Loading ไหม
Storage Performance สามารถมีผลกับเวลาการอ่านข้อมูลฝั่ง Client แต่ถ้าผู้เล่นหลายเครื่องเจอ Object เดียวกันหาย ณ จุดเดียวกัน ควรตรวจ Map Asset/LOD/Resource ก่อน
อย่าสรุปทันทีว่า HDD หรือ SSD เป็นสาเหตุ หากอาการมี Pattern เหมือนกันทุกคน
㉞ Internet ช้าทำให้ Map ไม่ครบไหม
ระหว่างการ Download Resource หรือ Join Server Network สามารถมีผลต่อเวลาโหลด Content ได้
แต่หลัง Client มี Resource แล้วและอาการเกิดซ้ำ ณ Location เดิมทุกครั้ง ควรตรวจ Streaming และ Asset Configuration เพิ่ม
ดังนั้น
Map โหลดช้า
≠
Internet ช้าเสมอ
㉟ Ping สูงทำให้ Texture ช้าเสมอไหม
ไม่
Ping เป็น Round-trip Network Latency ส่วน Texture/Model Streaming หลัง Content พร้อมอยู่ฝั่ง Client มีปัจจัยจาก Asset และ Client Rendering/Memory ด้วย
FiveM มี cl_drawperf ที่แสดง FPS, Ping, Packet Loss, CPU และ GPU Usage เพื่อช่วยแยก Performance Metrics ได้
ใช้
cl_drawperf true
เพื่อดูภาพรวมระหว่างทดสอบ
㊱ cl_drawperf มีประโยชน์อย่างไร
FiveM แสดงผ่าน cl_drawperf
FPS
Ping
Packet Loss
CPU Usage
GPU Usage
GPU Temperature
ตาม Documentation ปัจจุบัน
ถ้า
Ping ปกติ
แต่ FPS ตกหนักเมื่อหันไปหา Map
ควรตรวจ Rendering/Asset มากกว่า Network Latency
㊲ Map โหลดไม่ครบเฉพาะบริเวณที่มีรถเยอะ
ให้ทดสอบแบบ A/B
รอบที่ 1
พื้นที่ Map + ไม่มี Custom Cars
รอบที่ 2
พื้นที่ Map + Custom Cars จำนวนมาก
ถ้ารอบสองเกิด Texture Loss/Pop-in ชัดขึ้น ให้ตรวจ Streaming Memory ภาพรวมด้วย strmem เพราะ FiveM สามารถแสดง Memory ที่ Streaming Assets ใช้ได้
㊳ Map โหลดไม่ครบหลังเพิ่ม Clothes Pack
หลักเดียวกัน
อย่าคิดว่า Map Resource เสียทันที
ถ้า
ก่อนเพิ่ม Clothes → Map ปกติ
หลังเพิ่ม Clothes → Streaming แย่
ให้ย้อน Test Clothes Resource ออก
Server Content ทั้งระบบต้องถูกมองเป็น Asset Budget รวม ไม่ใช่แยกแต่ละหมวดโดยไม่สนกัน
㊴ Map โหลดไม่ครบหลังเพิ่ม MLO ใหม่
ทดสอบ
Old Maps ON
New MLO OFF
แล้ว
Old Maps ON
New MLO ON
ถ้าอาการเกิดทันทีเมื่อเปิด MLO ใหม่ ให้ตรวจทั้ง
Asset Weight
Map Conflict
Texture
LOD
Collision
อย่าเพิ่ง Optimize Map เก่าทั้งหมด
㊵ Map Conflict ทำให้ดูเหมือนโหลดไม่ครบได้ไหม
ได้
ถ้า Maps สองตัวแก้พื้นที่เดียวกัน อาจเกิด
Object ทับ
Geometry ซ้อน
Collision ซ้อน
Texture กระพริบ
Interior หาย
Map ดูเหมือนโหลดไม่ครบ
วิธีพิสูจน์ง่ายที่สุดคือเปิด Map ทีละ Resource
㊶ Map กระพริบไม่ใช่ Streaming เสมอไป
ถ้า Texture หรือพื้นผิวกระพริบตามมุมกล้อง อาจเป็น Z-fighting จาก Geometry สองชั้น
เช่น
Vanilla Floor
+
Custom Floor
อยู่ตำแหน่งเกือบเดียวกัน
กรณีนี้ต่อให้เพิ่ม Memory ก็ไม่แก้
ต้องแก้ Map Conflict/Geometry
㊷ Object หายเมื่อหมุนกล้อง
อาจเกี่ยวข้องกับ
LOD
Bounds
YMAP Configuration
Asset Culling
Map Conflict
ถ้า Object หายเฉพาะมุมมอง ไม่ใช่ค่อย ๆ โหลดตามเวลา ควรตรวจ Asset/Map Setup มากกว่า Internet
㊸ Collision โหลดช้าหรือเดินตก
ถ้า Map Visual ขึ้นก่อน แต่ผู้เล่นเดินแล้วตกพื้น ให้ตรวจ Collision Asset และ Initial Loading ของ Resource
สำหรับ Resource ที่มี Collision/Map Files จำนวนมาก save_gta_cache เป็นหนึ่งในเครื่องมือที่ FiveM มีไว้ช่วย Initial Loading
แต่ถ้าผู้เล่นตกจุดเดิมทุกครั้งแม้รอนานแล้ว ให้ตรวจ YBN/Collision จริง ไม่ใช่ Cache อย่างเดียว
㊹ อย่าใส่ Props มากเกินจำเป็น
พื้นที่เล็กสามารถหนักได้หากมี Objects จำนวนมาก
ตัวอย่างร้านหนึ่งแห่งอาจมี
ขวด 300
เก้าอี้ 100
ของตกแต่ง 500
แม้ Map ขนาดเล็กก็อาจสร้าง Scene Complexity สูงได้
ควรพิจารณารวม/ลด Decoration ที่ผู้เล่นแทบไม่สังเกต
㊺ Materials จำนวนมากมีผลไหม
LOD Workflow ของ Cfx.re ระบุให้ LOD Model ใช้ทั้ง Geometry และ Materials ที่เรียบง่ายลง
ดังนั้นการ Optimize Map ไม่ควรดู Polygon เพียงอย่างเดียว
Asset ที่มี Material/Texture Sets จำนวนมากก็สมควรถูกตรวจเช่นกัน
㊻ Map Texture ควรลดอย่างไร
อย่าลดทุกไฟล์เท่ากัน
ให้แบ่งตาม
ใหญ่และเห็นใกล้
รักษารายละเอียดมากกว่า
เล็กและอยู่ไกล
ลดได้มากกว่า
Logo/ตัวหนังสือ
ต้องทดสอบว่าอ่านได้
Normal/Material Texture
ต้องรักษา Format ที่เหมาะสม
ทุกครั้งที่ลด Texture ต้องเข้าเกม Test จริง
㊼ อย่า Optimize Production โดยไม่มี Backup
ก่อนแก้สร้าง
map_original/
map_test/
หรือใช้ Version Control
เพราะ Map Resource สามารถมีความสัมพันธ์หลายส่วน
YMAP
YTYP
YDR
YTD
YBN
การแก้ File หนึ่งอาจทำให้ปัญหาแสดงในอีกส่วน
㊽ อย่า Merge Map ก่อนยืนยันว่าต้นฉบับปกติ
Workflow ที่ปลอดภัยคือ
Original Map
↓
ทดสอบ
↓
ยืนยันว่าปกติ
↓
ค่อย Merge/Optimize
ถ้า Original ทำงานดีแต่ Merged Version โหลดไม่ครบ คุณจะรู้ทันทีว่าต้นเหตุอยู่ที่ขั้นตอน Merge
㊾ วิธีหา Asset ตัวหนักใน Map ใหญ่
ถ้า Map ใหญ่มาก ให้แบ่ง Resource หรือ Asset เป็นกลุ่มในการ Test
ตัวอย่าง
Buildings
Props
Interior
Decorations
Collision
Disable สิ่งที่สามารถแยกทดสอบได้ทีละกลุ่ม
จากนั้นดู
FPS
Streaming
Texture Load
strmem
เพื่อหาส่วนที่สร้างผลกระทบชัดที่สุด
㊿ วิธีทดสอบ Map Loading ให้ได้ผลจริง
ใช้สถานการณ์เดิมทุกครั้ง
ก่อน Optimize
บันทึก
Location
FPS
เวลาที่ Texture ชัด
จำนวน Objects ที่หาย
Client Spec
หลัง Optimize
ทดสอบ
Location เดิม
มุมเดิม
Graphic เดิม
Client เดิม
อย่าทดสอบก่อนและหลังคนละพื้นที่ เพราะผลเปรียบเทียบจะไม่มีความหมายมากนัก
51. Stress Test Map
อย่าทดสอบ Map ตอน Server ว่างอย่างเดียว
ลอง
ผู้เล่นหลายคน
รถหลายคัน
Clothes Custom
HUD
MLO Nearby
Props
พร้อมกัน
เพราะ Production Server มี Content หลายประเภททำงานร่วมกัน
Map ที่ดูปกติใน Development Server เปล่า ๆ อาจมีปัญหาเมื่อ Asset Budget รวมสูงขึ้น
52. วิธี Debug Map โหลดไม่ครบแบบเร็วที่สุด
ใช้ลำดับนี้
ขั้นที่ 1
ยืนยัน Resource Started
ensure map_name
ขั้นที่ 2
ดู Server Console
ขั้นที่ 3
เปิด F8
FiveM Client Console เปิดผ่าน F8 และใช้ Debug Resource Issues ได้
ขั้นที่ 4
แยกอาการ
Model
Texture
Collision
LOD
ขั้นที่ 5
ตรวจ YMAP/YTYP
ขั้นที่ 6
ตรวจ YDR/YTD/YBN
ขั้นที่ 7
ปิด Map อื่นบริเวณเดียวกัน
ขั้นที่ 8
ใช้
strdbg true
เพื่อตรวจ GTA Streamer ใน Developer Environment
ขั้นที่ 9
ใช้
strlist true
ดู Registered Streaming Entries
ขั้นที่ 10
ใช้
strmem true
ดู Streaming Memory
ขั้นที่ 11
ตรวจ LOD
ขั้นที่ 12
ใช้ resmon หาก Resource มี Scripts
ขั้นที่ 13
ใช้ Profiler หาก Runtime Resource หนักผิดปกติ
ขั้นที่ 14
สำหรับ Map/Collision Resource ขนาดใหญ่มาก พิจารณา save_gta_cache ตาม Official Workflow
ตารางสรุป FiveM Map โหลดไม่ครบหรือโหลดช้า
| อาการ | จุดที่ควรตรวจ |
|---|---|
| Map ไม่ขึ้นเลย | Resource / YMAP / YTYP |
| อาคารขึ้นบางส่วน | YMAP / YTYP / YDR |
| Texture ขาว | YTD / Streaming |
| Texture ค่อย ๆ ชัด | Memory / Texture Streaming |
| เดินทะลุ | Collision / YBN |
| Collision มาช้า | Map/Collision Loading |
| อาคารโผล่เมื่อเข้าใกล้ | LOD / Streaming Distance |
| ไกลแล้วหายเร็ว | LOD |
| หมุนกล้องแล้ว Object หาย | Bounds / LOD / Map Setup |
| Texture กระพริบ | Geometry/Map Conflict |
| Map โหลดแย่เมื่อรถเยอะ | Streaming Memory |
| Resource CPU สูง | Script / resmon |
| Server Hitch | Script / Profiler |
| Map ใหญ่เข้า Server ช้า | Resource/Map/Collision Cache |
| เปิดเดี่ยวปกติ เปิดหลาย Map แล้วเสีย | Map Conflict |
| บาง Client ช้า | Client Hardware/Streaming |
Checklist Map Optimization
ตรวจอย่างน้อย
☐ Resource ทำงาน
☐ ไม่มี Console Error
☐ YMAP/YTYP ครบ
☐ YDR ครบ
☐ YTD ไม่ใหญ่เกินจำเป็น
☐ Collision ถูกต้อง
☐ มี LOD ตามความเหมาะสม
☐ LOD Geometry เบากว่า HD
☐ Material ของ LOD ไม่ซับซ้อนเกินไป
☐ ไม่มี Map ซ้อน
☐ ไม่มี Test Assets ปน Production
☐ ทดสอบ strmem
☐ ทดสอบ FPS
☐ ทดสอบ Client สเปกระดับกลาง
ควรล้าง Cache เมื่อ Map โหลดช้าหรือไม่
ไม่ควรเป็นคำตอบแรก
ถ้า
ผู้เล่นทุกคน
+
Map เดียวกัน
+
จุดเดียวกัน
โหลดผิดเหมือนกัน ให้ตรวจ Resource/Asset ก่อน
แต่ถ้า Server ปกติและเกิดกับ Client เครื่องเดียว จึงค่อยตรวจ Client State หรือ Cache เพิ่ม
FiveM มีเครื่องมือ Streaming Debug โดยตรง เช่น strdbg, strlist และ strmem จึงควรใช้ข้อมูลเหล่านี้ก่อนแก้แบบสุ่มในงาน Developer
ต้องเพิ่ม RAM Server ไหม
ไม่ควรตัดสินก่อนรู้ว่าปัญหาอยู่ฝั่งไหน
ถ้า
FPS ผู้เล่นตก
Texture โหลดช้า
Object Pop-in
ปัญหามีแนวโน้มเกี่ยวข้องกับ Client Rendering/Streaming มากกว่า RAM Dedicated Server เพียงอย่างเดียว
แต่ถ้ามี
Hitch Warning
Resource CPU สูง
Server Script หน่วง
จึงตรวจ Server Runtime/Script เพิ่ม FiveM แนะนำ Profiler สำหรับ Resources ที่ใช้เวลาทำงานสูงผิดปกติ
FiveM Map ที่โหลดดีควรเป็นอย่างไร
Map ที่ Optimize ดีควรมี
Model เหมาะสม
Texture Resolution สมเหตุสมผล
LOD สำหรับ Assets ที่ควรมี
Collision ไม่ซับซ้อนเกินจำเป็น
ไม่มี Duplicate Objects
ไม่มี Resource Conflict
Streaming ไม่ตันเมื่อมี Assets อื่น
Scripts ไม่กิน CPU ผิดปกติ
Initial Loading อยู่ในระดับเหมาะสม
ไม่จำเป็นต้องทำ Map ให้ File Size เล็กที่สุด แต่ต้องให้คุณภาพสัมพันธ์กับทรัพยากรที่ใช้
สรุป FiveM Map โหลดไม่ครบหรือโหลดช้า แก้อย่างไร
ถ้า FiveM Map โหลดไม่ครบหรือโหลดช้า ให้เลิกมองปัญหาเป็นเรื่องเดียว แล้วแบ่งออกเป็น
Resource
Streaming
Model
Texture
Collision
LOD
Memory
Script
Map Conflict
ก่อน
FiveM มีเครื่องมือ Streaming Debug อย่าง
strdbg
strlist
strmem
สำหรับดูสิ่งที่ GTA Streamer กำลังโหลด รายการ Asset ที่ลงทะเบียน และ Streaming Memory โดยตรง
หาก Map มีอาการ ไกลแล้วหายเร็วหรือโผล่เมื่อเข้าใกล้ ให้ตรวจ LOD เพราะ Cfx.re แนะนำให้ใช้ HD และ LOD Models ที่ต่างระดับรายละเอียด พร้อมเชื่อม YMAP Hierarchy และกำหนด Streaming Distance ให้เหมาะสม
หาก Map Resource มี Collision หรือ Map Files จำนวนมากมาก FiveM ยังมี save_gta_cache สำหรับช่วย Initial Loading ตาม Workflow อย่างเป็นทางการ แต่ไม่ได้ใช้แทนการ Optimize Asset
แนวทางของ comsiam คือทดสอบ Map เดี่ยวก่อน จากนั้นเพิ่มรถ MLO เสื้อผ้า และ Maps อื่นกลับเข้ามาทีละกลุ่ม พร้อมดู strmem, FPS และ Resource Performance เพราะ Map ที่ทำงานดีเมื่ออยู่เดี่ยวแต่เริ่มโหลดไม่ครบเมื่อ Server มี Assets จำนวนมาก มักต้องแก้จาก Asset Budget และ Streaming ภาพรวม ไม่ใช่ปรับ Map เพียงไฟล์เดียว
Comments
Post a Comment