FiveM Livery คืออะไร และวิธีเพิ่มลายรถ Custom ให้ใช้งานได้
ถ้าเคยเห็นรถตำรวจ FiveM คันเดียวกันแต่สามารถเปลี่ยนได้หลายหน่วยงาน หรือรถแข่งที่เปลี่ยนลาย Sponsor ได้หลายแบบ สิ่งเหล่านี้มักเกี่ยวข้องกับ Livery
Livery คือระบบลวดลายหรือกราฟิกที่แสดงบนพื้นผิวรถ โดยช่วยให้สามารถใช้ Vehicle Model เดิม แต่เปลี่ยนรูปลักษณ์ภายนอกได้หลายแบบโดยไม่จำเป็นต้องสร้างรถใหม่หนึ่ง Model สำหรับทุกลาย
FiveM มี Native สำหรับระบบ Livery โดยตรง เช่น GET_VEHICLE_LIVERY_COUNT สำหรับตรวจจำนวน Livery และ SET_VEHICLE_LIVERY สำหรับเลือก Livery ของ Vehicle ที่รองรับระบบนี้
บทความนี้จาก comsiam จะอธิบายว่า FiveM Livery คืออะไร ทำงานอย่างไร วิธีเพิ่มลายรถ วิธีเปลี่ยนลายด้วย Script และวิธีแก้เมื่อ Livery ไม่ขึ้นหรือเลือกแล้วรถไม่เปลี่ยน
FiveM Livery คืออะไร
FiveM Livery คือ Texture หรือลวดลายที่ถูกออกแบบให้แสดงบน Vehicle Model เพื่อเปลี่ยนรูปลักษณ์ของรถโดยไม่ต้องเปลี่ยน Model หลัก
ตัวอย่างเช่นรถตำรวจ Model เดียว
policecustom
สามารถมี Livery หลายชุด เช่น
Livery 0 = Police
Livery 1 = Sheriff
Livery 2 = Highway Patrol
Livery 3 = Tactical Unit
ผู้เล่นยังใช้รถ Model เดิม แต่เปลี่ยนเพียง Texture/Livery ที่แสดงอยู่บน Body ของรถ
วิธีนี้ช่วยลดความจำเป็นในการทำ Vehicle Model ซ้ำหลายคันเพียงเพื่อเปลี่ยนลาย
① Livery ต่างจากสีรถอย่างไร
สองอย่างนี้ไม่เหมือนกัน
สีรถ
เป็นสีพื้นฐานของ Body เช่น
ดำ
ขาว
แดง
น้ำเงิน
เขียว
สามารถเปลี่ยนผ่านระบบ Vehicle Color
Livery
เป็นรูปภาพหรือลวดลายที่วางบนตัวรถ เช่น
Logo
ตัวอักษร
หมายเลข
Sponsor
ลายตำรวจ
ลาย EMS
ลายบริษัท
Racing Graphic
ตัวอย่างรถตำรวจอาจใช้ Body สีดำ แต่มี Livery เป็นตัวอักษร
POLICE
และ Logo ของหน่วยงานอยู่บนประตู
ดังนั้นการเปลี่ยนสีรถไม่ได้หมายความว่าจะเปลี่ยน Livery ด้วย
② รถหนึ่งคันมีหลาย Livery ได้หรือไม่
ได้ ถ้า Vehicle Asset ถูกสร้างให้รองรับ
FiveM มี Native
GET_VEHICLE_LIVERY_COUNT
สำหรับตรวจจำนวน Livery ของ Vehicle โดย Native Reference ระบุว่าค่าที่คืนมาจะบอกจำนวน Livery ที่รถรองรับ และสามารถคืน -1 หาก Vehicle ไม่มีระบบ Livery ประเภทนั้น
ตัวอย่างแนวคิด
local count = GetVehicleLiveryCount(vehicle)
print(count)
ถ้ารถรองรับ 5 ลาย ระบบก็สามารถนำจำนวนดังกล่าวไปสร้างเมนูเลือก Livery ได้
③ วิธีเปลี่ยน Livery รถ FiveM
FiveM มี Native
SET_VEHICLE_LIVERY
รูปแบบคือ
SetVehicleLivery(vehicle, livery)
โดย Parameter livery คือ Index ของลายที่ต้องการใช้
ตัวอย่าง
SetVehicleLivery(vehicle, 0)
เลือกลายที่ 0
หรือ
SetVehicleLivery(vehicle, 1)
เลือกลายที่ 1
และ
SetVehicleLivery(vehicle, 2)
เลือกลายที่ 2
ต้องจำว่า Index ใน Script มักเริ่มที่
0
ไม่ใช่ 1
ดังนั้นรถที่มี 3 Livery อาจใช้ Index
0
1
2
④ ตัวอย่าง Script เปลี่ยน Livery
ตัวอย่างแนวคิดพื้นฐาน
local ped = PlayerPedId()
local vehicle = GetVehiclePedIsIn(ped, false)
if vehicle ~= 0 then
SetVehicleLivery(vehicle, 1)
end
Script นี้พยายามเปลี่ยน Vehicle ที่ผู้เล่นกำลังนั่งอยู่ไปใช้ Livery Index 1
ก่อนใช้จริงควรตรวจด้วยว่ารถมี Livery หรือไม่ และ Index ที่ต้องการอยู่ในช่วงที่ถูกต้อง
ตัวอย่างเช่น
local count = GetVehicleLiveryCount(vehicle)
if count > 0 then
SetVehicleLivery(vehicle, 0)
end
แนวทางนี้ปลอดภัยกว่าการ Assume ว่ารถทุกคันมี Livery
⑤ วิธีตรวจว่ารถมี Livery กี่ลาย
สามารถใช้
local count = GetVehicleLiveryCount(vehicle)
FiveM Native Reference ระบุ GET_VEHICLE_LIVERY_COUNT(Vehicle vehicle) สำหรับตรวจจำนวน Livery ของ Vehicle
จากนั้นสามารถ Debug เช่น
print('Livery count:', count)
ถ้าคืน
4
แสดงว่ารถมีจำนวน Livery ตามระบบที่ Native ตรวจพบ
ถ้าคืน
-1
อาจหมายความว่ารถไม่ได้ใช้ระบบ Livery แบบนี้
ตรงนี้สำคัญมาก เพราะรถ Custom บางคันใช้ Vehicle Mod Livery แทนระบบ SET_VEHICLE_LIVERY
⑥ FiveM มี Livery มากกว่าหนึ่งระบบหรือไม่
ในทางปฏิบัติ Vehicle Asset สามารถพบวิธีจัด Livery ต่างกัน
แบบหนึ่งใช้ Native
SET_VEHICLE_LIVERY
แต่อีกแบบสามารถนำ Livery ไปอยู่ในระบบ Vehicle Mods
FiveM มี SET_VEHICLE_MOD สำหรับเลือก Vehicle Modification โดยรับ modType และ modIndex
ดังนั้นถ้ารถ
GetVehicleLiveryCount()
ไม่พบ Livery แต่ใน Mechanic Menu ยังมีลายให้เลือก รถอาจใช้ระบบ Mod Kit/Livery Mod แทน
นี่เป็นสาเหตุหนึ่งที่ Script Livery บางตัวใช้กับรถหนึ่งคันได้ แต่ใช้กับอีกคันไม่ได้
⑦ Livery แบบ Texture อยู่ไฟล์ไหน
รถ Custom มักเก็บ Texture ไว้ในไฟล์ประเภท
.ytd
ตัวอย่าง
police01.ytd
และบาง Asset อาจแยก Livery Dictionary เพิ่ม เช่น
police01_sign_1.ytd
police01_sign_2.ytd
ชื่อจริงขึ้นอยู่กับวิธีที่ผู้สร้างรถออกแบบไว้
ดังนั้นหากย้ายรถจาก Resource หนึ่งไปอีก Resource ต้อง Copy Livery Assets ที่รถต้องใช้ให้ครบ
ไม่ควร Copy เพียง
YFT
+
YTD หลัก
แล้วทิ้งไฟล์อื่นเพราะคิดว่าไม่สำคัญ
⑧ YTD คืออะไรในระบบ Livery
YTD หรือ Texture Dictionary เป็น Asset ที่สามารถเก็บ Texture ต่าง ๆ ที่ Model ใช้
สำหรับรถหนึ่งคัน อาจมี Texture เช่น
Body Detail
Interior
Badge
Logo
Livery
Decal
ดังนั้นอาการ
รถขึ้นปกติแต่ลายหาย
ควรตรวจ .ytd และ Livery Texture ก่อน
ไม่ต้องไปแก้ handling.meta เพราะ Handling ไม่เกี่ยวกับภาพลายรถ
⑨ วิธีเพิ่ม Livery ใหม่ต้องทำอะไรบ้าง
ขั้นตอนจริงขึ้นอยู่กับ Vehicle Asset แต่แนวทางทั่วไปคือ
ขั้นที่ 1
ตรวจว่ารถรองรับ Livery อยู่แล้วหรือไม่
ขั้นที่ 2
หา Template ของรถ
ขั้นที่ 3
สร้างลายใหม่ตาม UV Layout
ขั้นที่ 4
Export Texture ด้วย Format ที่เหมาะสม
ขั้นที่ 5
นำ Texture เข้า YTD หรือ Livery Dictionary ตามระบบเดิมของรถ
ขั้นที่ 6
ตั้งชื่อ Texture ตาม Pattern ที่ Asset ใช้
ขั้นที่ 7
ใส่ไฟล์กลับเข้า Resource
ขั้นที่ 8
Restart Resource
ขั้นที่ 9
ทดสอบ Livery ทุก Index
อย่าเริ่มด้วยการตั้งชื่อไฟล์ตามความคิดของตัวเอง เพราะ Model อาจอ้าง Texture Name ที่กำหนดไว้แล้ว
⑩ Template รถคืออะไร
Template คือภาพ Layout ของพื้นผิวรถที่ช่วยให้คนออกแบบรู้ว่าแต่ละตำแหน่งในภาพตรงกับส่วนใดของรถ
ตัวอย่างอาจมี
ประตูซ้าย
ประตูขวา
ฝากระโปรง
หลังคา
ท้ายรถ
กันชน
นักออกแบบจึงสามารถวาง
Logo
ตัวหนังสือ
หมายเลข
Pattern
ลงตำแหน่งที่ต้องการ
จากนั้นจึง Export เป็น Texture สำหรับ Livery
⑪ ถ้าไม่มี Template ทำ Livery ได้ไหม
ทำได้แต่ยากขึ้น
อาจต้อง Export หรือเปิด Texture/UV ของ Vehicle Asset ด้วยเครื่องมือที่รองรับ GTA V Assets
หากเป็นรถที่ซื้อจาก Developer ควรตรวจ Package ก่อน เพราะบางรายมี Template ให้แล้ว
การใช้ Template จากผู้สร้างรถจะช่วยลดปัญหา
Logo กลับด้าน
ลายไม่ตรงประตู
ตัวหนังสือเบี้ยว
Graphic ขาดกลาง Body Panel
⑫ ทำ Livery ด้วย Photoshop ได้หรือไม่
ได้ หากมี Template หรือ Texture ที่เหมาะสม
โปรแกรมที่ใช้ทำภาพสามารถเป็น
Adobe Photoshop
GIMP
Affinity Photo
โปรแกรม Graphic Editor อื่นที่รองรับ Workflow ที่ต้องการ
สิ่งสำคัญไม่ใช่โปรแกรม แต่คือ
Resolution
Alpha Channel
Compression
Texture Format
UV Layout
ต้องเหมาะกับ Asset
⑬ Livery ควรใช้ความละเอียดเท่าไร
ไม่มีขนาดเดียวที่ดีที่สุดสำหรับรถทุกคัน
ตัวอย่างที่พบใน Asset ต่าง ๆ อาจเป็น
1024×1024
2048×2048
4096×4096
แต่ไม่ควรเลือก 4K เพียงเพราะภาพชัดกว่า
Server ที่มีรถ Custom จำนวนมากต้องคำนึงถึง VRAM และ Streaming ด้วย
ถ้าลายเป็นเพียง Logo ขนาดเล็กหรือ Graphic ที่ผู้เล่นแทบไม่มองใกล้มาก การใช้ Resolution สูงเกินจำเป็นอาจเพิ่ม Memory โดยไม่ได้เพิ่มคุณภาพที่เห็นจริงอย่างคุ้มค่า
⑭ Livery 4K ทำให้ FiveM กระตุกได้หรือไม่
หนึ่ง Texture อาจไม่เห็นผลมาก แต่ถ้ามี
รถ 200 คัน
Livery หลายชุดต่อรถ
Map
MLO
Clothes
Props
รวมกัน Server Content จะมี Streaming Assets จำนวนมาก
ดังนั้นควร Optimize Livery ตามความเหมาะสม
โดยเฉพาะรถตำรวจที่รถหนึ่งคันอาจมี Livery 5–20 แบบ
ไม่จำเป็นว่าทุกลายต้องใช้ Resolution สูงที่สุด
⑮ Alpha Channel สำคัญไหม
สำคัญสำหรับ Texture ที่ต้องใช้ Transparency ตาม Asset ที่ออกแบบไว้
เช่นบางส่วนของ Livery อาจต้องให้พื้นที่ที่ไม่มี Graphic โปร่งเพื่อแสดงสีรถด้านล่าง
ถ้า Alpha ผิด อาจเกิด
รถถูกลายคลุมทั้งคัน
พื้นหลังดำ
พื้นหลังขาว
Graphic โปร่งผิด
สี Body ถูกบัง
ดังนั้นต้องตรวจ Format และ Alpha จาก Texture ต้นฉบับก่อน Export
⑯ รถลายขึ้นแต่พื้นหลังขาวเกิดจากอะไร
มักควรตรวจ
Alpha Channel
Texture Export
Compression
Material
Livery Texture ต้นฉบับ
ถ้าแก้ Graphic ใน Photoshop แล้วปัญหาเริ่มทันทีหลัง Export มีโอกาสสูงว่าขั้นตอน Export ทำข้อมูล Transparency เปลี่ยน
ควรเปรียบเทียบกับ Livery เดิมที่ทำงานได้
⑰ รถลายขึ้นกลับด้านเกิดจากอะไร
มักเกี่ยวข้องกับ UV Mapping หรือ Template
รถบาง Model ใช้พื้นที่ Texture ร่วมกันทั้งสองด้าน
เช่น Graphic บนประตูซ้ายอาจถูก Mirror ไปยังประตูขวา
ถ้า Model ถูกสร้างแบบนั้น การแก้รูปภาพอย่างเดียวอาจไม่สามารถทำข้อความทั้งสองด้านให้อ่านถูกได้
ต้องดู UV Layout ของรถ
นี่เป็นข้อจำกัดของ Vehicle Asset ไม่ใช่ปัญหา FiveM Server
⑱ Logo เบี้ยวหรือล้นประตูแก้อย่างไร
กลับไปแก้บน Template
อย่าแก้ Scale ของ Vehicle Model เพียงเพราะ Logo บน Livery ใหญ่เกิน
ขั้นตอนง่ายที่สุดคือ
เปิด Template
ลด Logo
ปรับตำแหน่ง
Export ใหม่
Replace Texture
Reload Resource
Spawn รถทดสอบ
ควรดูทั้งด้านซ้าย ขวา หน้า หลัง และมุมเฉียง
⑲ เพิ่ม Livery แล้วเกมยังเห็นลายเดิม
ให้ตรวจก่อนว่า Resource โหลดไฟล์ใหม่หรือยัง
สามารถ Reload Resource ตาม Workflow ของ Server แล้ว Spawn Vehicle ใหม่เพื่อทดสอบ
หากใช้ Vehicle Entity เดิม อาจทำให้เข้าใจผิดว่าการแก้ Asset ไม่ทำงาน
ควร
Reload Resource
Reconnect ถ้าจำเป็น
Spawn รถใหม่
เลือก Livery ใหม่
แล้วตรวจอีกครั้ง
⑳ Livery ใหม่ไม่ขึ้นเลยเกิดจากอะไร
สาเหตุที่ควรตรวจ ได้แก่
Texture Name ผิด
YTD ผิด
File ไม่อยู่ใน Resource
Asset ไม่ได้ถูก Stream
Model ไม่รองรับ Livery เพิ่ม
Index ไม่ถูกต้อง
Resource ยังใช้ File เก่า
Livery ใช้ Mod Kit คนละระบบ
Alpha/Texture Format ผิด
อย่าแก้ทุกจุดพร้อมกัน
เริ่มจาก Livery เดิมที่ทำงานได้แล้ว Compare กับไฟล์ใหม่
㉑ วิธีเช็กว่า Index ถูกหรือไม่
หากรถใช้ Native Livery สามารถตรวจจำนวนก่อน
local count = GetVehicleLiveryCount(vehicle)
แล้วใช้ Index ตั้งแต่
0
จนถึง
count - 1
โดย GET_VEHICLE_LIVERY_COUNT เป็น Native ที่ FiveM มีให้สำหรับตรวจจำนวน Livery ของ Vehicle
อย่าเรียก Index ที่เกินจำนวน
เช่นรถมี 3 ลาย
0
1
2
แล้ว Script สั่ง
5
ย่อมไม่ใช่ Livery ที่มีอยู่จริง
㉒ GET_LIVERY_NAME ใช้ทำอะไร
FiveM มี Native
GET_LIVERY_NAME
สำหรับดึง Label/Name ที่สัมพันธ์กับ Livery Index และเอกสารยกตัวอย่างการวนตั้งแต่ 0 ถึงจำนวน Livery เพื่ออ่านชื่อแต่ละลาย
สิ่งนี้มีประโยชน์กับ Script Menu
แทนที่จะแสดง
Livery 0
Livery 1
Livery 2
สามารถพยายามใช้ชื่อที่ Vehicle Data มีให้ หาก Asset กำหนดไว้
㉓ รถไม่มี Livery Count แต่มีลายใน Mechanic
กรณีนี้เป็นสัญญาณว่ารถอาจใช้ Livery ผ่าน Vehicle Mods มากกว่าระบบ SET_VEHICLE_LIVERY
FiveM มี Native
SET_VEHICLE_MOD
ที่ใช้เลือก Modification ตาม modType และ modIndex
ดังนั้น Script Livery ที่รองรับเฉพาะ SET_VEHICLE_LIVERY อาจไม่เห็นลายของรถประเภทนี้
สำหรับ Server ที่มีรถจากหลาย Developer ควรทำระบบ Menu ให้ตรวจทั้งสองรูปแบบหากจำเป็น
㉔ SetVehicleModKit สำคัญกับ Mod Livery หรือไม่
รถที่ใช้ระบบ Modification มักต้องตั้ง Vehicle Mod Kit ให้ถูกต้องก่อนอ่านหรือ Apply Mods
FiveM มี Native
SET_VEHICLE_MOD_KIT
สำหรับตั้ง Mod Kit ของ Vehicle
หาก Mechanic Script อ่าน Mods ไม่ครบ ควรตรวจ Mod Kit และระบบ Vehicle Mod ของรถ ไม่ใช่ดูเฉพาะ Texture
㉕ Livery กับ carcols.meta เกี่ยวข้องกันหรือไม่
สามารถเกี่ยวข้องได้หากรถใช้ Livery ในฐานะ Vehicle Mod หรือมี Mod Kit Configuration
carcols.meta ใช้ข้อมูล Vehicle Model Variation/Customization บางส่วน
ดังนั้นถ้ารถ
Mod Livery ไม่ขึ้น
Mechanic ไม่เห็นลาย
ลายหายหลัง Merge Pack
ควรตรวจ
carcols.meta
carvariations.meta
YTD
Model
ร่วมกัน
㉖ Livery กับ carvariations.meta เกี่ยวข้องกันหรือไม่
สามารถเกี่ยวข้องกับ Vehicle Variation ตาม Asset ที่ใช้
ถ้าปัญหาเริ่มหลัง Merge Vehicle Pack ให้ย้อนตรวจ
carvariations.meta
ร่วมกับ carcols.meta
โดยเฉพาะรถที่มี Variation/Mod Kit ซับซ้อน
แต่ถ้าไฟล์ Livery .ytd หายจริง การแก้ Meta อย่างเดียวก็ไม่สามารถทำให้ Texture ที่หายกลับมาได้
㉗ รถตำรวจควรใช้ Livery หลายแบบหรือหลาย Model
ถ้ารถมี Model เดียวกันทุกอย่างและต่างเพียง Logo/หน่วยงาน การใช้ Livery หลายแบบมักจัดการง่ายกว่า
ตัวอย่าง
police01
มี
Livery 0 = City Police
Livery 1 = Sheriff
Livery 2 = Highway Patrol
แทนการสร้าง
police_city
police_sheriff
police_highway
สาม Model ที่ Asset หลักเหมือนกันเกือบทั้งหมด
แต่ถ้ารถแต่ละหน่วยมี
Lightbar ต่างกัน
Body ต่างกัน
Equipment ต่างกัน
Extra ต่างกันมาก
แยก Model หรือ Variation อื่นอาจเหมาะกว่า
㉘ EMS ใช้ Livery ได้หรือไม่
ได้ถ้า Vehicle Model ถูกสร้างให้รองรับ
ตัวอย่างรถพยาบาลหนึ่ง Modelสามารถมี
EMS
Fire Department
Rescue
Hospital
Private Medical
เป็นคนละ Livery
เหมาะกับ Server ที่ต้องการใช้ Vehicle Base เดียวกันหลายหน่วยงาน
㉙ Taxi และบริษัทใช้ Livery ได้หรือไม่
ได้เช่นกัน
ตัวอย่าง
Livery 0 = Taxi Company A
Livery 1 = Taxi Company B
Livery 2 = Driving School
Livery 3 = Rental Company
ระบบเดียวกันสามารถนำไปใช้กับ
Delivery
Logistics
Mechanic
Security
Bus
Racing Team
ได้ตาม Vehicle Asset
㉚ Livery รถแข่งมีประโยชน์อย่างไร
รถ Racing มักใช้ Livery เพื่อให้แต่ละทีมมี
Sponsor
Number
Team Logo
Driver Name
Color Scheme
ต่างกัน
รถ Model เดียวจึงสามารถมีหลาย Team Design ได้โดยไม่จำเป็นต้องสร้าง Vehicle Model ใหม่
เหมาะมากกับ Racing Server หรือ Event
㉛ Vehicle Shop สามารถเลือก Livery ตอนซื้อได้หรือไม่
ทำได้ถ้า Script รองรับ
Workflow อาจเป็น
เลือกรถ
↓
เลือกสี
↓
เลือก Livery
↓
ซื้อ
↓
Save Properties
สิ่งสำคัญคือ Vehicle Shop ต้อง Save Livery Index ลง Database หรือ Vehicle Properties
ไม่เช่นนั้นผู้เล่นอาจเลือก Livery ได้ตอน Preview แต่เมื่อซื้อจริงรถกลับเป็นลาย Default
㉜ Livery หายหลังเก็บ Garage
อาการนี้มักชี้ไปที่ระบบ Persistence
ตัวอย่าง
เลือก Livery 3
↓
เก็บ Garage
↓
Vehicle ถูก Delete
↓
เรียกรถออกใหม่
↓
Livery กลับเป็น 0
ให้ตรวจว่า Garage Save ค่า Livery หรือไม่
หาก Script ใช้ Vehicle Properties ควรมีข้อมูลเกี่ยวกับ Livery/Mods ตาม Architecture ของระบบ
กรณีนี้ไม่ควรแก้ YTD หากก่อนเก็บรถ Livery ทำงานปกติ
㉝ Restart Server แล้ว Livery กลับค่าเดิม
หลักการเดียวกัน
ถ้า Livery ถูก Apply เฉพาะกับ Entity แต่ไม่ได้ Persist ใน Database หลัง Server Restart รถใหม่จะไม่มีข้อมูลว่าผู้เล่นเคยเลือก Livery ไหน
ควร Save
Vehicle ID
Plate
Livery
หรือ Vehicle Properties ตามระบบ Garage ที่ใช้
㉞ Livery Preview ถูกแต่รถจริงผิด
Vehicle Shop บางตัวสร้าง Preview Vehicle ก่อน
จากนั้นตอนผู้เล่นซื้อจะสร้าง Vehicle Entity ใหม่
หาก Apply Livery เฉพาะ Preview
รถจริงอาจกลับเป็น Default
ให้ตรวจว่า Purchase Logic ส่ง Livery Index ไปยัง Vehicle ตัวใหม่ด้วยหรือไม่
นี่เป็นปัญหา Script มากกว่า Asset
㉟ Livery เปลี่ยนแล้วคนอื่นเห็นไหม
Vehicle Properties ที่ใช้กับ Networked Vehicle ควรถูกจัดการให้สอดคล้องกับระบบ Network/Ownership ของ Server
หาก Script เปลี่ยนบางอย่างแบบ Local Only หรือ Apply ตอน Entity ยังไม่ได้อยู่ใน State ที่ถูกต้อง ผู้เล่นคนอื่นอาจเห็นผลต่างกันได้ในบาง Architecture
ดังนั้น Server ที่มีระบบ Garage หรือ Vehicle Customization ควรให้ค่าที่ต้อง Persist ถูก Save และ Restore จากข้อมูลส่วนกลาง
㊱ Livery ควรบันทึกใน Database หรือไม่
ถ้าผู้เล่นสามารถเลือกและเป็นเจ้าของรถเอง ควรบันทึกหากต้องการให้ลายอยู่ถาวร
ตัวอย่างข้อมูล
plate
model
color
mods
livery
โครงสร้างจริงขึ้นอยู่กับ Framework/Vehicle Script
หากเป็นรถ Job ที่ต้องใช้ Livery คงที่ อาจกำหนดผ่าน Config ทุกครั้งตอน Spawn โดยไม่จำเป็นต้องให้ผู้เล่นเลือกเอง
㊲ Police Job ควรกำหนด Livery อัตโนมัติไหม
เหมาะมากในบาง Server
ตัวอย่าง
Police Rank 1 → Livery 0
Sheriff → Livery 1
Highway → Livery 2
หรือเลือกตาม Station
Script สามารถ Apply Livery หลัง Vehicle Spawn
แต่ต้องตรวจว่ารถแต่ละ Model มีจำนวน Livery เท่ากันหรือไม่
อย่า Assume ว่า Livery 2 ของรถทุกคันคือ Highway
ควรสร้าง Config แยกตาม Model
㊳ วิธีทำ Config Livery รถหลายคัน
ตัวอย่างแนวคิด
local liveries = {
police01 = {
patrol = 0,
sheriff = 1,
highway = 2
},
police02 = {
patrol = 1,
sheriff = 3,
highway = 4
}
}
ข้อดีคือไม่ต้อง Hard-code Index กระจายอยู่หลาย Script
เมื่อรถ Pack Update สามารถแก้ Config กลางได้
โค้ดจริงต้องปรับตาม Resource ของ Server
㊴ Car Pack หลายคันใช้ Livery Name เหมือนกันได้ไหม
ชื่อที่แสดงใน Menu สามารถเหมือนกันได้ เช่น
Police
Sheriff
Highway
แต่ Index ของรถแต่ละ Modelอาจไม่เหมือนกัน
รถ A
Police = 0
Sheriff = 1
รถ B
Police = 2
Sheriff = 3
จึงควร Mapping ตาม Vehicle Model มากกว่ากำหนด Index กลางหนึ่งชุดให้รถทั้งหมด
㊵ Livery หายหลัง Merge Car Pack
ตรวจตามลำดับ
1. YTD
Livery Texture อยู่ครบหรือไม่
2. Shared Texture
มีไฟล์ที่ลายใช้ร่วมกับ Pack เดิมหรือไม่
3. carcols.meta
Mod Kit/Customization ถูก Merge หรือไม่
4. carvariations.meta
Vehicle Variation Entry ครบหรือไม่
5. Model
ยังรองรับ Livery อยู่หรือไม่
6. Resource Conflict
มี Model ชื่อซ้ำหรือไม่
7. Script
อ่าน Livery ผ่านวิธีที่รถรองรับหรือไม่
ถ้ารถต้นฉบับทำงาน แต่หลัง Merge เสีย ให้สงสัยกระบวนการ Merge ก่อน
㊶ Livery ของรถ A ไปขึ้นรถ B
นี่เป็นอาการ Conflict ที่ต้องตรวจทันที
อาจเกิดจาก
Texture Dictionary ชื่อซ้ำ
Model Name Conflict
Shared YTD ผิด
Merge Asset ผิด
Mod Kit Conflict
Resource ซ้ำ
ให้ปิด Resource อื่นชั่วคราวและทดสอบรถแยก
ถ้ารถสองคันทำงานเมื่ออยู่คนละ Resource แต่ผิดเมื่อรวม Pack ควรตรวจชื่อและ Reference ที่ชนกัน
㊷ Livery ไม่ขึ้นเฉพาะผู้เล่นบางคน
ถ้าผู้เล่นส่วนใหญ่เห็นลายปกติ แต่เครื่องหนึ่งเห็นผิด ให้ตรวจฝั่ง Client เพิ่ม
เช่น
Streaming
Error ใน F8
Asset Loading
Memory
Client State
แต่ถ้าผู้เล่นทุกคนเห็น Livery คันเดียวกันเสียเหมือนกัน ให้ตรวจ Resource/Asset ก่อน
แยก
เสียคนเดียว
กับ
เสียทุกคน
ให้ได้ก่อน Debug
㊸ Livery ทำให้ FPS ตกไหม
Livery เป็น Texture Asset จึงมีผลต่อการใช้ Memory ตามขนาด Resolution, Format และจำนวน Asset ที่ถูกโหลด
รถหนึ่งคันมี Livery 2–3 แบบอาจไม่ใช่ปัญหาใหญ่ แต่ Server ที่มีรถหลายร้อยคันพร้อม Livery 4K จำนวนมากควรตรวจ Asset Budget โดยรวม
ไม่ควร Optimize เฉพาะ Model แล้วปล่อย Texture ทุกไฟล์มีขนาดสูงสุด
㊹ ควร Optimize Livery อย่างไร
หลักสำคัญคือ
ใช้ Resolution เท่าที่จำเป็น
ลบ Texture ที่ไม่ได้ใช้
ตรวจ Alpha
ใช้ Compression ให้เหมาะสม
ตรวจ Mipmap
หลีกเลี่ยงไฟล์ซ้ำ
ทดสอบความคมในเกมจริง
ทดสอบเมื่อมีรถหลายคันพร้อมกัน
เป้าหมายคือให้ลายดูดีในระยะที่ผู้เล่นมองเห็นจริง พร้อมไม่ใช้ทรัพยากรมากเกินจำเป็น
㊺ อย่าลบ Livery ที่คิดว่าไม่ได้ใช้ทันที
ก่อนลบ
sign_1
sign_2
sign_3
ให้ตรวจว่า
Vehicle Job ใช้อยู่หรือไม่
Garage Save Index ใดอยู่
Player-Owned Vehicles มี Livery นั้นหรือไม่
Event ใช้หรือไม่
Script อ้าง Index อยู่หรือไม่
ถ้าลบ Livery จาก Pack แต่ Database ยัง Save Index เก่าไว้ ผู้เล่นบางรายอาจเจอรถแสดงผลไม่ตรงกับเดิม
㊻ วิธีทดสอบ Livery ก่อนขึ้น Production
ควรทดสอบครบทุกลาย
ตัวอย่างรถมี 5 Livery
0
1
2
3
4
อย่าทดสอบเพียง Livery 0
ตรวจแต่ละลายว่า
Logo ถูกด้าน
ตัวหนังสืออ่านถูก
ไม่มีรอยต่อ
หลังคาถูก
ฝากระโปรงถูก
ประตูถูก
สีสัมพันธ์กับ Body
Alpha ถูก
ไม่เบลอผิดปกติ
รวมถึงทดสอบทั้งกลางวันและกลางคืน
㊼ วิธี Debug Livery FiveM แบบเร็วที่สุด
ทำตามนี้
ขั้นที่ 1
Spawn รถตรง ๆ
ขั้นที่ 2
ตรวจจำนวน Livery
GetVehicleLiveryCount(vehicle)
Native นี้มีอยู่ใน FiveM สำหรับตรวจจำนวน Livery โดยตรง
ขั้นที่ 3
ลอง
SetVehicleLivery(vehicle, 0)
SetVehicleLivery(vehicle, 1)
ตามจำนวนจริง
ขั้นที่ 4
ถ้าไม่พบ Livery ให้ตรวจระบบ Vehicle Mods
FiveM มี SET_VEHICLE_MOD สำหรับเลือก Mod Index ของ Vehicle
ขั้นที่ 5
ตรวจ YTD
ขั้นที่ 6
ตรวจ Livery Texture
ขั้นที่ 7
ตรวจ carcols.meta
ขั้นที่ 8
ตรวจ carvariations.meta
ขั้นที่ 9
เทียบ Resource ต้นฉบับ
ขั้นที่ 10
ทดสอบโดยไม่ผ่าน Garage/Mechanic
ขั้นที่ 11
ถ้าใช้งานได้ตรง ๆ แต่หลัง Garage หาย ให้ตรวจ Persistence
ขั้นที่ 12
ถ้าหลัง Merge เสีย ให้แยก Resource Test
ตารางสรุปปัญหา FiveM Livery
| อาการ | จุดที่ควรตรวจ |
|---|---|
| ไม่มี Livery เลย | Model / YTD / ระบบ Livery |
| Livery Count = -1 | ตรวจว่าเป็น Mod Livery หรือไม่ |
| เลือก Livery แล้วไม่เปลี่ยน | Index / Vehicle System |
| ลายหาย | YTD / Texture |
| ลายพื้นหลังขาว | Alpha |
| Logo กลับด้าน | UV Mapping |
| Logo เบี้ยว | Template |
| Mechanic ไม่มี Livery | Mod Kit / Script |
| Spawn ตรงได้ แต่ Garage หาย | Persistence |
| Preview ถูก รถจริงผิด | Vehicle Shop Logic |
| หลัง Merge หาย | Meta / YTD / Conflict |
| รถ A ได้ลายรถ B | Texture/Model Conflict |
| ผู้เล่นบางคนไม่เห็น | Client Streaming |
| ลายเบลอ | Resolution / Mipmap |
| FPS ลดเมื่อรถเยอะ | Texture/Asset Load |
Livery กับ Vehicle Color ใช้ร่วมกันอย่างไร
รถที่ออกแบบดีสามารถใช้
Vehicle Color + Livery
ร่วมกันได้
ตัวอย่าง
Body Color = Black
Livery = POLICE สีขาว
หรือ
Body Color = Red
Livery = Racing Sponsor
ข้อดีคือรถหนึ่งลายสามารถใช้กับ Body Color หลายสีได้ ถ้า Texture มี Transparency และ Material ถูกออกแบบอย่างเหมาะสม
แต่รถบาง Asset Bake สี Body ไว้ใน Livery แล้ว ทำให้เปลี่ยน Vehicle Color ได้ผลน้อยกว่าที่คาด
Livery แบบไหนเหมาะกับ FiveM Server
เหมาะมากกับ Server ที่มี
Police
EMS
Fire Department
Taxi
Mechanic
Logistics
Racing
Gang Vehicles
Company Cars
Event Vehicles
เพราะ Vehicle Model เดียวสามารถให้หลายหน่วยงานหรือหลายทีมใช้ได้
สำหรับ Server ใหญ่ วิธีนี้ยังช่วยลดการสร้าง Model ซ้ำที่ต่างกันเพียงลายภายนอก
สรุป FiveM Livery คืออะไร และวิธีเพิ่มลายรถ
FiveM Livery คือ Texture หรือลวดลายสำหรับเปลี่ยนรูปลักษณ์ของ Vehicle Model โดยไม่จำเป็นต้องสร้างรถใหม่ทุกลาย
FiveM มี Native
GET_VEHICLE_LIVERY_COUNT
SET_VEHICLE_LIVERY
GET_LIVERY_NAME
สำหรับตรวจและควบคุมระบบ Livery ของรถที่รองรับโดยตรง
ขณะเดียวกันรถ Custom บางประเภทอาจใช้ Livery ผ่านระบบ Vehicle Mods จึงต้องตรวจ Asset จริงก่อนสรุปว่า Livery หายเพียงเพราะ GET_VEHICLE_LIVERY_COUNT ไม่พบลาย
ถ้าจะเพิ่ม Livery ใหม่ ให้เริ่มจาก
Template → ออกแบบลาย → Texture/YTD → Resource → ตรวจ Livery Index → ทดสอบในเกม
และหากรถทำงานก่อน Merge แต่ Livery หายหลังรวม Car Pack ให้ตรวจ
YTD → carcols.meta → carvariations.meta → Mod Kit → Resource Conflict
แนวทางของ comsiam คือใช้รถ Model เดียวกับหลาย Livery เมื่อความแตกต่างมีเพียง Graphic เพราะช่วยให้ระบบรถเป็นระเบียบกว่าการสร้าง Vehicle Model ซ้ำจำนวนมาก และควร Optimize Texture ทุกลายโดยคำนึงถึง Server Asset ทั้งหมด ไม่ใช่ดูความคมของ Livery เพียงอย่างเดียว
Comments
Post a Comment