FiveM vehicles.meta คืออะไร มีหน้าที่อะไร และแก้อย่างไรให้รถ Add-on ทำงานถูกต้อง

 ถ้ากำลังติดตั้ง Add-on Car หรือ Car Pack ใน FiveM ไฟล์หนึ่งที่ต้องเจอแทบทุกครั้งคือ vehicles.meta เพราะไฟล์นี้เก็บ Vehicle Metadata หลายส่วนที่เกมใช้สำหรับระบุและกำหนดคุณสมบัติของ Vehicle Model

ปัญหารถ Spawn ไม่ได้ รถใช้ Handling ผิด ไม่มีเสียง หรือข้อมูลบางอย่างของรถผิดหลัง Merge Car Pack จึงอาจมีต้นเหตุมาจาก vehicles.meta ได้

FiveM รองรับ Vehicle Metadata ผ่าน Data File Type ชื่อ VEHICLE_METADATA_FILE และสามารถโหลดไฟล์ดังกล่าวผ่าน data_file ภายใน fxmanifest.lua ได้โดยตรง

บทความนี้จาก comsiam จะอธิบายตั้งแต่ vehicles.meta คืออะไร มีข้อมูลสำคัญอะไรอยู่ภายใน เชื่อมกับ handling.meta อย่างไร และควรตรวจจุดไหนเมื่อรถ Add-on มีปัญหา

FiveM vehicles.meta คืออะไร

vehicles.meta คือไฟล์ Vehicle Metadata ที่เก็บข้อมูลและการอ้างอิงสำคัญของ Vehicle Model

สำหรับรถ Add-on หนึ่งคัน ไฟล์นี้สามารถใช้เชื่อมข้อมูลของรถเข้ากับส่วนอื่น เช่น

  • Model Name

  • Texture Dictionary

  • Handling ID

  • Game Name

  • Audio

  • Vehicle Layout

  • Vehicle Class

  • Camera

  • Animation

  • Flags

  • ความสัมพันธ์กับ Asset อื่น

FiveM จัด VEHICLE_METADATA_FILE เป็นหนึ่งใน Data File Types ที่ Resource สามารถ Mount เข้าเกมผ่านระบบ Extra Content ได้

① vehicles.meta อยู่ตรงไหน

ภายใน Vehicle Resource มักพบโครงสร้างประมาณ

mycar/
│
├── fxmanifest.lua
│
├── stream/
│   ├── mycar.yft
│   ├── mycar_hi.yft
│   └── mycar.ytd
│
└── data/
    ├── vehicles.meta
    ├── handling.meta
    ├── carcols.meta
    └── carvariations.meta

แต่ตำแหน่งไม่จำเป็นต้องเป็น data/ เสมอไป เพราะ Resource Developer สามารถจัดโครงสร้าง Folder ได้เอง ตราบใดที่ Path ใน Resource Manifest อ้างถึงไฟล์จริงอย่างถูกต้อง

FiveM ใช้ fxmanifest.lua เป็น Resource Manifest ปัจจุบันสำหรับกำหนด Metadata และไฟล์ที่ Resource ต้องใช้

② vehicles.meta ต้องประกาศใน fxmanifest.lua หรือไม่

ถ้า Resource ต้องโหลด Vehicle Metadata ไฟล์นี้ควรถูกประกาศตามโครงสร้างของ Resource

ตัวอย่าง

files {
    'data/vehicles.meta'
}

data_file 'VEHICLE_METADATA_FILE' 'data/vehicles.meta'

FiveM ระบุว่า data_file ใช้เพิ่ม Data File เข้า Extra Content Mounting System และมีประเภท VEHICLE_METADATA_FILE สำหรับ Vehicle Metadata โดยเฉพาะ

หาก Path ไม่ตรงกับไฟล์จริง ข้อมูลรถอาจไม่ได้ถูก Mount ตามที่ตั้งใจ

③ ตัวอย่าง fxmanifest.lua สำหรับรถ FiveM

รถหนึ่งคันอาจใช้ Meta หลักหลายตัว

ตัวอย่างพื้นฐาน

fx_version 'cerulean'
game 'gta5'

files {
    'data/vehicles.meta',
    'data/handling.meta',
    'data/carcols.meta',
    'data/carvariations.meta'
}

data_file 'VEHICLE_METADATA_FILE' 'data/vehicles.meta'
data_file 'HANDLING_FILE' 'data/handling.meta'
data_file 'CARCOLS_FILE' 'data/carcols.meta'
data_file 'VEHICLE_VARIATION_FILE' 'data/carvariations.meta'

นี่เป็นเพียงตัวอย่างโครงสร้างทั่วไป

ไม่ควร Copy ไปใช้กับรถทุกคันโดยไม่ตรวจ Asset จริง เพราะ Resource บางตัวอาจมี Data Files เพิ่มหรือลดจากตัวอย่างนี้

FiveM มีรายการ Data File Types แยกตามข้อมูลแต่ละประเภท และ Resource Manifest รองรับ files และ data_file สำหรับการโหลด Content เหล่านี้

④ modelName คืออะไร

หนึ่งในข้อมูลที่สำคัญมากคือชื่อ Model ของ Vehicle

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

<modelName>jdm01</modelName>

ชื่อดังกล่าวควรสัมพันธ์กับ Vehicle Model ที่รถใช้

หาก Spawn Name ของรถคือ

jdm01

แต่ข้อมูลภายใน Vehicle Metadata ถูกแก้เป็นชื่ออื่นโดยไม่แก้ Asset ที่เกี่ยวข้อง รถอาจไม่สามารถทำงานตามที่ตั้งใจ

ดังนั้น อย่า Rename Spawn Name ใน vehicles.meta เพียงจุดเดียวแล้วคิดว่าการเปลี่ยน Model Name เสร็จสมบูรณ์

Vehicle Asset สามารถมี Reference หลายส่วนที่ต้องสอดคล้องกัน

⑤ txdName คืออะไร

txdName เกี่ยวข้องกับ Texture Dictionary ที่ Vehicle Model ใช้

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

<txdName>jdm01</txdName>

โดยทั่วไป Vehicle Asset สามารถมี Model และ Texture Dictionary ที่สัมพันธ์กัน

ตัวอย่างใน stream

jdm01.yft
jdm01_hi.yft
jdm01.ytd

หากมีการ Rename หรือ Merge Asset ผิด Reference อาจไม่ตรงกับ Texture ที่ Model ต้องใช้

แต่หากปัญหาเป็น Texture หาย ควรตรวจ .ytd, Shared Texture และ Material ด้วย ไม่ควรแก้ vehicles.meta เพียงอย่างเดียว

⑥ handlingId คืออะไร

handlingId เป็นหนึ่งในส่วนสำคัญที่สุด เพราะใช้เชื่อม Vehicle กับ Handling Data ที่ต้องใช้

ตัวอย่างแนวคิด

<handlingId>JDM01</handlingId>

จากนั้นใน

handling.meta

ต้องมี Handling ที่สัมพันธ์กับชื่อ

JDM01

ถ้ารถอ้าง Handling ผิด รถอาจ

  • เร็วผิดปกติ

  • ช้าเกินไป

  • ขับเหมือนรถอีกคัน

  • เบรกผิด

  • เลี้ยวผิด

  • ช่วงล่างผิด

  • Traction ไม่ตรง

FiveM แยก HANDLING_FILE และ VEHICLE_METADATA_FILE ออกจากกันอย่างชัดเจนใน Data File Types ดังนั้นสองไฟล์นี้มีหน้าที่ต่างกันแต่สามารถเชื่อมข้อมูล Vehicle เข้าหากันได้

⑦ รถหลายคันใช้ handlingId เดียวกันได้หรือไม่

ได้

ตัวอย่าง

car01 → SPORT01
car02 → SPORT01
car03 → SPORT01

รถทั้งสามสามารถอ้าง Handling ชุดเดียวกันได้

ข้อดีคือ

  • ดูแลง่าย

  • ปรับ Handling ครั้งเดียว

  • เหมาะกับรถที่ต้องการ Performance ใกล้เคียงกัน

แต่ข้อเสียคือรถหลายรุ่นอาจขับคล้ายกันมากเกินไป

ถ้า Server ต้องการ Character ของรถแต่ละรุ่นชัดเจน ควรพิจารณาแยก Handling ID

⑧ vehicles.meta ผิดทำให้รถขับเหมือนกันหมดได้หรือไม่

ได้ หากรถหลาย Model ถูกตั้งให้ใช้ handlingId เดียวกันโดยไม่ได้ตั้งใจ

ตัวอย่างหลัง Merge ผิด

skyline01 → SPORT01
supra01   → SPORT01
rx701     → SPORT01

ทั้งที่ต้นฉบับควรเป็น

skyline01 → SKYLINE01
supra01   → SUPRA01
rx701     → RX701

กรณีนี้อย่าเริ่มแก้ Handling ทุกคัน

ให้ตรวจ Vehicle Metadata ก่อนว่าแต่ละ Model อ้าง Handling ถูกตัวหรือไม่

⑨ gameName คืออะไร

Vehicle Metadata สามารถมี Game Name หรือชื่อที่ใช้เป็นข้อมูลอ้างอิงของ Vehicle

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

<gameName>JDM01</gameName>

อย่าสับสน Game Name กับ Spawn Name หรือ Label ที่ Vehicle Shop ใช้

ตัวอย่าง

ชื่อที่ผู้เล่นเห็น: Nissan Skyline
Spawn Name: r34custom
Game Name: R34CUSTOM
Resource: jdm_pack

ค่าเหล่านี้สามารถเป็นคนละชื่อกันได้ตาม Asset และ Script

ดังนั้นเวลา Debug ควรระบุให้ชัดว่ากำลังพูดถึงชื่อส่วนใด

⑩ audioNameHash คืออะไร

รถ Custom สามารถอ้างอิง Audio ผ่านข้อมูลภายใน Vehicle Metadata

ตัวอย่าง

<audioNameHash>customv8</audioNameHash>

ส่วนนี้สำคัญมากสำหรับรถที่ใช้ Custom Car Sound

หาก Model ขึ้นปกติแต่

  • ไม่มีเสียง

  • ใช้เสียงผิดรุ่น

  • ใช้เสียง GTA V เดิมแทน

  • Custom Engine Sound ไม่ทำงาน

ควรตรวจ audioNameHash ร่วมกับ Audio Resource

แต่ไม่ควรแก้ Audio Name แบบสุ่ม เพราะต้องสัมพันธ์กับ Audio Asset ที่ Server มีอยู่จริง

⑪ audioNameHash ว่างได้หรือไม่

ขึ้นอยู่กับ Vehicle Asset และวิธีที่ผู้สร้างตั้งค่าไว้

รถบางคันอาจใช้ข้อมูล Audio ตามระบบเดิม

รถบางคันอาจกำหนด Audio Reference เฉพาะ

ดังนั้นแนวทางที่ปลอดภัยคือ เทียบกับ vehicles.meta ต้นฉบับของรถ

หากรถมีเสียงก่อน Merge แต่หลัง Merge ไม่มีเสียง ให้ตรวจว่า Entry ของรถถูก Copy มาครบหรือไม่ โดยเฉพาะข้อมูล Audio ที่อาจถูกลบระหว่าง Merge

⑫ vehicleMakeName คืออะไร

รถบาง Asset มีข้อมูลเกี่ยวกับชื่อผู้ผลิตหรือ Make Name

ข้อมูลเหล่านี้สามารถถูกนำไปใช้ในการแสดงผลหรือการจัด Vehicle Data ตามระบบเกมหรือ Script

แต่ไม่ควรสมมติว่า Vehicle Shop จะอ่านชื่อจาก vehicles.meta ทุก Script

Vehicle Shop จำนวนมากมี Config หรือ Database ของตัวเอง เช่น

model
label
brand
price
category

ดังนั้นถ้าชื่อรถในร้านผิด ให้ตรวจ Vehicle Shop ก่อน ไม่ใช่แก้ vehicles.meta ทันที

⑬ Vehicle Class อยู่ตรงไหน

Vehicle Metadata สามารถมีข้อมูลที่เกี่ยวข้องกับ Class ของ Vehicle

ตัวอย่างประเภทในเชิง Gameplay เช่น

  • Compact

  • Sedan

  • SUV

  • Coupe

  • Muscle

  • Sports

  • Super

  • Motorcycle

แต่ต้องแยก Vehicle Class ของ Game ออกจาก Category ที่ Vehicle Shop สร้างเอง

ตัวอย่าง Shop อาจใช้

jdm
premium
vip
police

ซึ่งไม่จำเป็นต้องตรงกับ Vehicle Class ของ GTA V/FiveM

⑭ Vehicle Class มีผลอะไร

Class สามารถถูก Script นำไปใช้กับ Gameplay ได้หลายแบบ เช่น

  • จำกัดความเร็ว

  • Toll

  • Fuel

  • Racing

  • Garage

  • Vehicle Restrictions

  • Damage

  • Insurance

แต่การที่ Script ใช้ Class หรือไม่ขึ้นอยู่กับ Resource นั้น

ดังนั้นเมื่อรถถูกจัด Class ผิดและ Script บางระบบทำงานผิด ควรดูทั้ง Vehicle Metadata และ Logic ของ Script ที่อ่าน Class

⑮ type คืออะไรใน Vehicle Metadata

Vehicle Metadata สามารถมีข้อมูลที่ระบุประเภทของ Vehicle

รถทั่วไป รถมอเตอร์ไซค์ หรือ Vehicle ประเภทอื่นอาจใช้ค่าที่แตกต่างกันตาม Asset

หากนำ Entry จากรถประเภทหนึ่ง Copy ไปให้รถอีกประเภทโดยไม่แก้ข้อมูลที่จำเป็น อาจเกิดพฤติกรรมผิดปกติได้

นี่คือเหตุผลที่ไม่ควรสร้าง vehicles.meta ด้วยการ Copy รถคันหนึ่งแล้วเปลี่ยนเพียง Model Name อย่างเดียว

⑯ layout คืออะไร

Vehicle สามารถอ้างข้อมูล Layout ที่เกี่ยวข้องกับการจัดตำแหน่งและพฤติกรรมของผู้โดยสารหรือองค์ประกอบภายในรถ

รถ Custom บางชนิด เช่น

  • รถ 2 ที่นั่ง

  • รถ 4 ที่นั่ง

  • รถตู้

  • รถพิเศษ

  • รถตำรวจบางประเภท

อาจใช้ Layout ต่างกัน

ถ้า Layout ไม่เหมาะกับ Model อาจเกิดอาการ เช่น

  • ตัวละครนั่งผิดตำแหน่ง

  • ขึ้นรถผิดประตู

  • Animation แปลก

  • ผู้โดยสาร Clip กับ Model

บาง Asset อาจมี vehiclelayouts.meta เพิ่มเติมด้วย

⑰ รถมี 4 ประตูแต่ขึ้นได้แค่ 2 ประตู เกี่ยวกับ vehicles.meta ไหม

อาจเกี่ยวข้อง แต่ไม่ควรสรุปจากไฟล์เดียว

ต้องตรวจร่วมกันทั้ง

  • Vehicle Layout

  • Model Bone

  • Door Configuration

  • Vehicle Metadata

  • Asset ต้นฉบับ

ถ้า Model รถทำ Bone ประตูไม่ถูก ต่อให้แก้ Meta อย่างเดียวก็อาจไม่แก้ปัญหา

ดังนั้นควรแยก

Data Problem

จาก

Model Problem

ก่อน

⑱ รถคนขับนั่งผิดตำแหน่งเกิดจากอะไร

ถ้า Ped นั่ง

  • สูงเกินไป

  • ต่ำเกินไป

  • ทะลุเบาะ

  • มือไม่ตรงพวงมาลัย

สาเหตุอาจเกี่ยวข้องกับ

  • Model

  • Vehicle Layout

  • Seat Bone

  • Animation

  • Clip Set

ไม่ควรเริ่มแก้ handling.meta เพราะ Handling ไม่มีหน้าที่หลักในการกำหนดตำแหน่งคนขับ

หากรถคันเดียวมีปัญหาและ Meta ต้นฉบับเหมือนเดิม ให้ตรวจ Asset Model เพิ่ม

⑲ cameraName คืออะไร

Vehicle สามารถมี Metadata ที่เกี่ยวข้องกับ Camera Setting

รถบาง Asset อาจใช้ Camera ต่างจากค่ามาตรฐาน

ถ้ารถมีอาการ

  • กล้องใกล้เกินไป

  • กล้องอยู่ผิดตำแหน่ง

  • มองด้านหลังแปลก

  • First-person Camera ผิด

อาจต้องตรวจ Camera Reference รวมถึงตัว Asset

แต่ไม่ควร Copy Camera Name จากรถอื่นแบบสุ่ม เพราะรูปทรงและขนาด Vehicle ต่างกัน

⑳ wheelScale คืออะไร

รถ Custom สามารถมีข้อมูลที่เกี่ยวกับ Scale ของล้อใน Vehicle Metadata

ถ้ารถมีอาการล้อดู

  • ใหญ่เกินไป

  • เล็กเกินไป

  • ไม่สัมพันธ์กับ Model

อาจต้องตรวจทั้ง Vehicle Metadata และตัว Model

แต่ถ้าล้อหลุดตำแหน่งหรือ Bone ผิด การแก้ Scale อย่างเดียวอาจไม่ใช่คำตอบ

㉑ flags ใน vehicles.meta คืออะไร

Vehicle Metadata มี Flags ที่ใช้กำหนดลักษณะหรือคุณสมบัติบางอย่างของ Vehicle

รถแต่ละประเภทสามารถมี Flags ต่างกัน

ข้อผิดพลาดที่พบบ่อยคือ Copy Entry จากรถอีกคันทั้งชุด แล้วเหลือ Flags ที่ไม่เหมาะกับ Model ใหม่

ผลอาจทำให้รถมี Behavior หรือ Feature บางอย่างผิดไปจากที่ Asset ตั้งใจ

สำหรับผู้เริ่มต้น ไม่ควรแก้ Flags แบบเดา

ควรใช้ Entry ต้นฉบับเป็น Base

㉒ vehicles.meta มีผลกับความเร็วรถหรือไม่

โดยตรงแล้วค่าความเร็วและพฤติกรรมการขับจำนวนมากอยู่ใน Handling Data มากกว่า

แต่ vehicles.meta สามารถเป็นตัวเชื่อม Vehicle Model ไปยัง

handlingId

ดังนั้นถ้า Handling Reference ผิด รถก็อาจเร็วหรือช้าผิดไปจากที่ควร

ถ้ารถมีความเร็วผิด ให้ตรวจตามลำดับ

  1. Handling ID ใน vehicles.meta

  2. Handling Entry ใน handling.meta

  3. Script Runtime Override

ไม่ควรเพิ่ม Drive Force ก่อนรู้ว่ารถใช้ Handling ตัวไหน

㉓ vehicles.meta มีผลกับเสียงรถหรือไม่

มีในแง่ Vehicle Audio Reference

โดยเฉพาะค่าที่เกี่ยวข้องกับ

audioNameHash

ดังนั้นอาการ

รถ Spawn ได้ + ขับได้ + ไม่มีเสียง Custom

ควรตรวจ vehicles.meta และ Audio Resource

ส่วนอาการ

รถ Spawn ไม่ได้เลย

ควรเริ่มตรวจ Model Name, Resource และ Metadata ภาพรวมก่อน

㉔ vehicles.meta มีผลกับ Texture หรือไม่

สามารถมีข้อมูลอ้างอิง Texture Dictionary แต่ Texture Asset จริงยังอยู่ในไฟล์ประเภท Asset เช่น .ytd

ดังนั้นหาก

รถขึ้นแต่ Texture หาย

ต้องตรวจทั้ง

  • Texture Reference

  • .ytd

  • Shared Texture

  • Material

  • Streaming Asset

ไม่ควรแก้ vehicles.meta อย่างเดียว

㉕ vehicles.meta มีผลกับ Handling หรือไม่

มีในฐานะจุดเชื่อม

ตัวอย่าง

vehicles.meta
    ↓
handlingId = SPORT01
    ↓
handling.meta
    ↓
SPORT01

ถ้า Reference ไม่ตรง รถอาจไม่ได้ Handling ที่ต้องการ

FiveM แยก Data Files สำหรับ Vehicle Metadata และ Handling Data ต่างหากผ่าน VEHICLE_METADATA_FILE และ HANDLING_FILE

ดังนั้นการ Debug ควรดูสองไฟล์ร่วมกัน

㉖ Add-on Car Spawn ไม่ได้ควรตรวจอะไรใน vehicles.meta

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

  • Model Name

  • Texture Dictionary

  • Handling Reference

  • Audio Reference

  • Layout

  • Entry ครบหรือไม่

  • XML Structure

  • Meta ถูก Mount หรือไม่

จากนั้นตรวจ Asset ใน stream

เพราะ vehicles.meta ถูกต้องแต่ไม่มี YFT ของ Model รถก็ยังไม่สามารถทำงานครบได้

㉗ Resource Start ได้ แต่รถ Add-on Spawn ไม่ได้

อย่าเข้าใจว่า Resource Start สำเร็จแปลว่า Vehicle Metadata ทุก Entry ถูกต้อง

Resource Manifest เพียงทำให้ FiveM รู้จัก Resource และโหลด Content ตามที่ประกาศไว้

รถหนึ่งคันภายใน Pack ยังอาจมี

  • Model Name ผิด

  • Entry หาย

  • Handling Reference ผิด

  • Asset ไม่ครบ

ได้

ดังนั้นถ้า Car Pack มีรถ 50 คันและเสียเพียง 1 คัน ให้ Debug รถคันนั้นโดยเฉพาะ

㉘ รถบางคัน Spawn ได้ บางคันไม่ได้

กรณีนี้ให้สงสัย Entry เฉพาะรถมากกว่าระดับ Resource

เพราะ Resource เดียวกันทำงานอยู่แล้ว

ตรวจรถที่เสีย

car27

เทียบกับรถที่ทำงาน

car26

ดูว่า

  • Entry XML ต่างกันอย่างไร

  • Model Name มีอยู่ใน Stream หรือไม่

  • Handling ID มีจริงหรือไม่

  • รถมี Dependency เพิ่มหรือไม่

วิธีเปรียบเทียบรถที่ทำงานกับรถที่เสียมักช่วยหา Error ได้เร็ว

㉙ Merge vehicles.meta ต้องทำอย่างไร

เมื่อรวมรถหลายคัน ไม่ควร Replace vehicles.meta ของ Pack เดิมทั้งไฟล์

สมมติ Pack เดิมมี

car01
car02
car03

และรถใหม่มี

car04

แนวคิดคือเพิ่ม Vehicle Entry ของ car04 เข้าโครงสร้างเดิมให้ถูกต้อง

ไม่ใช่นำ vehicles.meta ของ car04 มาเขียนทับไฟล์เดิม

ไม่เช่นนั้นข้อมูล car01–car03 อาจหาย

㉚ Merge vehicles.meta แล้วรถเก่าหาย

กรณีนี้ควรตรวจทันทีว่า Vehicle Entries เดิมยังอยู่ครบหรือไม่

เป็นปัญหาที่เกิดได้เมื่อใช้

Replace File

แทน

Merge Entry

โดยเฉพาะการรวม Car Pack ด้วย Windows File Explorer แล้วเลือก Replace ไฟล์ชื่อเดียวกัน

ควร Backup Meta ทุกครั้งก่อน Merge

㉛ XML Structure ผิดมีผลหรือไม่

มี

Vehicle Metadata เป็นข้อมูลที่ต้องถูก Parse และ Mount ผ่านระบบ Data Files

ถ้า Merge XML แล้วเกิด

  • Tag เปิดไม่ครบ

  • Tag ปิดหาย

  • Entry ซ้อนผิด

  • Copy มาไม่ครบ

  • Structure เสีย

ข้อมูลอาจไม่ถูกโหลดตามที่ตั้งใจ

FiveM ใช้ data_file เพื่อ Mount Vehicle Metadata ตาม Resource Manifest ดังนั้นทั้ง Path และเนื้อหาไฟล์ต้องถูกต้อง

ควรใช้ Code Editor ที่มี XML Syntax Highlight เพื่อลดข้อผิดพลาด

㉜ Model Name ซ้ำใน Car Pack เป็นปัญหาหรือไม่

ควรหลีกเลี่ยง

สมมติรถสองชุดมี

modelName = sport01

เหมือนกัน แต่เป็นคนละ Asset

เมื่อนำมารวม Server อาจเกิด Conflict และทำให้ไม่รู้ว่า Resource ใดกำลัง Streaming Model ที่ต้องการ

ควรกำหนด Model Name ที่ไม่ชนกันตั้งแต่ Asset Pipeline

ไม่ควรปล่อยให้หลาย Resource ใช้ Vehicle Model Name เดียวกันโดยไม่เข้าใจผลที่ตามมา

㉝ Handling ID ซ้ำเป็นปัญหาหรือไม่

ไม่จำเป็นต้องเป็น Error ถ้าตั้งใจให้ใช้ Handling เดียวกัน

แต่เป็นปัญหาถ้ารถสองคันมี Handling ชื่อเดียวกันแต่ต้องการค่าคนละชุด

ตัวอย่าง

Pack A: SPORT01 = Handling แบบ A
Pack B: SPORT01 = Handling แบบ B

เมื่อ Merge ต้องตัดสินใจว่าจะ

  • ใช้ Handling เดียวกัน

  • หรือ Rename Handling ของรถชุดหนึ่ง

พร้อมแก้ Reference ใน vehicles.meta ให้ตรงกัน

㉞ audioNameHash ซ้ำได้หรือไม่

ได้ถ้ารถหลายคันตั้งใจใช้ Engine Sound เดียวกัน

ตัวอย่าง

car01 → v8sound
car02 → v8sound
car03 → v8sound

แต่ถ้ารถแต่ละคันต้องใช้เสียงต่างกัน แล้วตอน Merge ถูกเปลี่ยนเป็น Audio Name เดียวกันทั้งหมด รถก็จะมีเสียงผิด

ดังนั้นควรตรวจ Vehicle Audio Reference หลัง Merge ด้วย

㉟ vehicles.meta ของ Replace Car ต้องแก้ไหม

ขึ้นอยู่กับ Asset และสิ่งที่ต้องการเปลี่ยน

Replace Car บางชุดอาจใช้ Metadata เดิมของ GTA V เป็นหลักและ Streaming เฉพาะ Model/Texture

แต่บาง Asset อาจมี Meta เพิ่มเพื่อเปลี่ยน Handling, Audio หรือข้อมูล Vehicle อื่น

จึงต้องอ่าน Instructions ของ Asset นั้น

ไม่ควรใช้กฎ Add-on Car ไปบังคับกับ Replace Car ทุกชุด

㊱ vehicles.meta ของ Add-on Car สำคัญกว่า Replace หรือไม่

ในทางปฏิบัติ Add-on Car ต้องมีข้อมูลที่ทำให้ Game รู้จัก Vehicle Model ใหม่ จึงมักต้องพึ่ง Vehicle Metadata ที่ถูกต้องมาก

ถ้า Add-on Model ใหม่ไม่ได้มี Metadata ที่สัมพันธ์กับ Asset รถอาจ Spawn ไม่ได้หรือทำงานผิด

ดังนั้นถ้า

รถ GTA V เดิม Spawn ได้ แต่ Add-on Car ไม่ได้

vehicles.meta เป็นหนึ่งในจุดสำคัญที่ควรตรวจ

㊲ รถเปลี่ยน Spawn Name ต้องแก้อะไรบ้าง

อย่าแก้เพียงบรรทัด

modelName

อย่างเดียว

Vehicle Asset สามารถมี Reference หลายจุด เช่น

  • Model File

  • Texture Dictionary

  • Vehicle Metadata

  • Vehicle Variation

  • Script Config

  • Vehicle Shop

  • Garage

  • Database

  • Audio

  • Handling

ถ้าต้อง Rename Model อย่างจริงจังควรตรวจ Asset Pipeline ทั้งชุด

สำหรับผู้เริ่มต้น ควรรักษา Spawn Name ที่ผู้สร้างกำหนดไว้

㊳ รถเปลี่ยนชื่อ Resource ต้องแก้ vehicles.meta ไหม

ไม่จำเป็นเสมอไป

ตัวอย่าง

Resource เดิม: mycar
Resource ใหม่: jdm_pack

Resource Name กับ Vehicle Model Name เป็นคนละสิ่ง

คุณสามารถมี

Resource: jdm_pack
Spawn Name: r34custom

ได้

แต่ต้องตรวจ Resource Dependencies และ Config ที่อ้าง Resource Name แยกต่างหาก

㊴ vehicles.meta มีหลายไฟล์ได้หรือไม่

FiveM Resource Manifest รองรับการประกาศ Data Files หลาย Entry และ data_file รองรับ Path ตาม Resource Design

ดังนั้น Server สามารถออกแบบให้แยก Vehicle Metadata ตาม Pack ได้

ตัวอย่าง

vehicle_data/
└── metas/
    ├── civilian_vehicles.meta
    ├── police_vehicles.meta
    └── ems_vehicles.meta

หรือแยก Resource แต่ละ Packไปเลย

เป้าหมายควรเป็น Debug ง่ายและ Update ง่าย ไม่ใช่ลดจำนวนไฟล์ให้เหลือน้อยที่สุด

㊵ รวม vehicles.meta ทั้ง Server ไว้ไฟล์เดียวดีไหม

ทำได้ในบางโครงสร้าง แต่ไม่จำเป็นต้องดีที่สุด

ข้อดี

  • มีจุดแก้เดียว

  • ค้น Vehicle ได้จากไฟล์เดียว

ข้อเสีย

  • File ใหญ่มาก

  • Merge ยาก

  • Update รถคันเดียวเสี่ยงกระทบทั้ง Pack

  • Debug XML ยาก

  • ทีมงานแก้พร้อมกันลำบาก

สำหรับ Server ใหญ่ การแยกตาม Resource หรือหมวดรถมักจัดการง่ายกว่า

㊶ vehicles.meta มีผลกับ FPS หรือไม่

ตัว Vehicle Metadata เองไม่ใช่ Asset ภาพขนาดใหญ่เหมือน YFT/YTD ที่ GPU ต้อง Render

ถ้ารถทำให้ FPS ตก ควรตรวจ

  • Model Complexity

  • Texture

  • LOD

  • จำนวน Vehicle

  • Streaming

  • Script

ก่อน

แต่ Metadata ที่ผิดอาจทำให้รถใช้ Asset หรือ Configuration ไม่ตรงกับที่ควร จึงควรแก้ให้ถูกต้องอยู่ดี

㊷ vehicles.meta ทำให้ Server Lag หรือไม่

ไม่ควรถือว่าไฟล์นี้เป็นสาเหตุหลักของ Server Lag

ปัญหา Server Performance ควรตรวจ

  • Script CPU

  • Entity Count

  • Network

  • Database

  • Resource Loop

  • Server Hardware

ส่วน vehicles.meta เป็น Vehicle Data มากกว่า Runtime Script

อย่าแก้ Meta เพียงเพราะเห็น Server CPU สูง

㊸ รถไม่มีเสียงหลังแก้ vehicles.meta

ให้ย้อนดู

audioNameHash

รวมถึง Audio Resource

ถ้าก่อนแก้มีเสียง แต่หลัง Save ไฟล์แล้วเสียงหาย ให้เปรียบเทียบกับ Backup

อย่าแก้ Sound Resource พร้อมกันในรอบเดียว เพราะจะทำให้แยกสาเหตุยาก

㊹ รถขับผิดหลังแก้ vehicles.meta

ให้ดู

handlingId

ก่อน

หาก Handling ID เปลี่ยน รถสามารถไปใช้ Handling อีกชุดได้

ตัวอย่าง

เดิม: JDM01
ใหม่: SPORT01

รถจึงอาจเปลี่ยน Character การขับทั้งหมด ทั้งที่ handling.meta ของ JDM01 ไม่ได้ถูกแก้เลย

㊺ รถ Texture ผิดหลังแก้ vehicles.meta

ตรวจ

  • Model Name

  • Texture Dictionary

  • YTD

  • Shared Texture

ถ้าก่อนแก้ Asset ปกติ ให้ย้อนเทียบ Vehicle Metadata กับ Backup

แต่ถ้า Texture หายตั้งแต่ก่อนแก้ vehicles.meta ปัญหาอาจอยู่ที่ Asset เอง

㊻ รถนั่งผิดหลังแก้ vehicles.meta

ตรวจ Vehicle Layout หรือข้อมูลที่เกี่ยวข้องกับ Seat/Animation ก่อน

อย่าไปแก้ Handling

เพราะ

การขับรถ

กับ

ตำแหน่ง Ped ในรถ

เป็นคนละระบบ

หาก Layout ต้นฉบับถูกต้องแต่ Ped ยังผิด ให้ตรวจ Model Bones เพิ่ม

㊼ วิธี Backup vehicles.meta

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

vehicles.meta
vehicles_original.meta

หรือใช้ Folder

backup/
└── vehicles_before_merge.meta

ถ้าจัดการ Production Server จริง ควรใช้ Version Control สำหรับ Resource Files ด้วย

ข้อดีคือสามารถดูได้ว่า

  • ใครแก้

  • แก้อะไร

  • เมื่อไร

  • ค่าเดิมคืออะไร

ซึ่งสำคัญมากเมื่อ Server มีรถจำนวนหลายร้อยคัน

㊽ อย่าแก้หลายจุดพร้อมกัน

สมมติรถ Spawn ไม่ได้

อย่าแก้พร้อมกันทั้ง

vehicles.meta
handling.meta
carcols.meta
carvariations.meta
fxmanifest.lua

เพราะถ้ารถกลับมา Spawn ได้ คุณจะไม่รู้ว่าจุดใดแก้ปัญหา

ให้แก้ตามลำดับ

  1. Resource

  2. Model Name

  3. Vehicle Metadata

  4. Handling Reference

  5. Asset

  6. Meta อื่น

เปลี่ยนทีละจุดและทดสอบทุกครั้ง

㊾ วิธี Debug vehicles.meta แบบเร็วที่สุด

ใช้ขั้นตอนนี้

ขั้นที่ 1

ยืนยัน Spawn Name ของรถ

ขั้นที่ 2

ตรวจ Resource ว่า Start แล้ว

ขั้นที่ 3

ตรวจ fxmanifest.lua

ต้อง Mount

VEHICLE_METADATA_FILE

ถ้า Resource ถูกออกแบบให้ใช้ vehicles.meta

ขั้นที่ 4

ตรวจ Path

data/vehicles.meta

ตรงกับไฟล์จริงหรือไม่

ขั้นที่ 5

หา Vehicle Entry

ตรวจ Model Name

ขั้นที่ 6

ตรวจ Texture Dictionary

ขั้นที่ 7

ตรวจ Handling ID

ขั้นที่ 8

ตรวจ Audio Reference

ขั้นที่ 9

ตรวจ Layout/Flags หากอาการเกี่ยวข้อง

ขั้นที่ 10

ตรวจ XML Structure

ขั้นที่ 11

เทียบกับไฟล์ต้นฉบับ

ขั้นที่ 12

ถ้าเป็น Car Pack ให้แยกรถเสียออกมาทดสอบเดี่ยว

ตารางสรุปปัญหา vehicles.meta

อาการจุดที่ควรตรวจ
Add-on Car Spawn ไม่ได้Model Name / Resource / Metadata
รถขับเหมือนอีกคันhandlingId
รถไม่มี Custom SoundaudioNameHash
รถ Texture ผิดTXD / YTD / Asset
ผู้โดยสารนั่งผิดLayout / Model
หลัง Merge รถบางคันหายVehicle Entry
รถเก่าหายหลังเพิ่มรถใหม่Meta ถูก Replace แทน Merge
รถหลายคันขับเหมือนกันHandling ID ซ้ำ
รถหลายคันเสียงเหมือนกันAudio Reference
Resource Start แต่รถไม่ขึ้นEntry / Model / Asset
Rename รถแล้วเสียReferences ไม่ครบ
XML ErrorStructure หลัง Merge

ตัวอย่างโครงสร้างรถหนึ่งคันแบบเข้าใจง่าย

สมมติรถมี Spawn Name

jdm01

แนวคิดความสัมพันธ์ของไฟล์อาจเป็น

jdm01.yft
      ↓
Vehicle Model = jdm01
      ↓
vehicles.meta
      ↓
handlingId = JDM01
      ↓
handling.meta
      ↓
JDM01

และอาจมี

audioNameHash = customjdm
      ↓
Audio Resource

พร้อม Texture

jdm01.ytd

เมื่อเข้าใจความสัมพันธ์นี้ การ Debug รถ Custom จะง่ายขึ้นมาก เพราะรู้ว่าแต่ละไฟล์ทำหน้าที่อะไร

vehicles.meta ต่างจาก handling.meta อย่างไร

จำแบบง่ายที่สุด

vehicles.meta

บอกว่ารถคือใคร และอ้างข้อมูลอะไร

เช่น Model, Handling, Audio และ Vehicle Metadata อื่น

handling.meta

บอกว่ารถขับอย่างไร

เช่น

  • แรงขับ

  • เบรก

  • Steering

  • Traction

  • Suspension

FiveM แยก Data File Type ของสองไฟล์เป็น VEHICLE_METADATA_FILE และ HANDLING_FILE โดยตรง

vehicles.meta ต่างจาก carcols.meta อย่างไร

vehicles.meta เป็น Vehicle Metadata

ส่วน carcols.meta เกี่ยวข้องกับข้อมูล Vehicle Variation/Customization บางส่วน เช่น Mod Kit หรือองค์ประกอบของ Vehicle ตาม Asset

ถ้ารถ

Spawn ไม่ได้

ควรตรวจ Vehicle Metadata ก่อน

แต่ถ้ารถ

Spawn ได้ แต่ Mod Kit สี ไฟ หรือ Customization ผิด

จึงค่อยตรวจ carcols.meta เพิ่ม

หัวข้อ carcols.meta จะมีบทความแยกต่อไปในหมวดนี้

vehicles.meta ต่างจาก carvariations.meta อย่างไร

carvariations.meta ใช้กับข้อมูล Variation ของ Vehicle

เช่นองค์ประกอบหรือค่าเริ่มต้นบางอย่างของรถตาม Asset ที่สร้างไว้

ดังนั้นไฟล์ทั้งสาม

vehicles.meta
carcols.meta
carvariations.meta

ไม่ควรถูกมองว่าเป็นไฟล์เดียวกัน

แต่สามารถทำงานสัมพันธ์กันสำหรับ Vehicle Resource

วิธีจัด vehicles.meta สำหรับ Server ใหญ่

หาก Server มีรถจำนวนมาก ควรจัด Resource เป็นกลุ่ม

ตัวอย่าง

[cars]/
├── civilian_pack_01
├── civilian_pack_02
├── police_pack
├── ems_pack
└── jdm_pack

แล้วให้แต่ละ Pack มี Vehicle Metadata ของตัวเอง

ข้อดีคือถ้า jdm_pack มีปัญหา สามารถปิดหรือทดสอบ Pack นั้นโดยไม่ต้องแก้ Vehicle Metadata ของรถทั้งหมด

FiveM ออกแบบ Content เป็น Resources ซึ่งสามารถจัดและโหลดแยกกันได้ จึงเหมาะกับการแบ่ง Asset ตามหน้าที่มากกว่ารวมทุกอย่างไว้ใน Resource เดียวโดยไม่มีเหตุผล

สรุป FiveM vehicles.meta คืออะไร

FiveM vehicles.meta คือ Vehicle Metadata File ที่ใช้เก็บและเชื่อมข้อมูลสำคัญของ Vehicle Model เข้ากับระบบต่าง ๆ เช่น Model, Texture, Handling, Audio, Layout และข้อมูล Vehicle อื่น

FiveM โหลดข้อมูลประเภทนี้ผ่าน

VEHICLE_METADATA_FILE

ใน Resource Manifest และ fxmanifest.lua เป็น Manifest ปัจจุบันที่ใช้กำหนด Resource และ Data Files

ถ้ารถ Add-on มีปัญหา ควรตรวจความสัมพันธ์แบบนี้

Model → vehicles.meta → handlingId → handling.meta

และหากเป็นรถ Custom Sound ให้ดู

vehicles.meta → audioNameHash → Audio Resource

แนวทางของ comsiam คือไม่ Merge vehicles.meta แบบ Copy ทับทั้งไฟล์ แต่ควรเพิ่ม Vehicle Entry อย่างมีระบบ Backup ก่อนแก้ และทดสอบรถทีละคันหรือทีละ Pack เพราะเมื่อ Server มีรถหลายร้อยคัน การจัด Vehicle Metadata ให้เป็นระเบียบจะช่วยลดเวลาการ Debug ได้อย่างมาก

Comments

Popular posts from this blog

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

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

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