FiveM Resmon คืออะไร? วิธีหา Script กินเครื่อง

FiveM Resmon หรือ Resource Monitor คือเครื่องมือสำหรับตรวจว่า Resource ฝั่ง Client ตัวไหนกำลังใช้ CPU และ Memory มากผิดปกติ เหมาะสำหรับแก้ปัญหา FiveM FPS ตก กระตุก Micro-stutter หรือเข้า Server แล้วเครื่องทำงานหนัก

คำสั่งเปิด Resmon คือ

resmon true

และปิดด้วย

resmon false

Resmon จะแสดง Resource แต่ละตัวพร้อมข้อมูลสำคัญ เช่น

  • CPU Usage ในหน่วยมิลลิวินาที

  • Memory Usage

  • Resource Name

ทำให้ Developer สามารถเปลี่ยนจากการเดาว่า

“Script ไหนทำ FPS ตก?”

เป็นการตรวจจากข้อมูลจริง

อย่างไรก็ตาม Resmon เป็นเครื่องมือ ฝั่ง Client เป็นหลัก ไม่ใช่เครื่องมือสำหรับหา FXServer CPU สูงหรือ Server Thread Hitch โดยตรง หากปัญหาอยู่ฝั่ง Server ควรใช้ Profiler, txAdmin และ Server Metrics เพิ่มเติม

บทความนี้จาก comsiam จะอธิบายวิธีใช้ FiveM Resmon ตั้งแต่เริ่มต้น วิธีอ่านค่า วิธีทดสอบ Script และวิธีแยกว่าปัญหาเกิดจาก Client Script, NUI, Asset หรือ Server

① FiveM Resmon คืออะไร?

Resmon ย่อมาจาก

Resource Monitor

เป็นเครื่องมือ Developer ของ FiveM สำหรับดูการใช้ทรัพยากรของ Resource

แนวคิดง่าย ๆ:

FiveM Client
├── hud
├── inventory
├── phone
├── police
├── garage
└── vehicle-script

Resmon ช่วยบอกว่า Resource แต่ละตัวใช้ CPU และ Memory เท่าไรบนเครื่องผู้เล่น

② Resmon ใช้ทำอะไร?

เหมาะสำหรับหาอาการ เช่น

  • FPS ต่ำหลังเข้า Server

  • FPS ลดหลังติดตั้ง Script ใหม่

  • เกมกระตุกเป็นช่วง

  • เปิด Phone แล้ว FPS ตก

  • เข้า Garage แล้วกระตุก

  • เปิด Inventory แล้วหน่วง

  • HUD กินเครื่อง

  • Resource ใช้ Memory สูง

จึงเป็นเครื่องมือสำคัญมากสำหรับ Client Optimization

③ วิธีเปิด FiveM Resmon

เข้า Server แล้วเปิด F8 Console

จากนั้นพิมพ์

resmon true

Resource Monitor จะปรากฏขึ้นบนหน้าจอ

④ วิธีปิด Resmon

ใช้

resmon false

เมื่อทดสอบเสร็จ

ไม่จำเป็นต้องเปิดค้างตลอด Gameplay

⑤ Resmon ดูค่าอะไรบ้าง?

ข้อมูลหลักที่เอกสาร Cfx.re ระบุคือ

  • Resource

  • CPU Usage

  • Memory Usage

โดย CPU จะแสดงในรูปเวลาประมวลผลของ Resource

จึงช่วยเปรียบเทียบ Resource ที่ทำงานอยู่พร้อมกันได้ง่าย

⑥ ค่า CPU ใน Resmon หมายถึงอะไร?

เป็นเวลาที่ Resource ใช้ในการประมวลผลฝั่ง Client

ถ้า Resource ใช้เวลานานขึ้น Client มีเวลาน้อยลงสำหรับ

  • Game Engine

  • Rendering

  • Physics

  • Resources อื่น

จึงสามารถสัมพันธ์กับ FPS และ Micro-stutter ได้

⑦ ค่า Resmon ยิ่งต่ำยิ่งดีไหม?

โดยหลัก Resource ควรทำงานเฉพาะเท่าที่จำเป็น

แต่ไม่ควรตัดสินจากตัวเลขเดียวว่า

0.01 = ดี
0.10 = แย่

โดยไม่มี Context

Resource ที่มี Gameplay ซับซ้อนย่อมต้องใช้ CPU มากกว่า Script Config ธรรมดา

สิ่งสำคัญคือดู

  • ค่าเฉลี่ย

  • Spike

  • Feature ที่กำลังทำงาน

  • จำนวน Resource รวม

  • FPS จริง

ร่วมกัน

⑧ อย่ายึดตัวเลข 0.00 ms มากเกินไป

Resource ที่แสดงประมาณ

0.00 ms

ไม่ได้พิสูจน์ว่า Resource ทั้งระบบ Optimize สมบูรณ์

อาจเป็นเพราะ

  • Resource Idle

  • Sampling/Rounding

  • Feature ยังไม่ได้ทำงาน

และยังมี Server-side Code ที่ Resmon ฝั่ง Clientไม่ได้วัด

⑨ ต้องทดสอบตอน Resource ทำงานจริง

สมมติกำลังตรวจ Phone

อย่าเพียงยืนเฉย ๆ แล้วดูค่า

ให้ลอง

  1. เปิด Phone

  2. เปิด Contacts

  3. เปิด Messages

  4. Scroll

  5. โทร

  6. ปิด Phone

แล้วสังเกต CPU และ Memory

จึงจะเห็น Workload จริง

⑩ Inventory ก็ต้องทดสอบตอนใช้งาน

ลอง

  • เปิด Inventory

  • Drag Item

  • Use Item

  • Split Item

  • Drop Item

  • เปิด Stash

หาก Resmon กระโดดสูงเฉพาะตอนเปิด Inventory จึงค่อยเจาะ Resource นั้น

⑪ Garage ต้องทดสอบอย่างไร?

ลอง

เปิด Garage
↓
โหลดรายชื่อรถ
↓
Preview
↓
Spawn Vehicle
↓
Store Vehicle

แล้วดูว่า CPU Spike เกิดตรงขั้นตอนไหน

ช่วยแยกระหว่าง

  • UI

  • Vehicle Script

  • Streaming

  • Server Response

ได้ดีขึ้น

⑫ HUD ต้องดูตอนขับรถด้วย

HUD บางตัว Idle เบามาก

แต่ตอนเข้า Vehicle เริ่ม Update

  • Speed

  • Fuel

  • Gear

  • RPM

  • Seatbelt

  • Engine

ทุก Frame

CPU จึงเพิ่มขึ้นเฉพาะตอนขับรถ

⑬ Script ที่ใช้ Wait(0) มักต้องตรวจ

ตัวอย่าง:

CreateThread(function()
    while true do
        Wait(0)

        -- logic
    end
end)

Wait(0) ไม่ได้ผิดเสมอ

แต่หมายถึง Logic ทำงานถี่มาก

ถ้างานข้างในหนัก Resmon สามารถเห็นผลชัด

⑭ Wait(0) เหมาะกับอะไร?

เช่น

  • ตรวจ Input

  • Draw Marker บางกรณี

  • Render Text

  • Interaction ที่ต้องตอบสนองทุก Frame

แต่ไม่ใช่งานทุกอย่างต้องทำถี่ขนาดนี้

⑮ งานอะไรไม่ควร Wait(0)?

ตัวอย่าง

  • ตรวจ Job

  • Refresh Player Data

  • เช็กสถานะระยะไกล

  • Scan ร้านทั้งหมด

  • Poll Config

  • Save Data

งานเหล่านี้มักใช้ Interval ที่ยาวกว่าได้

⑯ Adaptive Sleep ช่วยลด Resmon

แทนที่จะทำ

Wait(0)

ตลอดเวลา

สามารถใช้แนวคิด

อยู่ไกลจุด Interaction
→ Wait 1000

เข้าใกล้
→ Wait 250

อยู่ในระยะใช้งาน
→ Wait 0

ช่วยลด Client CPU ตอนผู้เล่นไม่ได้ใช้ Feature

⑰ Distance Check จำนวนมากทำ Resource หนักได้

สมมติ Resource มี 500 จุด

แล้วทำ

ทุก Frame
↓
คำนวณระยะทางผู้เล่นกับ 500 จุด

จะมี Calculation จำนวนมาก

ควรใช้

  • Zone Systems

  • Spatial Filtering

  • Cache จุดใกล้เคียง

ตามความเหมาะสม

⑱ GetGamePool หรือ Entity Scan ต้องระวัง

Script ที่ Scan

  • Vehicles

  • Peds

  • Objects

จำนวนมากทุก Frameสามารถทำ Client หนัก

โดยเฉพาะพื้นที่ที่มี Entity เยอะ

⑲ Resource เบาตอนเมืองโล่งแต่อาจหนักตอนเมืองคนเยอะ

Resource ที่ Loop Entities อาจแสดง

พื้นที่โล่ง → ต่ำ
กลางเมือง → สูง

จึงต้องทดสอบหลาย Location

⑳ ทดสอบพื้นที่ที่ผู้เล่นรวมตัว

เช่น

  • โรงพยาบาล

  • สถานีตำรวจ

  • Garage กลาง

  • Event Area

เพราะ Client ต้องจัดการ Player/Vehicle/Entity มากขึ้น

Resource ที่ Scale ตาม Entity Count จะเห็นปัญหาชัดตรงนี้

㉑ Resmon ใช้หา Server CPU สูงได้ไหม?

ไม่ใช่เครื่องมือหลัก

Resmon ตามเอกสาร Cfx.re เป็น Resource Monitor ฝั่ง Client

ถ้า FXServer CPU สูง ให้ใช้

  • Server Profiler

  • txAdmin

  • Server Metrics

แทน

㉒ ทำไมต้องแยก Client กับ Server?

Resource หนึ่งตัวอาจประกอบด้วย

client.lua
server.lua
html/

Resmon อาจแสดง Client เบา

แต่ server.lua กิน CPU มาก

หรือกลับกันก็ได้

จึงไม่ควรสรุปทั้ง Resource จาก Resmonอย่างเดียว

㉓ Server Lag แต่ Resmon ปกติเกิดได้ไหม?

ได้

ตัวอย่าง:

FPS = 100
Resmon = ปกติ

แต่

  • Inventory ตอบช้า

  • Garage Delay

  • เงินเข้าช้า

อาจเป็น

  • Server Hitch

  • SQL

  • Server Resource

ต้องตรวจฝั่ง FXServer

㉔ Client FPS ต่ำแต่ Server ลื่นก็เกิดได้

ถ้า

  • HUD หนัก

  • NUI หนัก

  • Vehicle Pack หนัก

  • MLO หนัก

  • Client Loop หนัก

Server CPU อาจต่ำมาก แต่ Player ยัง FPS ต่ำ

นี่คือเหตุผลที่ Resmon มีประโยชน์

㉕ Resmon กับ Profiler ต่างกันอย่างไร?

Resmon

ดูภาพรวม Resource CPU/Memory ได้รวดเร็ว

Profiler

เจาะลึกถึง Timeline, Resource Tick และ Code ที่ใช้เวลามาก

Workflow ที่ดีคือ

Resmon
↓
พบ Resource ต้องสงสัย
↓
Profiler
↓
หา Thread / Code

㉖ เมื่อไรควรเปลี่ยนจาก Resmon ไป Profiler?

เมื่อรู้แล้วว่า Resource ใดสูง แต่ยังไม่รู้ว่า

  • Function ไหน

  • Thread ไหน

  • บรรทัดไหน

เป็นตัวการ

Profiler ถูกออกแบบมาสำหรับเจาะลึกตรงนี้

㉗ FiveM Profiler ใช้ Client ได้ไหม?

ได้

เอกสาร Cfx.re ระบุว่า Profiler สามารถใช้ทั้ง

  • Server-side

  • Client-side

ฝั่ง Client เหมาะกับหา FPS Drop หรือ Micro-stutter ที่ต้องลงลึกกว่า Resmon

㉘ เริ่ม Client Profiler อย่างไร?

เปิด F8 Console แล้วใช้แนวคิด

profiler record <frames>

จากนั้นตรวจ Profile ตาม Workflow ที่ Cfx.re รองรับใน Runtime นั้น

Resmon ใช้ค้นหา Candidate

Profiler ใช้พิสูจน์ Root Cause

㉙ Profiler หาได้ถึงบรรทัด Code ไหม?

Documentation ของ Cfx.re แสดงตัวอย่างการเจาะ Resource Tick ไปถึง

  • Resource

  • File

  • Line

ที่ทำให้ CPU Time Spike

จึงเหมาะมากเมื่อ Developer มี Source

㉚ Resmon สูงเฉพาะตอนกดปุ่มบอกอะไร?

เป็นสัญญาณที่ดีในการ Reproduce

เช่น

กด F2
↓
Inventory เปิด
↓
Resource CPU Spike

จากนั้น Profile ช่วงการเปิด Inventoryโดยตรง

㉛ Resmon สูงตลอดเวลาน่ากังวลกว่าไหม?

โดยทั่วไป Resource ที่ Idle แล้วใช้ CPU ต่อเนื่องมากควรได้รับการตรวจ

เพราะมันกำลังใช้ Processing แม้ Feature ไม่ได้ถูกใช้งาน

ถามว่า

ทำไม Resource นี้ต้องทำงานตลอดเวลา?

㉜ CPU Spike สั้น ๆ ผิดเสมอไหม?

ไม่

บาง Feature จำเป็นต้องทำงานหนักชั่วคราว เช่น

  • เปิด UI ใหญ่

  • Initial Load

  • Generate Data

สิ่งสำคัญคือ

  • Spike นานไหม

  • เกิดบ่อยไหม

  • FPS ร่วงไหม

㉝ ค่าเฉลี่ยต่ำแต่ Spike สูงยังมีปัญหาได้

ตัวอย่าง

ปกติ → ต่ำ
ทุก 3 วินาที → Spike

ผู้เล่นอาจรู้สึก Micro-stutter

ค่า Average อย่างเดียวอาจซ่อนปัญหา

Profiler ช่วยเห็น Timeline ได้ดีกว่า

㉞ Micro-stutter คืออะไร?

คือเกมกระตุกช่วงสั้น ๆ ซ้ำ ๆ

FPS Average อาจยังสูง

เช่น

120
118
30 ← Spike
120
117
35 ← Spike

ผู้เล่นจะรู้สึกว่าภาพไม่ Smooth

㉟ Resource ที่ใช้ Timer ทุกวินาทีอาจทำ Micro-stutter

เช่นทุก 1 วินาทีทำ

  • Entity Scan

  • JSON Encode

  • Distance Loop

  • UI Update

ถ้างานหนักพอจะเกิด Spike เป็นจังหวะ

㊱ JSON ใหญ่ทำ Client CPU สูงได้

ตัวอย่าง Resource สร้างข้อมูลใหญ่

Player Data
Inventory
Vehicle List

แล้ว Encode/Decode ถี่ ๆ

จะใช้ CPU และสร้าง Allocation เพิ่ม

ควรส่งเฉพาะข้อมูลที่จำเป็น

㊲ NUI ทำให้ Resmon สูงได้ไหม?

Resource ที่มี NUI สามารถสัมพันธ์กับ Client Performance ได้

แต่ Resmon เพียงอย่างเดียวอาจไม่บอกว่า JavaScript ในหน้า Web ตรงไหนหนัก

หากสงสัย NUI ให้ใช้ NUI DevTools เพิ่ม

㊳ เปิด NUI DevTools อย่างไร?

FiveM มี Console Command

nui_devtools

สำหรับเปิด NUI Developer Tools

เหมาะกับตรวจ

  • JavaScript

  • DOM

  • Network

  • Memory

  • Rendering

ของ UI

㊴ Phone เป็น Resource ที่ควรตรวจ NUI

Phone มักประกอบด้วย

FiveM Client Script
+
NUI JavaScript
+
HTML/CSS
+
Server Data

จึงสามารถหนักได้หลาย Layer

Resmon เป็นเพียงจุดเริ่ม

㊵ HUD Update ทุก Frame ต้องระวัง

เช่นส่ง

money = 5000
job = police

ไป NUI ทุก Frameทั้งที่ค่าไม่เปลี่ยน

เป็นงานซ้ำที่หลีกเลี่ยงได้

ควร Update UI เมื่อ Data เปลี่ยน

㊶ Speedometer อาจต้อง Update ถี่กว่า Money

ข้อมูลแต่ละชนิดมี Frequency Requirement ต่างกัน

Speed

ต้อง Refresh ค่อนข้างถี่

Money

Refresh เฉพาะเมื่อเงินเปลี่ยน

Optimization ที่ดีแยก Frequency ตามข้อมูล

㊷ Memory ใน Resmon ต้องดูด้วย

Resource Monitor ไม่ได้มีเพียง CPU

Cfx.re ระบุว่ามันแสดง Memory Usage ต่อ Resource ด้วย

Resource ที่ Memory เพิ่มต่อเนื่องควรได้รับการตรวจ

㊸ Client Memory สูงคือ Memory Leak ไหม?

ไม่เสมอ

Resource อาจ Load

  • Images

  • UI Data

  • Cache

เพิ่มตอนใช้งาน

สิ่งที่ต้องดูคือ Trend

เปิด/ปิด Feature ซ้ำ
↓
Memory เพิ่มทุกครั้ง
↓
ไม่กลับมามีขอบเขต

แบบนี้จึงน่าสงสัย

㊹ ทดสอบ Phone Memory Leak อย่างไร?

ตัวอย่าง:

เปิด Phone
↓
ปิด
↓
เปิด
↓
ปิด
↓
ทำซ้ำ 30 ครั้ง

ดูว่า Resource Memory โตต่อเนื่องหรือ Stable

ถ้าโตทุก Cycle ควรตรวจ

  • Event Listener

  • DOM

  • Images

  • Cache

㊺ Map Resource สูงใน Resmon หมายถึง Map หนักเสมอไหม?

ไม่ควรสรุปทันที

Streaming Asset Performance มีหลาย Layer

เช่น

  • GPU

  • VRAM

  • Geometry

  • Texture

  • Collision

Resmon เน้น Script Resource CPU/Memory ไม่ได้แทน GPU Profiler ทั้งหมด

㊻ รถ High-poly อาจ FPS ต่ำแต่ Resmon ไม่สูง

ได้

เพราะปัญหาอาจอยู่ที่

  • Rendering

  • GPU

  • VRAM

  • Streaming

ไม่ใช่ Client Script CPU

ดังนั้น

FPS ต่ำ + Resmon ปกติ

ไม่ได้แปลว่าไม่มีปัญหา

ให้ตรวจ Assets ต่อ

㊼ MLO ก็เช่นเดียวกัน

ถ้า FPS ต่ำเฉพาะ MLO หนึ่งแห่ง แต่ Resource CPU ปกติ

ให้ตรวจ

  • Polygon

  • LOD

  • Texture

  • Collision

  • Lights

ไม่ควรโทษ Lua Scriptทันที

㊽ Texture 4K มีผลกับ Resmon ไหม?

ผลหลักมักไปที่

  • VRAM

  • Streaming

  • Rendering

มากกว่า Script CPU

Resmon จึงไม่ใช่เครื่องมือเดียวสำหรับ Asset Optimization

㊾ Resmon ไม่ได้วัด Ping

ถ้าผู้เล่นกระตุกเพราะ Network

Resmon อาจปกติทั้งหมด

ใช้เครื่องมือ Network เช่น netgraph เมื่อเหมาะสม

FiveM มี Console Command สำหรับแสดงข้อมูล Packet/Network

㊿ Resmon ไม่ได้วัด Server SQL

ถ้า Garage ใช้เวลา 5 วินาทีเพราะ Database Query ช้า

Client Resource อาจใช้ CPU ต่ำ

ต้องตรวจ

Client
↓
Server Event
↓
SQL
↓
Response

ทั้ง Flow

51. Resource สูงหลังติดตั้ง Script ใหม่ต้องทำอย่างไร?

เปรียบเทียบ

ก่อนติดตั้ง
↓
Resmon Baseline

หลังติดตั้ง
↓
Resmon ใหม่

โดยใช้

  • Location เดียวกัน

  • Player Count ใกล้เคียง

  • Feature เดียวกัน

ช่วยทำ Performance Regression Test

52. อย่าเปรียบเทียบคนละสถานการณ์

เช่น

ก่อน → อยู่ทะเลทรายคนเดียว
หลัง → Event กลางเมือง 100 คน

แล้วสรุปว่า Script ใหม่ทำ FPS ตก

ต้องควบคุม Test Scenario

53. ปิด Resource แล้ว FPS ดีขึ้นเป็นหลักฐานไหม?

เป็น เบาะแสที่ดี

บน Test Server สามารถ

  1. วัด FPS/Resmon

  2. Stop Resource

  3. ทดสอบใหม่

  4. Start Resource

  5. Reproduce

ถ้า Pattern กลับมาเหมือนเดิมจึงน่าเชื่อถือขึ้น

54. อย่าปิด Resource Production แบบสุ่ม

โดยเฉพาะ

  • Framework

  • Inventory

  • Character

  • Core Libraries

ควรใช้ Development/Staging Server

เพื่อไม่กระทบผู้เล่นและข้อมูล

55. Resource Dependency ต้องคิดด้วย

สมมติ Resource A สูง

แต่ A ถูก Resource B เรียก Export 500 ครั้งต่อ Frame

Root Cause อาจอยู่ B

Profiler และ Source Audit จะช่วยเห็น Call Pattern

56. Framework ไม่ได้ทำให้ Resmon สูงเสมอ

Server ใช้ ESX/QBCore/Qbox แล้ว FPS ต่ำ

ไม่ได้หมายความว่า Framework Core เป็นต้นเหตุ

Third-party Resource รอบ Framework อาจเป็นตัวปัญหา

ต้องวัดทีละ Resource

57. ox_lib หรือ Library กลางอาจถูกเรียกจากหลาย Script

หาก Library ดูมี Activity สูง ให้ตรวจว่า Resource ใดเรียกมัน

อย่ารีบลบ Dependency กลางโดยไม่หา Caller

58. Resource จำนวนมากทำ FPS ต่ำเสมอไหม?

ไม่

จำนวน Folder ไม่ใช่ตัววัด Performance

Server มี 200 Resources ที่ Idle อย่างมีประสิทธิภาพอาจเบากว่า Server 50 Resources ที่มี Heavy Loops

ต้องดู Runtime Behavior

59. Resource ทุกตัวเล็กน้อยรวมกันก็หนักได้

แม้ไม่มี Resource ตัวเดียวสูงมาก

ถ้ามี

Resource 1 → เล็กน้อย
Resource 2 → เล็กน้อย
...
Resource 100 → เล็กน้อย

Total Client Script Time ยังสามารถสูง

Optimization จึงต้องมองทั้ง

  • Top Offender

  • Total Workload

60. ตั้ง Performance Budget ได้

ทีม Developer สามารถกำหนดว่า Resource ใหม่ต้อง

  • Idle ต่ำ

  • ไม่มี Loop ไม่จำเป็น

  • ไม่มี Event Spam

  • ไม่มี Memory Growth

  • ผ่าน Resmon Test

  • ผ่าน Profiler เมื่อมี Spike

ก่อน Merge เข้า Production

61. ทดสอบเครื่องสเปกกลางด้วย

Developer PC ที่แรงมากอาจไม่รู้สึกปัญหา

แต่ Player Community อาจใช้

  • CPU รุ่นกลาง

  • GPU รุ่นกลาง

  • RAM จำกัด

Resource ที่ Developer ได้ 150 FPS อาจทำเครื่องผู้เล่นตกเหลือ 45 FPS

ควรมี Test Hardware หลายระดับ

62. FPS ต้องดูคู่กับ Resmon

ตัวอย่าง:

ก่อนเปิด Phone
FPS = 120

เปิด Phone
FPS = 70
Resource phone CPU เพิ่มชัดเจน

เป็น Correlation ที่ควรตรวจต่อ

ดีกว่าดู CPU Numberโดยไม่มีผลต่อ Gameplay

63. Memory ต้องดูคู่กับเวลาที่เปิด Server

เช่น

เข้า Serverใหม่ → 80 MB
เล่น 1 ชั่วโมง → 90 MB
เล่น 4 ชั่วโมง → 95 MB

อาจ Stable

แต่

80
150
300
600 MB

ต่อเนื่องต้องตรวจ

64. Resmon ใช้ตรวจทุก Resource ก่อนเปิด Server ได้ไหม?

ควรทำ

อย่างน้อย Resource สำคัญ เช่น

  • HUD

  • Phone

  • Inventory

  • Target

  • Garage

  • Jobs

  • Police

  • Vehicle Scripts

ควรผ่าน Client Performance Test

65. วิธีทดสอบ Resource ใหม่อย่างเป็นระบบ

ขั้นที่ 1

วัด Baseline ก่อน Start

ขั้นที่ 2

Start Resource

ขั้นที่ 3

ดู Idle Resmon

ขั้นที่ 4

ใช้งาน Feature ทุกส่วน

ขั้นที่ 5

ดู CPU Spike

ขั้นที่ 6

ดู Memory

ขั้นที่ 7

เดินทางไปพื้นที่ Entity เยอะ

ขั้นที่ 8

ทดสอบหลาย Player

ขั้นที่ 9

Profiler หากพบ Spike

ขั้นที่ 10

แก้และทดสอบซ้ำ

66. Multiplayer Test สำคัญ

Script อาจเบาตอน Player คนเดียว

แต่หนักเมื่อ

  • Player 20 คนอยู่ใกล้กัน

  • Vehicles จำนวนมาก

  • Blips จำนวนมาก

  • Target Entities จำนวนมาก

ต้องทดสอบ Scenario ที่ใกล้ Production

67. Police GPS เป็นตัวอย่างที่ดี

ระบบอาจวาด

  • Blips

  • Names

  • Locations

ของเจ้าหน้าที่หลายสิบคน

ถ้า Update ทุก Frameโดยไม่จำเป็น Client CPU อาจเพิ่ม

ใช้ Update Frequency ที่เหมาะสม

68. Target System ต้องทดสอบ Entity เยอะ

Target Resource อาจตรวจ

  • Entity

  • Bones

  • Zones

  • Options

จำนวนมาก

ทดสอบในพื้นที่ที่มี Object/Vehicle เยอะ ไม่ใช่เฉพาะ Baseplate โล่ง ๆ

69. Vehicle Script ต้องทดสอบหลายคัน

Resource ที่ตรวจรถใกล้ Player อาจเบาตอนมีรถ 2 คัน

แต่หนักตอน Parking Area มี 100 คัน

ต้อง Test Scaling

70. ถ้า Resmon Access Denied ต้องทำอย่างไร?

Documentation รุ่นทั่วไปของ Cfx.re ระบุว่า Developer Mode อาจจำเป็นสำหรับคำสั่งบางกรณี

แต่ต้องแยก Legacy กับ Enhanced ให้ถูกต้อง

สำหรับ Enhanced คำสั่ง Developer Mode แบบ Legacy

+set moo 31337

ถูกถอดออกแล้ว

Enhanced ใช้ Server-side

sv_devMode true

สำหรับการเปิด Client Developer Tools ตามระบบใหม่

จึงไม่ควร Copy วิธีเปิด Dev Mode จากคู่มือ Legacy มาใช้กับ Enhanced โดยตรง

71. sv_devMode ควรเปิด Production ไหม?

ไม่ควรเปิดแบบไม่เข้าใจผล

Developer Mode เป็นเครื่องมือสำหรับ Development/Testing

Server Owner ควรเปิดใน Environment สำหรับทดสอบ หรือให้สิทธิ์ Developer ตาม Workflow ที่ Platform รองรับ

อย่าใช้ Dev Mode เป็น Production Optimization Setting

72. FxDK มี Resource Monitor ด้วยไหม?

มี

Cfx.re ระบุว่า FXCode/FxDK มี Combined Game and Server Resource Monitors

เหมาะกับ Developer ที่ต้องการ Environment สำหรับ

  • Code

  • Game

  • Console

  • Resource Monitoring

ใน Workspace เดียว

แต่ Resmon ใน Client ยังคงเป็นวิธีรวดเร็วมากสำหรับตรวจ Resource ระหว่างเล่น

73. Resmon ใช้แทน Code Review ได้ไหม?

ไม่

Resmon บอกว่า Resource “หนัก”

แต่ Code Review บอกว่า “ทำไมหนัก”

ตัวอย่างต้องตรวจ

  • Loops

  • Timers

  • Natives

  • Entity Scans

  • NUI Messages

  • Data Processing

ร่วมกัน

74. Resmon ใช้แทน Profiler ได้ไหม?

ไม่

ให้ใช้เป็นคู่กัน

Resmon
→ หา Resource

Profiler
→ หา Code

เป็น Workflow ที่มีประสิทธิภาพที่สุดสำหรับ Client Script Performance

75. Checklist หา Script กินเครื่องด้วย Resmon

เริ่มต้น

  • เข้า Server

  • เปิด F8

  • resmon true

Baseline

  • ยืน Idle

  • จด FPS

  • ดู CPU

  • ดู Memory

Functional Test

  • เปิด HUD/Phone/Inventory

  • ใช้ Garage

  • ขับรถ

  • เข้า MLO

Scaling Test

  • Player เยอะ

  • Vehicle เยอะ

  • Entity เยอะ

ถ้าพบปัญหา

  • จด Resource

  • Reproduce

  • ใช้ Profiler

  • ตรวจ Source

  • แก้

  • Test ซ้ำ

76. สิ่งที่ไม่ควรทำกับ Resmon

หลีกเลี่ยง

  • ตัดสินจาก Snapshot 1 วินาที

  • เชื่อว่า 0.00 ms = สมบูรณ์

  • ใช้ Resmon หา Server SQL

  • ใช้ Resmon แทน GPU Diagnosis

  • โทษ Resource เพียงเพราะชื่อ Framework

  • ปิด Resource Production แบบสุ่ม

  • ดูเฉพาะ Idle

  • ไม่ทดสอบ Feature

  • ไม่ดู Memory

  • ไม่ใช้ Profiler ต่อเมื่อเจอ Spike

Resmon เป็นเครื่องมือวัด ไม่ใช่คำตอบทั้งหมด

77. คำถามที่พบบ่อย

FiveM Resmon คืออะไร?

Resource Monitor สำหรับตรวจ CPU และ Memory Usage ของ Resource ฝั่ง Client

เปิด Resmon อย่างไร?

resmon true

ปิดอย่างไร?

resmon false

Resmon ใช้ดู Server CPU ได้ไหม?

ไม่ใช่เครื่องมือหลัก ให้ใช้ Server Profiler, txAdmin และ Metrics

Resmon ช่วยหา FPS ตกได้ไหม?

ได้ โดยช่วยหา Resource ฝั่ง Client ที่ใช้ Processing มากผิดปกติ

Resmon ดู RAM ได้ไหม?

แสดง Memory Usage ต่อ Resource ฝั่ง Client

Resource 0.00 ms หมายความว่าดีแน่นอนไหม?

ไม่ ต้องทดสอบตอน Feature ทำงานและดู Spike/Memory เพิ่มเติม

Resmon สูงต้องลบ Script ไหม?

ไม่ ควรใช้ Profilerและตรวจ Source ก่อน

FPS ต่ำแต่ Resmon ปกติเป็นเพราะอะไร?

อาจเกิดจาก GPU, Maps, MLO, Vehicles, Textures, NUI หรือ Network/Server Problem

Profiler ต่างจาก Resmon อย่างไร?

Resmon ใช้หา Resource ต้องสงสัย ส่วน Profiler ใช้เจาะถึง Thread/File/Code ที่สร้าง Performance Spike

78. สรุป FiveM Resmon คืออะไร? วิธีหา Script กินเครื่อง

FiveM Resmon คือเครื่องมือ Resource Monitor ฝั่ง Client ที่แสดง CPU Usage และ Memory Usage ของ Resource แต่ละตัว

เปิดง่าย ๆ ด้วย

resmon true

และปิดด้วย

resmon false

สิ่งสำคัญที่สุดคือ อย่าเปิด Resmon แล้วดูเพียงตอนผู้เล่นยืนเฉย ๆ

ต้องทดสอบ Resource ในสถานการณ์จริง เช่น

HUD → ขับรถ
Phone → เปิดและใช้งาน App
Inventory → ย้าย/ใช้ Item
Garage → Spawn รถ
Police → เปิด GPS
Target → เข้าเขต Entity จำนวนมาก

จากนั้นมองหา

CPU สูงต่อเนื่อง

CPU Spike เป็นจังหวะ

Memory เพิ่มไม่หยุด

และความสัมพันธ์กับ FPS

ถ้าพบ Resource ต้องสงสัยแล้ว ขั้นตอนต่อไปคือใช้ Profiler เพื่อเจาะจาก Resource ลงไปถึง Thread, File และ Code ที่ใช้เวลาประมวลผลมาก

ต้องจำด้วยว่า Resmon ไม่สามารถตอบปัญหาทุกอย่างได้

Server CPU สูง
→ Server Profiler / txAdmin

Server Hitch
→ Profiler

SQL ช้า
→ Database Monitoring

Ping สูง
→ Network

รถ/MLO หนัก
→ Asset/GPU Optimization

NUI หนัก
→ Resmon + NUI DevTools

สำหรับ FiveM Enhanced ยังต้องระวังเรื่อง Developer Mode เพราะคำสั่ง Legacy +set moo 31337 ถูกถอดออกแล้ว และ Client Developer Tools เปลี่ยนมาอาศัย sv_devMode ฝั่ง Server

แนวทางที่ comsiam แนะนำคือ

Resmon
↓
หา Resource ที่ผิดปกติ
↓
Reproduce Feature
↓
เปรียบเทียบ FPS / CPU / Memory
↓
Profiler
↓
หา Thread / Code
↓
แก้ Loop / Entity Scan / NUI / Data Processing
↓
Test Again
↓
Staging
↓
Production

จำง่าย ๆ:

Resmon → Client Resource Monitor

CPU → ดูเวลาประมวลผลของ Resource

Memory → ดูแนวโน้ม ไม่ใช่ Snapshot เดียว

0.00 ms → ไม่ได้พิสูจน์ว่า Resource สมบูรณ์

Spike → ต้อง Reproduce

รู้ Resource แต่ไม่รู้ Code → ใช้ Profiler

Server CPU → อย่าใช้ Resmon เป็นเครื่องมือหลัก

FPS ต่ำแต่ Resmon ปกติ → ตรวจ Assets/GPU/NUI/Network ต่อ

Resmon จึงเป็นหนึ่งในเครื่องมือที่ Developer FiveM ควรใช้ทุกครั้งก่อนนำ Client Resource ใหม่ขึ้น Production เพราะช่วยให้รู้จากข้อมูลจริงว่า Script ตัวไหนกำลังสร้างภาระให้เครื่องผู้เล่น แทนการรอให้ Community เข้ามารายงานว่า “เข้า Server แล้ว FPS ตก”

Comments

Popular posts from this blog

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

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

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