วิธี Optimize Map FiveM ให้โหลดเร็วและลด FPS ตก แบบละเอียด

การ Optimize Map FiveM ไม่ได้หมายถึงการลดขนาดไฟล์ ZIP เพียงอย่างเดียว แต่ต้องลดภาระที่ Client ใช้กับ Model, Texture, Materials, LOD, Collision, Props, Streaming และ Scripts พร้อมตรวจว่าผู้เล่นยังเห็น Map ได้สวยและใช้งานได้ถูกต้อง

Cfx.re มี Workflow สำหรับ Map Assets แยกเป็นหลายส่วน ตั้งแต่การสร้าง Drawable/YTYP, วาง Assets ด้วย YMAP, ทำ Collision และสร้าง HD/LOD Models ซึ่งสะท้อนว่า Performance ของ Map ต้องดูทั้ง Asset Pipeline ไม่ใช่แก้ไฟล์ชนิดเดียว.

FiveM ยังมีเครื่องมืออย่าง strdbg, strlist, strmem, resmon และ save_gta_cache สำหรับตรวจ Streaming, Memory, Resource Runtime และ Initial Loading โดยตรง.

บทความนี้จาก comsiam จะพา Optimize Map แบบเป็นขั้นตอน ตั้งแต่หา Asset ตัวหนักไปจนถึงการวัดผลก่อนและหลังแก้

FiveM Map หนักดูจากอะไร

อาการที่มักบอกว่า Map ควรถูกตรวจ Optimization ได้แก่

  • FPS ลดเมื่อหันกล้องไปหา Map

  • Texture ค่อย ๆ ชัด

  • Object โผล่ช้า

  • อาคารหายเมื่ออยู่ไกล

  • เข้า MLO แล้ว FPS ลดทันที

  • Props โหลดไม่ทัน

  • World Streaming สะดุด

  • Resource มี Scripts ใช้ CPU สูง

  • Initial Loading ของ Map ใช้เวลานาน

  • Map ปกติเมื่อเปิดเดี่ยว แต่หนักเมื่อเปิดหลาย Resources

ต้องแยกก่อนว่าเป็น Asset Rendering, Streaming หรือ Script Runtime เพราะ FiveM มีเครื่องมือคนละชุดสำหรับแต่ละปัญหา.

① Backup Map ก่อน Optimize

ก่อนแก้ควรเก็บ

map_original/
map_optimized/

แยกกัน

หรือใช้ Version Control

อย่า Optimize ทับ Production Resource โดยตรง เพราะหาก

  • Texture หาย

  • Collision พัง

  • LOD ผิด

  • Model ไม่ขึ้น

จะย้อนกลับได้ยาก

② วัดก่อนแก้เสมอ

อย่าเริ่มลด Assets โดยไม่มี Baseline

เลือกตำแหน่งทดสอบ เช่น

Police Station Entrance

แล้วบันทึก

FPS
CPU Usage
GPU Usage
เวลาที่ Texture โหลดครบ
Object Pop-in
Resource CPU/Memory

FiveM มี cl_drawperf สำหรับแสดง FPS, Ping, Packet Loss, CPU และ GPU Metrics ขณะเล่น.

ใช้

cl_drawperf true

ก่อนและหลัง Optimize

③ Test Map ตัวเดียวก่อน

ถ้ามี Maps 30 ตัว อย่า Optimize ทั้งหมดพร้อมกัน

ทดสอบ

Map ที่ต้องการ Optimize ON
Maps ใกล้เคียง OFF

ก่อน

หาก FPS ยังต่ำ แสดงว่าตัว Map เองควรถูกตรวจ

แต่ถ้า Map เดี่ยวปกติแล้วหนักเมื่อเปิด Resource อื่นร่วมกัน ควรตรวจ Asset Budget รวมและ Conflict

④ แยก Client FPS ออกจาก Server Lag

ถ้าอาการคือ

หันกล้องไปหาอาคาร
↓
FPS ตก

ควรตรวจ

  • Model

  • Texture

  • Materials

  • Props

  • LOD

แต่ถ้า Server มี Hitch หรือ Resource CPU สูง ควรตรวจ Scripts

Cfx.re ระบุว่า Hitch Warnings สามารถเกิดจาก Resources ที่ทำงานไม่ดี เช่น Unoptimized Loops หรือ Query ที่ใช้เวลานาน และ Profiler/Resmon ใช้ช่วยวิเคราะห์ Runtime ได้.

⑤ ใช้ resmon ตรวจ Script ก่อน

เปิด

resmon true

FiveM Resource Monitor แสดง CPU และ Memory Usage ของแต่ละ Resource ฝั่ง Client และเหมาะสำหรับหา Resource ที่ใช้เวลาประมวลผลสูงระหว่าง Gameplay.

ถ้า Map Package มี

client.lua
door.lua
elevator.lua
interaction.lua

และ Resource Time สูง ต้องแก้ Script แยกจาก Model

⑥ อย่าใช้ resmon วัด Polygon

resmon ใช้ดู Resource Runtime CPU/Memory ไม่ได้บอกจำนวน Polygon ของ YDR โดยตรง.

ดังนั้นหาก

resmon ปกติ
แต่ FPS ตกเมื่อมองอาคาร

ยังต้องตรวจ Map Assets ต่อ

⑦ ใช้ Profiler เมื่อ Resource Script หนัก

FiveM มี Built-in Profiler สำหรับวิเคราะห์ Resource ที่ใช้เวลาประมวลผลสูงทั้ง Client และ Server.

เหมาะเมื่อ

Map Resource
+
Gameplay Script

อยู่ใน Package เดียวกันและต้องแยกว่าอะไรเป็นต้นเหตุ

⑧ ตรวจ YDR ก่อน

YDR เป็น Drawable/Model Asset

Map ที่มี Model

  • Geometry สูงมาก

  • Materials มาก

  • ไม่มี LOD

  • ถูกวางซ้ำจำนวนมาก

ควรถูกตรวจเป็นลำดับต้น ๆ

Official Cfx.re LOD Workflow แนะนำให้สร้าง LOD Model ที่มี Geometry และ Materials เรียบง่ายกว่า HD Model.

⑨ Polygon เยอะต้องลดเสมอไหม

ไม่ควรลดแบบสุ่ม

ให้ดูว่า Geometry นั้นผู้เล่นมองเห็นจริงหรือไม่

ตัวอย่างควรพิจารณาตัด

Geometry ด้านในที่ไม่มีใครเห็น
รายละเอียดจิ๋วบนหลังคา
Decoration ที่มองไม่เห็นจาก Gameplay Area

แต่ควรรักษา

  • Silhouette

  • ประตู

  • ช่องทางเดิน

  • ขอบอาคารสำคัญ

LOD ควรเป็น Simplified Version มากกว่า Model ที่ถูกลดจนเสียรูป.

⑩ อย่า Optimize ด้วย Polygon อย่างเดียว

Cfx.re ระบุว่า LOD Model ควรลดทั้ง

Geometry
+
Materials

ไม่ใช่เพียง Geometry.

ดังนั้น Model Polygon ลดลงแต่ยังมี Materials จำนวนมากก็ยังควรถูกตรวจต่อ

⑪ Materials เยอะควรลดไหม

ควรพิจารณารวม Materials ที่สามารถใช้ Texture/Shader ร่วมกันได้ โดยไม่ทำลายคุณภาพและ Workflow ของ Asset

ตัวอย่างอาคารหนึ่งหลังไม่จำเป็นต้องมี Materials แยกจำนวนมากสำหรับพื้นผิวที่แทบไม่ต่างกัน

แต่ไม่ควร Merge Materials แบบสุ่ม เพราะอาจทำให้

  • UV ผิด

  • Shader ผิด

  • Texture References เสีย

⑫ ตรวจ YTD และ Texture

Texture เป็นอีกส่วนที่ควรตรวจอย่างหนัก

โดยเฉพาะ Assets ที่ใช้

4K
8K

หลายไฟล์

Texture Resolution สูงควรใช้เฉพาะจุดที่ผู้เล่นมองเห็นรายละเอียดจริง ไม่ใช่ทุก Object

FiveM มี strmem สำหรับแสดง Streaming Memory ที่ Streaming Assets แต่ละรายการใช้ รวมถึงภาพรวม Memory.

⑬ ใช้ strmem หา Asset ที่ใช้ Memory

เปิด Developer Mode แล้วใช้

strmem true

Cfx.re ระบุว่า strmem แสดง Streaming Memory ของ Assets รายตัวและ Global Overview.

นี่มีประโยชน์มากเมื่อ Server มี

Maps
MLO
Cars
Clothes
Props

พร้อมกันจำนวนมาก

⑭ Texture 4K ทุกชิ้นไม่จำเป็น

ตัวอย่าง

ป้ายขนาดใหญ่

อาจสมเหตุสมผลที่จะละเอียด

ขวดเล็กบนโต๊ะ

ไม่จำเป็นต้องใช้ 4K

Object มองจากไกล

ไม่จำเป็นต้องเก็บรายละเอียดระดับเดียวกับ Object ที่ผู้เล่นยืนติด

หลักคือ Resolution ต้องสัมพันธ์กับ ขนาดบนหน้าจอและระยะใช้งาน

⑮ ลด Texture ต้องระวังอะไร

อย่าลดทุก Texture เท่ากัน

แยกก่อนว่าเป็น

Diffuse
Normal
Specular
Alpha
Logo

เพราะ Asset Pipeline ของ Cfx.re ใช้ Texture หลายประเภทกับ Shader Materials และ UV Mapping.

ลดผิดประเภทอาจทำให้

  • Normal แตก

  • Alpha เสีย

  • Logo อ่านไม่ได้

⑯ Shared Texture ควรใช้หรือไม่

ถ้า Objects หลายตัวใช้ Texture เดียวกันจริง การจัด Shared Texture Dictionary อย่างเป็นระบบสามารถลด Duplicate Content ใน Project ได้

แต่ต้อง Documentation ให้ชัดว่า YDR ใดใช้ Texture Set ใด

ไม่เช่นนั้นลบ Shared YTD หนึ่งตัวอาจทำให้ Assets หลายตัวขาวพร้อมกัน

⑰ ลบ Texture ที่ไม่ได้ใช้

สามารถลดขยะใน Asset ได้ แต่ต้องตรวจ Reference ก่อน

อย่าลบเพราะ

ชื่อ Texture ดูไม่เกี่ยว

เพียงอย่างเดียว

ควรเปิด Asset ใน Tooling และตรวจ Material References ก่อน

⑱ LOD คือหัวใจของ Map ใหญ่

สำหรับ

  • อาคารใหญ่

  • Airport

  • Island

  • Racetrack

  • City Expansion

ควรมี LOD ที่เหมาะสม

Cfx.re Workflow ใช้ HD Model + LOD Model โดย LOD ลด Geometry/Materials และเชื่อมผ่าน HD/LOD YMAP Hierarchy.

⑲ อย่าเพิ่ม LodDist สูงมากเพื่อแก้ Pop-in

การเพิ่ม

LodDist

อย่างเดียวอาจทำให้ HD Model ถูกใช้ไกลขึ้นแทนที่จะลดภาระ

แนวทางที่เหมาะกว่าคือ

HD Model
↓
LOD Model
↓
ระยะ Transition ที่เหมาะสม

ตาม Workflow ของ Cfx.re.

⑳ ตรวจ HD และ LOD ว่าตรงตำแหน่งกัน

Official LOD Workflow วาง HD และ LOD Entities ที่ตำแหน่งเดียวกันก่อนเชื่อม Hierarchy.

ถ้าไม่ตรงอาจเกิด

ใกล้ → อาคารจุด A
ไกล → อาคารกระโดดไปจุด B

ซึ่งดูเหมือน Streaming Error แต่จริง ๆ เป็น LOD Transform Problem

㉑ ตรวจ LodLevel

ใน Workflow ตัวอย่างของ Cfx.re

HD ใช้

LODTYPES_DEPTH_HD

และ LOD ใช้

LODTYPES_DEPTH_LOD

พร้อมกำหนด LodDist/ChildLodDist และ Parent/Child Relationship.

หาก Level ผิด Transition อาจทำงานไม่ถูกต้อง

㉒ ตรวจ Parent/Child YMAP

Official LOD Workflow ใช้ LOD YMAP เป็น Parent ของ HD YMAP และกำหนด Hierarchy ระหว่าง Entities.

หาก Merge Map แล้ว

  • เปลี่ยนชื่อ YMAP

  • ลบ LOD YMAP

  • ทำ Parent Reference หาย

LOD อาจพังแม้ Models ยังอยู่ครบ

㉓ Generate _manifest.ymf ตาม Workflow

หลังสร้าง HD/LOD Hierarchy Cfx.re ให้ใช้ CodeWalker Manifest Generator และบันทึก _manifest.ymf เพื่อให้ Setup โหลดตาม Workflow ตัวอย่าง.

อย่าลบไฟล์นี้เพียงเพราะมีขนาดเล็กหาก Project ใช้มัน

㉔ Calculate Extents และ Flags

สำหรับ YMAP Workflow Cfx.re ให้ใช้

Calculate Extents
Calculate All Flags

ก่อนบันทึก Map.

หลังเพิ่ม/ลบ Props หรือแก้ Map Structure จึงควรคำนวณใหม่ตาม Workflow

㉕ Props คือจุดที่ Map มักหนักโดยไม่รู้ตัว

MLO ร้านเล็ก ๆ อาจมี

ขวด 300
จาน 150
เก้าอี้ 80
Decoration 500

ทำให้จำนวน Entities สูงมากทั้งที่พื้นที่เล็ก

ให้ถามทุก Object ว่า

ผู้เล่นเห็นจริงไหม
จำเป็นกับ Gameplay ไหม

ถ้าไม่ ควรพิจารณาลด

㉖ อย่าใส่ Props ที่มองไม่เห็น

ตัวอย่าง

  • ของตกแต่งหลังผนัง

  • Model ซ่อนใต้พื้น

  • Objects ทดลอง

  • Props ที่ถูก Asset อื่นปิดทับ

ควรถูกลบจาก Production Map หากยืนยันว่าไม่ใช้

การลดจำนวน Entities ช่วยให้ Scene และ Resource มีความเรียบง่ายขึ้น

㉗ Duplicate Props ต้องตรวจ

หลัง Merge YMAP อาจเกิด

โต๊ะ 2 ตัวซ้อน
กำแพง 2 ชั้น
ไฟ 2 ชุด

นอกจากทำให้ Rendering ซ้ำ ยังอาจเกิด Z-fighting หรือ Collision ซ้ำ

ดังนั้นควรตรวจ Duplicate Entities ใน CodeWalker ก่อน Production

㉘ Map Conflict ทำให้ดูเหมือน Map หนักได้

ถ้า Maps สอง Resources วาง Geometry ตำแหน่งเดียวกัน ผู้เล่นอาจต้อง Render Content ซ้ำโดยไม่จำเป็น

ทดสอบ

Map A ON
Map B OFF

เทียบกับ

Map A ON
Map B ON

หาก FPS ลดเฉพาะรอบสอง ให้ตรวจ Conflict ก่อน Optimize Model ตัวเดียว

㉙ Collision ก็ต้อง Optimize

Cfx.re Collision Workflow รองรับทั้ง Collision Mesh และ Primitive Shapes เช่น Box ผ่าน Bounds Structure.

จึงไม่จำเป็นต้องใช้ Visual Geometry ทุก Polygon เป็น Collision

ควรให้ Collision

ง่าย
แต่ Gameplay ถูกต้อง

㉚ อย่า Copy Visual Mesh เป็น Collision ทั้งก้อน

อาคารอาจมีรายละเอียด

ร่อง
ขอบ
น็อต
Decoration

ซึ่งผู้เล่นไม่จำเป็นต้องชนทั้งหมด

Primitive หรือ Simplified Mesh สามารถเหมาะกว่าในหลายพื้นที่ โดย Cfx.re รองรับ Collision Shapes ผ่าน Bound GeometryBVH Workflow.

㉛ Collision ซ้ำต้องลบ

Map A และ Map B อาจมี Collision ตำแหน่งเดียวกัน

ผลคือ

  • เดินติด

  • รถเด้ง

  • Physics แปลก

  • Invisible Wall

นี่เป็น Conflict มากกว่า Performance เพียงอย่างเดียว แต่ควรถูกแก้ระหว่าง Optimization

㉜ ใช้ strdbg ตรวจ Streaming

ใน Developer Mode ใช้

strdbg true

Cfx.re ระบุว่า strdbg แสดงสิ่งที่ GTA Streamer กำลังโหลดและช่วยตรวจปัญหา Streaming เช่น World หยุดโหลด.

เหมาะเมื่อ

  • Object หาย

  • Map โหลดไม่ทัน

  • Streaming สะดุด

㉝ ใช้ strlist ตรวจ Entries

ใช้

strlist true

เพื่อเปิด Interface แสดง Entries ที่ลงทะเบียนอยู่ใน GTA Streamer และสถานะปัจจุบัน.

ช่วยแยกว่า Asset ถูก Stream อยู่จริงหรือไม่

㉞ Developer Commands อาจต้องเปิด Developer Mode

Cfx.re ระบุว่า resmon, strdbg และ Developer Commands หลายตัวอาจถูกปิดใน Production Mode และต้องเปิด Developer Mode ตามวิธีที่ Documentation กำหนด.

ดังนั้นถ้าเจอ

Access denied

ไม่ได้หมายความว่าคำสั่งไม่มีอยู่

㉟ ใช้ cl_drawperf ดู GPU ก่อน

เปิด

cl_drawperf true

FiveM จะแสดง FPS พร้อม CPU/GPU Metrics รวมถึง Ping และ Packet Loss.

ถ้า

GPU Usage สูง
FPS ลด
เมื่อมอง Map

ควรเน้น Visual Assets มากกว่า Server Network

㊱ Ping สูงไม่ใช่สาเหตุของ FPS ตก

cl_drawperf แยก Ping, Packet Loss, CPU, GPU และ FPS เป็นคนละ Metrics.

ดังนั้น

Ping ต่ำ
FPS ต่ำ

สามารถเกิดพร้อมกันได้

และแสดงว่าควรตรวจ Rendering/Client Performance เพิ่ม

㊲ Map โหลดช้าไม่ใช่ Internet เสมอไป

ถ้า Assets ถูก Download แล้ว แต่

Texture ค่อยชัด
Object ค่อยโผล่

ให้ตรวจ GTA Streamer และ Streaming Memory ด้วย strdbg, strlist และ strmem.

อย่าเพิ่ม Network Bandwidth ก่อนรู้ว่าปัญหาอยู่ตรงไหน

㊳ Map/Collision เยอะมากใช้ save_gta_cache ได้ไหม

ได้ในกรณีที่ตรงวัตถุประสงค์

Cfx.re ระบุว่า

save_gta_cache <resource name>

ใช้สร้าง Cache Data สำหรับ Resource ที่มี Map หรือ Collision Files จำนวนมาก เพื่อช่วยให้ Initial Loading ของผู้เล่นเร็วขึ้น.

ตัวอย่าง

save_gta_cache city_map

㊴ save_gta_cache ต้องทำอะไรต่อ

Cfx.re ระบุว่า Cache File ที่สร้างขึ้นต้องถูกนำไปไว้ที่ Root Folder ของ Resource และประกาศใน fxmanifest.lua ผ่าน files.

ตัวอย่างโครงสร้างเชิงแนวคิด

city_map/
├── fxmanifest.lua
├── city_map_cache_y.dat
└── stream/

และ Manifest เช่น

files {
    'city_map_cache_y.dat'
}

ชื่อไฟล์จริงต้องตรงกับ Cache ที่สร้าง.

㊵ save_gta_cache ไม่ใช่ Map Optimizer

มันไม่ได้

  • ลด Polygon

  • ลด Texture

  • สร้าง LOD

  • ลบ Props

  • Simplify Collision

  • แก้ Script

หน้าที่ตาม Documentation คือช่วย Initial Loading สำหรับ Resource ที่มี Map/Collision Files จำนวนมาก.

ดังนั้น Asset ยังหนักก็ต้อง Optimize Asset อยู่ดี

㊶ ไม่ต้องใช้ save_gta_cache กับทุก MLO

Cfx.re ระบุให้ใช้กับ Resources ที่มี Collision หรือ Map Files ในปริมาณมาก.

ร้านเล็กหรือ MLO ขนาดเล็กไม่ควรถูกใส่ Cache Workflow เพียงเพราะคิดว่า “มี Cache แล้วเร็วกว่าเสมอ”

ต้องดูอาการจริง

㊷ แยก Map Resources ให้ Debug ง่าย

ตัวอย่าง

resources/
└── [maps]/
    ├── police/
    ├── hospital/
    ├── island/
    ├── airport/
    └── businesses/

ดีกว่า Merge Maps ทุกแห่งเป็น Resource เดียว หากไม่มีเหตุผลทางเทคนิคให้รวม

Resource ที่แยกช่วยให้เปิด/ปิดเพื่อทำ Isolation Test ได้ง่าย

㊸ ไม่จำเป็นต้อง Merge เพื่อลดจำนวน Resources

จำนวน Resource ไม่ใช่ตัววัด Performance โดยตรง

Resource หนึ่งอาจหนักมากกว่า 20 Resources เล็ก ๆ

ควรวัดจาก

Asset Complexity
Streaming
Runtime

มากกว่าจำนวน Folder

FiveM resmon ใช้ดู Resource CPU/Memory ขณะเดียวกัน strmem ใช้ดู Streaming Memory ของ Assets จึงสามารถวัดสองด้านแยกกัน.

㊹ แยก Map Asset ออกจาก Script ถ้าเหมาะสม

ตัวอย่าง

police_map/
police_doorlock/
police_job/

ช่วยให้

Map FPS Problem

ไม่ปนกับ

Script CPU Problem

และสามารถใช้ Resmon/Profiler วิเคราะห์ Runtime ได้ง่ายขึ้น.

㊺ อย่าลบ fxmanifest.lua หรือ Map Metadata

Resource Manifest คือส่วนสำคัญของ Resource และ FiveM ใช้ fxmanifest.lua เพื่อกำหนด Metadata, Scripts, Files และข้อมูลอื่นของ Resource.

Optimization ไม่ควรหมายถึง

ลบไฟล์ที่ไม่รู้จัก

เพียงเพราะไฟล์มีขนาดเล็ก

㊻ lua54 'yes' ไม่ต้องเพิ่มเพื่อ Performance

Resource Manifest Documentation ปัจจุบันระบุว่า lua54 Deprecated แล้ว และ Lua Scripts ใช้ Lua 5.4 เป็นค่าใช้งานมาตั้งแต่เดือนมิถุนายน 2025.

ดังนั้นเพิ่ม

lua54 'yes'

ไม่ได้เป็นเทคนิค Optimize Map

㊼ ตรวจ Scripts ที่ทำ Loop ทุก Frame

หาก Map Resource มี Client Script แบบ

while true do
    Wait(0)
    -- งานจำนวนมาก
end

ควรตรวจว่าจำเป็นต้องทำทุก Frame หรือไม่

Cfx.re ระบุว่า Unoptimized Loops สามารถเป็นสาเหตุของ Resource Performance Problems และ Hitch Warnings ได้.

ถ้า Logic ไม่ต้อง Update ทุก Frame ควรปรับตามความเหมาะสม

㊽ Door Script ก็ทำ Map หนักได้

MLO อาจมี Map Asset เบา แต่ Door/Interaction Script หนัก

ดังนั้นหาก

MLO ON → FPS/CPU Resource แย่

ให้ใช้

resmon true

ดูว่า Resource Time สูงหรือไม่.

ถ้าสูง ควร Optimize Script เพิ่ม ไม่ใช่ลด YTD อย่างเดียว

㊾ Loading Screen ช้าไม่เท่ากับ Map Streaming ช้า

ต้องแยก

เข้า Server ช้า

ตรวจ Resource Download/Initial Loading

เข้า Server แล้ว Map ค่อยขึ้น

ตรวจ Streaming

FPS ต่ำในพื้นที่

ตรวจ Rendering/Assets

Server Hitch

ตรวจ Script Runtime

การแยกอาการก่อนช่วยเลือกเครื่องมือถูกตัว

㊿ Optimize Asset ทีละกลุ่ม

ถ้า Map ใหญ่ ให้แบ่งเป็น

Buildings
Textures
Props
Collision
LOD
Scripts

แล้ว Optimize ทีละกลุ่ม

อย่าแก้ทั้งหมดพร้อมกัน เพราะเมื่อเกิด Asset หายจะไม่รู้ว่าการเปลี่ยนแปลงใดเป็นต้นเหตุ

51. วิธีหา Asset ที่ทำ FPS ตกแบบ A/B Test

ตัวอย่าง

รอบ A

Buildings + Props

รอบ B

Buildings อย่างเดียว

ถ้า FPS ดีขึ้นชัดเมื่อ Props ถูกปิด แสดงว่าควรตรวจ Props ต่อ

ทำแบบเดียวกันกับ

Texture Pack
MLO
Collision
Scripts

เพื่อหากลุ่มต้นเหตุ

52. Test ใน Client สเปกระดับกลาง

อย่าใช้เครื่อง Developer ระดับสูงเพียงเครื่องเดียว

Map Production ควรทดสอบ Client ที่ใกล้เคียงผู้เล่นทั่วไปด้วย

เพราะ Asset ที่ Developer เห็น 100 FPS อาจสร้าง Streaming/VRAM Pressure กับเครื่องระดับกลาง

ใช้ตำแหน่งและ Graphics Settings เดิมทุกครั้งเพื่อให้ผลเปรียบเทียบมีความหมาย

53. ทดสอบตอนมีรถและผู้เล่นด้วย

Scene จริงอาจมี

Map
+
MLO
+
Custom Cars
+
Clothes
+
Players
+
HUD

พร้อมกัน

strmem สามารถช่วยดู Streaming Memory ภาพรวมของ Streaming Assets ขณะ Stress Test ได้.

Map ที่ดีใน Empty Test Server อาจยังหนักใน Production Environment

54. Optimize เฉพาะ Map อาจไม่พอ

สมมติ Map ใช้ Asset Budget ปกติ แต่พื้นที่นั้นเป็น Car Meet ที่มี Custom Vehicles จำนวนมาก

FiveM มี str_maxVehicleTextureRes สำหรับจำกัด Maximum Vehicle Texture Resolution และ Documentation ระบุว่าสามารถช่วยลดโอกาส Physical Memory หมดโดยแลกกับคุณภาพภาพ.

นี่แสดงให้เห็นว่า Performance ต้องมอง Asset Budget ทั้ง Scene ไม่ใช่ Map อย่างเดียว

55. อย่าใช้ Client Setting แทนการ Optimize Server Content

การบอกผู้เล่นทุกคนว่า

ลด Graphics

สามารถซ่อนปัญหาได้บางส่วน แต่ถ้า Map

  • Models หนักเกิน

  • Texture ใหญ่เกิน

  • ไม่มี LOD

  • Props ซ้ำ

ควรแก้ Content ต้นทางด้วย

56. Checklist ก่อนและหลัง Optimize

ก่อน Production ตรวจ

☐ ไม่มี Duplicate Map
☐ ไม่มี Duplicate Props
☐ YDR ไม่ละเอียดเกินจำเป็น
☐ Materials ถูกจัดการ
☐ YTD Resolution เหมาะสม
☐ Shared Texture ไม่ซ้ำ
☐ มี LOD สำหรับ Asset ใหญ่
☐ LodDist เหมาะสม
☐ HD/LOD Hierarchy ถูก
☐ Collision ไม่ละเอียดเกิน
☐ ไม่มี Collision ซ้อน
☐ Extents/Flags ถูกคำนวณ
☐ ไม่มี Script Loop หนัก
☐ resmon อยู่ในระดับเหมาะสม
☐ strmem ถูกตรวจ
☐ strdbg/strlist ไม่มี Streaming Issue ชัดเจน
☐ FPS ก่อน/หลังถูกบันทึก
☐ Test Client สเปกระดับกลาง

เครื่องมือ Streaming และ Runtime ที่กล่าวถึงมีอยู่ใน FiveM Client Developer Commands และ Resource Monitor อย่างเป็นทางการ.

ตารางสรุป FiveM Map Optimization

อาการสิ่งที่ควร Optimize
FPS ตกเมื่อมองอาคารYDR / Materials / LOD
Texture ค่อยชัดYTD / Streaming Memory
อาคารโผล่ช้าLOD / Streaming
ไกลแล้วหายเร็วLodDist / LOD
Props เยอะมากลด Entities
รถเด้ง/เดินติดCollision
MLO เดี่ยวเร็ว เปิดหลาย Map ช้าAsset Budget / Conflict
Resource CPU สูงScript / Resmon / Profiler
World หยุดโหลดstrdbg
ต้องการดู Streaming Entriesstrlist
ต้องการดู Streaming Memorystrmem
Map/Collision จำนวนมากโหลดแรกช้าsave_gta_cache
Ping ปกติแต่ FPS ต่ำClient Rendering
Server HitchScript Runtime

Workflow Optimize Map FiveM ที่แนะนำ

ใช้ลำดับนี้

Backup
↓
วัด FPS/CPU/GPU
↓
ทดสอบ Map เดี่ยว
↓
ตรวจ resmon
↓
ตรวจ YDR
↓
ตรวจ Materials
↓
ตรวจ YTD
↓
ตรวจ Props
↓
ตรวจ LOD
↓
ตรวจ Collision
↓
ตรวจ Map Conflict
↓
ดู strmem
↓
ดู strdbg / strlist
↓
Optimize Script
↓
Stress Test
↓
วัดผลใหม่
↓
Production

FiveM แยกเครื่องมือ Asset, Streaming และ Runtime ออกเป็นคนละส่วน จึงควร Debug ตาม Layer แทนการแก้ทุกอย่างพร้อมกัน.

สิ่งที่ไม่ควรทำในการ Optimize Map

หลีกเลี่ยง

ลด Texture ทุกไฟล์เหลือเล็กที่สุด
ลด Polygon ทุก Model แบบ Batch
เพิ่ม LodDist สูงสุดทุก Object
ลบ YTYP/YMAP/YBN ที่ไม่รู้จัก
Merge Maps ทั้งหมดเป็น Resource เดียว
ใช้ save_gta_cache กับทุก Map
ล้าง Cache เป็นคำตอบแรก
เพิ่ม RAM Server เพื่อแก้ Client FPS

Optimization ที่ดีต้องมี Measurement → Change → Test → Compare

ไม่ใช่เปลี่ยนหลายอย่างพร้อมกัน

Map Optimize ดีควรเป็นอย่างไร

Map ที่ Optimize ดีควร

  • ใกล้แล้วยังสวย

  • ไกลใช้รายละเอียดเท่าที่จำเป็น

  • Texture ไม่ใหญ่เกินเหตุ

  • Props ไม่ซ้ำ

  • Collision ถูกและเรียบง่ายพอ

  • ไม่มี Map Conflict

  • Streaming ไม่สะดุดผิดปกติ

  • Script Resource ไม่กิน CPU สูง

  • Client ระดับกลางยังเล่นได้ดี

  • Initial Loading สมเหตุสมผล

Cfx.re LOD Workflow เน้น HD/LOD Models และ Simplified Geometry/Materials ขณะที่ Client Developer Commands มีเครื่องมือสำหรับดู Streaming และ Resource Runtime จึงสามารถ Optimize จากข้อมูลจริงได้.

สรุป วิธี Optimize Map FiveM ให้โหลดเร็วและลด FPS ตก

การ Optimize Map FiveM ที่ได้ผลควรดูทั้งหมด

YDR
→ Geometry / Model

YTD
→ Texture

YTYP
→ Archetype

YMAP
→ Entities / Placement / LOD

YBN / Bounds
→ Collision

Scripts
→ Runtime

Streaming
→ Memory / Asset Loading

สำหรับ Asset ขนาดใหญ่ Cfx.re แนะนำ Workflow ที่ใช้ HD และ LOD Models โดย LOD ลด Geometry และ Materials แล้วเชื่อมผ่าน YMAP Hierarchy พร้อมกำหนดระยะอย่างเหมาะสม.

สำหรับ Streaming สามารถใช้

strdbg true
strlist true
strmem true

เพื่อดูสิ่งที่ GTA Streamer กำลังโหลด รายการ Streaming Entries และ Memory ที่ Assets ใช้.

สำหรับ Resource Script ใช้

resmon true

และ Profiler เพื่อหา Resource หรือ Code ที่ใช้เวลาประมวลผลสูง.

และหาก Resource มี Map/Collision Files จำนวนมากจน Initial Loading ช้า FiveM มี

save_gta_cache <resource name>

สำหรับสร้าง Cache Data และนำไฟล์ที่ได้ไปประกาศใน Resource Manifest ตาม Workflow อย่างเป็นทางการ.

แนวทางของ comsiam คือเริ่มจากการวัดผลก่อน Optimize เสมอ จากนั้นแก้ทีละ Layer แล้ววัดใหม่ เพราะเป้าหมายไม่ใช่ทำให้ไฟล์เล็กที่สุด แต่คือทำให้ Map สวยพอ โหลดเร็ว ใช้ทรัพยากรสมเหตุสมผล และเล่นได้ลื่นในสภาพ Server จริง

Comments

Popular posts from this blog

FiveM ยังน่าเล่นไหม? Enhanced เปลี่ยน FiveM แค่ไหน

FiveM คืออะไร เล่นอย่างไร สำหรับมือใหม่ เริ่มต้นตั้งแต่ศูนย์

วิธีตั้ง Admin Permission ด้วย add_ace และ add_principal FiveM แบบละเอียด