FiveM Collision คืออะไร ทำไม Map ถึงเดินทะลุ ตกพื้น หรือชนกำแพงล่องหน
ปัญหา FiveM Map เดินทะลุ กำแพงไม่มี Collision ตกพื้น รถทะลุอาคาร หรือชนกำแพงล่องหน เกี่ยวข้องโดยตรงกับระบบ Collision ของ GTA V/FiveM มากกว่าความสวยงามของ Model หรือ Texture
Collision คือข้อมูลที่บอก Game Engine ว่า พื้นที่ใดสามารถชนได้ พื้นตรงไหนรองรับตัวละคร กำแพงอยู่ตำแหน่งใด และรถหรือผู้เล่นควรถูกหยุดเมื่อสัมผัส Object ตรงไหน
Cfx.re แบ่ง Collision Asset Workflow ออกเป็นทั้ง World Collision ที่สามารถอยู่ในไฟล์ .ybn และ Embedded Model Collision ที่สร้าง Bounds ไว้ภายใน Drawable โดยใช้โครงสร้างอย่าง Bound GeometryBVH, Bound Poly Mesh และ Bound Poly Box
บทความนี้จาก comsiam จะอธิบาย FiveM Collision แบบละเอียด ตั้งแต่ว่าทำไม Map ถึงเดินทะลุ ความแตกต่างระหว่าง YBN กับ Embedded Collision ไปจนถึงวิธีแก้ Invisible Wall และ Collision Conflict
FiveM Collision คืออะไร
Collision คือข้อมูลทางกายภาพที่ Game Engine ใช้กำหนดว่าผู้เล่น รถ และ Entity ต่าง ๆ สามารถชนกับพื้นผิวใดได้
ตัวอย่างเช่น
กำแพงที่มองเห็น
+
Collision
=
ผู้เล่นเดินผ่านไม่ได้
แต่ถ้า
กำแพงที่มองเห็น
+
ไม่มี Collision
=
ผู้เล่นเดินทะลุ
ดังนั้น Visual Model กับ Collision เป็นคนละส่วนที่ต้องทำงานสัมพันธ์กัน
① Collision ไม่ใช่ Model
สิ่งแรกที่ต้องเข้าใจคือ
Model
≠
Collision
Model คือสิ่งที่ผู้เล่นมองเห็น
Collision คือสิ่งที่ Game Engine ใช้ในการชน
จึงสามารถเกิดกรณี
เห็นกำแพง
แต่เดินทะลุ
หรือกลับกัน
ไม่เห็นกำแพง
แต่เดินชน
ได้
Cfx.re Documentation แยกการสร้าง/แก้ Collision ออกจาก Drawable Assets อย่างชัดเจน
② FiveM Map เดินทะลุเกิดจากอะไร
สาเหตุที่พบบ่อย ได้แก่
Collision File หาย
YBN ไม่ได้ Stream
Embedded Collision หาย
Collision Mesh มีช่อง
Bound Structure ผิด
Collision Material ผิด
Collision Position ไม่ตรง Model
Scale ผิด
Rotation ผิด
Collision Asset ถูกเขียนทับ
Map สองตัว Conflict กัน
ดังนั้นอย่าเริ่มจากล้าง Cache หากผู้เล่นทุกคนเดินทะลุจุดเดียวกัน
③ YBN คือ Collision ใช่ไหม
YBN เป็นไฟล์ที่ใช้กับ World Collision
Cfx.re Official Collision Workflow ระบุขั้นตอนให้เลือก Collision ใน CodeWalker แล้วดูชื่อ .ybn จากนั้น Export เป็น XML เพื่อนำไปแก้ใน Blender และ Export กลับเป็น .ybn อีกครั้ง
ตัวอย่าง
city_collision.ybn
building_collision.ybn
road_collision.ybn
แต่ไม่ได้หมายความว่า Collision ทุก Object ต้องมี YBN แยก
④ Embedded Collision คืออะไร
Collision สามารถฝังอยู่ใน Drawable Asset ได้ด้วย
Cfx.re เรียกว่า Embedded Model Collisions
Workflow เริ่มจากเลือก Drawable แล้วใช้
Collisions
→ Create Bounds
→ Create Bound
จากนั้นสร้างโครงสร้าง Bounds ภายใน Drawable
ดังนั้น Custom Prop บางตัวอาจมี Collision โดยไม่ต้องมี .ybn แยก
⑤ World Collision กับ Embedded Collision ต่างกันอย่างไร
จำง่าย ๆ
World Collision
→ มักเกี่ยวข้องกับ .ybn
Embedded Collision
→ Collision อยู่กับ Drawable Asset
Cfx.re แยกสอง Workflow นี้ออกเป็นคนละส่วนใน Collision Documentation อย่างชัดเจน
ดังนั้นเวลาเจอ Map เดินทะลุ ต้องรู้ก่อนว่า Asset ใช้ Collision แบบไหน
⑥ YDR กับ Collision ต่างกันอย่างไร
YDR เกี่ยวข้องกับ Drawable/Model
Collision เกี่ยวข้องกับการชน
ตัวอย่าง
building.ydr
อาจแสดงอาคารได้ครบ
แต่ถ้า Collision ที่ต้องใช้หาย ผู้เล่นก็ยังเดินทะลุอาคารนั้นได้
ดังนั้น
เห็น Model ไม่ได้แปลว่า Collision โหลดแล้ว
⑦ YTD เกี่ยวกับ Collision หรือไม่
YTD เกี่ยวกับ Texture ไม่ใช่ Collision
ถ้าเกิด
กำแพงขาว
แต่ชนได้
ให้ตรวจ YTD/Material
แต่ถ้า
กำแพงสวยปกติ
แต่เดินทะลุ
ให้ตรวจ Collision
อย่าสับสนสองปัญหานี้
⑧ YMAP เกี่ยวกับ Collision หรือไม่
YMAP เน้น Map Placement และ Entity Placement
ส่วน Collision เป็นอีก Layer
ดังนั้นหาก
อาคารอยู่ตำแหน่งผิด
ให้ตรวจ YMAP
แต่ถ้า
อาคารอยู่ถูกที่
แต่ Collision อยู่ผิดตำแหน่ง
ให้ตรวจ Collision Asset/Transform
⑨ ทำไม Model อยู่ตรงหนึ่ง แต่ Collision อยู่คนละที่
สาเหตุอาจเกิดจาก
ย้าย Visual Model แต่ไม่ได้ย้าย Collision
Collision Export ด้วย World Coordinates ผิด
Scale ไม่ตรง
Rotation ไม่ตรง
Map ถูกแก้หลัง Collision ถูกสร้าง
Global Collision เดิมยังอยู่
Cfx.re ระบุว่า World Collision Objects ใหม่ควรถูกจัดวางใน World Coordinates ก่อน Export จึงต้องรักษาตำแหน่งให้สัมพันธ์กับพื้นที่จริง
⑩ Invisible Wall คืออะไร
Invisible Wall คืออาการ
ผู้เล่นเดิน
↓
ชนบางอย่าง
↓
แต่ไม่มี Object ให้เห็น
ต้นเหตุอาจเป็น
Collision เก่ายังอยู่
Model ถูกลบแล้ว
YDR ไม่โหลด
YBN ของ Map เก่ายังทำงาน
Map ใหม่กับ Map เดิมซ้อนกัน
นี่เป็นปัญหาตรงข้ามกับ “เห็น Model แต่เดินทะลุ”
⑪ ทำไมลบ Building แล้วกำแพงล่องหนยังอยู่
เพราะ Visual Object กับ Collision อาจไม่ได้อยู่ใน Asset เดียวกัน
Cfx.re World Editor ระบุข้อจำกัดว่า Buildings บางประเภทมี Collision เป็นส่วนหนึ่งของ Global Collision Mesh และการย้าย Visual Building ไม่ได้หมายความว่า Global Collision จะถูกย้ายตาม
จึงสามารถเกิด
Building หายแล้ว
แต่ Collision เดิมยังอยู่
ได้
⑫ ทำไมย้ายอาคารแล้วตำแหน่งเก่ายังชนอยู่
เหตุผลเดียวกัน
ถ้า Building ใช้ Global Collision Mesh
Visual Building
↓
ย้ายไปตำแหน่งใหม่
แต่
Global Collision
↓
ยังอยู่ตำแหน่งเดิม
ผู้เล่นอาจชน Invisible Building ที่ตำแหน่งเก่า ขณะที่อาคารใหม่ไม่มี Collision ถูกต้อง
Cfx.re เตือนเรื่องข้อจำกัดนี้โดยตรงใน World Editor Documentation
⑬ Props เล็กย้าย Collision ตามได้ง่ายกว่าไหม
ในบางกรณีใช่ โดยเฉพาะ Object ที่ใช้ Embedded Collision
Cfx.re World Editor ระบุว่า Patch Existing Objects ปัจจุบันจำกัดอยู่กับ Objects ที่มี Embedded Collision ขณะที่ Objects ซึ่ง Collision เป็นส่วนหนึ่งของ Global Collision Mesh มีข้อจำกัดมากกว่า
จึงมักพบว่า Props บางชนิดจัดการง่ายกว่า Building ใหญ่
⑭ Bound คืออะไร
Bound คือส่วนหนึ่งของ Collision Structure
สำหรับ Embedded Collision Cfx.re ให้สร้าง Bounds จาก Drawable แล้วเปลี่ยนโครงสร้างเป็น
Bound GeometryBVH
ก่อนเพิ่ม Collision Shapes เข้าไป
พูดง่าย ๆ คือเป็น Container/Structure สำหรับ Collision ของ Asset
⑮ Bound GeometryBVH คืออะไร
ใน Official Workflow หลังสร้าง Bound จาก Drawable จะให้เปลี่ยน
Bound Composite
เป็น
Bound GeometryBVH
จากนั้นจึงสร้าง Collision Mesh หรือ Primitive Collision ภายใน
นี่เป็นขั้นตอนสำคัญของ Embedded Collision
⑯ Apply Flag Preset คืออะไร
หลังสร้าง Bound GeometryBVH Cfx.re ให้เลือก BVH แล้วใช้
Apply Flag Preset
ก่อนสร้าง Collision Geometry ภายใน
ดังนั้นการสร้าง Collision ไม่ใช่เพียงวาดกล่องรอบ Model แล้วจบ
Flags และ Structure ต้องถูกต้องด้วย
⑰ Bound Poly Mesh คืออะไร
ถ้า Collision เป็น Mesh Geometry Cfx.re ระบุให้ตั้ง Sollumz Type เป็น
Bound Poly Mesh
เหมาะกับ Collision ที่ต้องตามรูปทรงมากกว่ากล่องธรรมดา เช่น
ทางลาด
พื้นต่างระดับ
Geometry ที่มีรูปทรงเฉพาะ
⑱ Bound Poly Box คืออะไร
สำหรับ Collision รูปทรง Box ใช้
Bound Poly Box
ตาม Official Workflow
เหมาะกับ
กำแพงเรียบ
Counter
กล่อง
พื้นบางประเภท
Object ทรงสี่เหลี่ยม
การใช้ Box เมื่อเหมาะสมช่วยไม่ให้ Collision ซับซ้อนเกินจำเป็น
⑲ Collision Mesh ต้องเหมือน Model 100% หรือไม่
ไม่จำเป็น
Visual Model อาจมีรายละเอียดจำนวนมาก เช่น
ร่อง
ขอบ
Decorations
Bolt
Ornament
แต่ Collision อาจต้องการเพียงรูปทรงหลักที่ผู้เล่นสัมผัส
Cfx.re Workflow รองรับทั้ง Mesh และ Primitive Shapes จึงไม่จำเป็นต้องใช้ Visual Geometry ทุก Polygon เป็น Collision
⑳ ใช้ Model ทั้งก้อนทำ Collision ดีไหม
ไม่ควรใช้เป็น Default
สมมติ Model มี
200,000 polygons
แต่ Collision จริงอาจต้องการเพียง
พื้น
กำแพง
บันได
Counter
บางส่วน
การ Copy Geometry ทั้งหมดมาทำ Collision ทำให้ Collision ซับซ้อนเกิน Gameplay ต้องการ
㉑ Collision Material คืออะไร
Collision Object ต้องมี Material ที่เหมาะสม
Cfx.re ระบุว่าเมื่อสร้าง Collision Object ใหม่ ควรสร้าง Collision Material ให้กับ Mesh แต่ละตัว และตรวจ Sollumz Type ให้ถูกต้อง
ดังนั้นมี Mesh อย่างเดียวไม่ใช่ Collision Setup ที่สมบูรณ์
㉒ Collision Flags สำคัญไหม
สำคัญ
Cfx.re ระบุว่า Collision Object ต้อง Parent ไปยัง Bound GeometryBVH ที่มี Flags ถูกต้อง และใน Embedded Workflow ยังมีขั้นตอน Apply Flag Preset โดยตรง
ถ้า Flags/Hierarchy ผิด Collision อาจไม่ทำงานตามที่คาด
㉓ ทำไมพื้นมองเห็นแต่ผู้เล่นตก
อาการ
Floor Model → ขึ้น
Floor Texture → ขึ้น
Player → ตก
แสดงว่า Visual Asset ทำงาน แต่ควรตรวจ Collision
สาเหตุอาจเป็น
Floor Collision ไม่มี
Collision Mesh มีรู
YBN หาย
Embedded Bounds หาย
Collision อยู่ผิดตำแหน่ง
อย่าแก้ YTD เพราะ Texture ไม่ใช่ตัวรองรับผู้เล่น
㉔ ตกพื้นเฉพาะบางจุด
ถ้าพื้นส่วนใหญ่เดินได้แต่ตกเฉพาะบริเวณเล็ก ๆ ให้สงสัยว่า Collision Mesh
มีช่อง
ไม่ครอบพื้นที่
Geometry ขาด
Polygon ผิด
Collision ถูกตัดออก
ให้เปิด Collision ใน Editor แล้วตรวจตำแหน่งนั้นโดยตรง
㉕ เดินทะลุกำแพงแค่บางด้าน
อาจเกิดจาก Collision Mesh ไม่ครอบ Wall ทั้งหมด หรือ Collision Object ถูกสร้างไม่ครบ
อย่าเปลี่ยน YBN ทั้ง Project ถ้าปัญหาเกิดเฉพาะ Wall หนึ่งชิ้น
ให้แยก Object นั้นแล้วตรวจ
Geometry
Bound
Material
Flags
Transform
㉖ รถทะลุแต่คนไม่ทะลุเกิดจากอะไร
ถ้า Collision Behavior ต่างกันตาม Entity Type ให้ตรวจ Collision Setup เพิ่ม เช่น
Collision Material
Flags
Bound Type
Geometry
เพราะ Collision ที่มีอยู่ไม่ได้หมายความว่าการตั้งค่าทุกอย่างถูกต้อง
Official Cfx.re Workflow ให้ตรวจทั้ง Sollumz Type, Collision Material และ Flags ไม่ใช่ Geometry เพียงอย่างเดียว
㉗ รถเด้งเมื่อชน Map เกิดจาก Collision ไหม
อาจใช่
ถ้า Collision Geometry
ซ้อน
มีขอบผิดรูป
ไม่ตรง Model
มี Surface ซ้อนกัน
Vehicle Physics อาจตอบสนองผิดปกติ
โดยเฉพาะบริเวณ
Ramp
Garage Entrance
Sidewalk
Bridge
Gate
ควรตรวจ Collision Overlay มากกว่าดู Visual Model เพียงอย่างเดียว
㉘ รถติดตรงทางเข้าทั้งที่ไม่มีอะไร
นี่คืออาการของ Invisible Collision ได้
ตรวจ
Map เก่า
Collision เก่า
YBN Resource
Global Collision
MLO เก่า
Door Collision
ก่อนสร้างทางเข้าใหม่
㉙ Garage Door เปิดแล้วรถยังผ่านไม่ได้
มีโอกาสที่
Door Visual
→ เปิดแล้ว
Door Collision
→ ยังอยู่ตำแหน่งเดิม
จึงต้องตรวจ Embedded Collision/Bounds ของ Door
โดยเฉพาะ Custom Dynamic Door ที่มีการแก้ Transform หรือ Collision หลังสร้าง Asset
㉚ Collision ของประตูสำคัญอย่างไร
ประตูเป็น Dynamic Asset จึงต้องให้
Model
Origin
Animation
Collision
ทำงานสัมพันธ์กัน
ถ้า Collision ไม่เคลื่อนตาม Door ผู้เล่นจะเจอ
ประตูเปิด
แต่ยังชน
หรือ
ประตูปิด
แต่เดินทะลุ
ได้
㉛ Collision ของบันไดควรทำอย่างไร
ขึ้นอยู่กับ Gameplay
ไม่จำเป็นต้องให้ Collision ตามร่องของทุกขั้นเสมอไป
บาง Map อาจใช้ Collision Surface ที่เรียบกว่าเพื่อให้ Player Movement ลื่น
แต่ต้องทดสอบ
เดิน
วิ่ง
กระโดด
ขึ้นลง
จริงในเกม
㉜ Collision ของทางลาดควรใช้ Mesh หรือ Box
ถ้าทางลาดมี Surface เอียง การใช้ Mesh ที่ตรงกับความลาดอาจเหมาะกว่า Box ธรรมดา
Cfx.re รองรับทั้ง Bound Poly Mesh และ Bound Poly Box จึงควรเลือกตาม Geometry จริง
หลักคือใช้รูปทรงที่ง่ายที่สุดแต่ยังให้ Gameplay ถูกต้อง
㉝ Collision ของกำแพงควรละเอียดแค่ไหน
กำแพงเรียบทั่วไปไม่จำเป็นต้องมี Collision Geometry ซับซ้อน
อาจใช้ Box ครอบพื้นที่หลักได้
แต่หากกำแพงมี
ช่องประตู
หน้าต่างที่เดินผ่านได้
ช่องทางเดิน
ต้องสร้าง Collision ให้เว้นพื้นที่เหล่านั้นอย่างเหมาะสม
ไม่เช่นนั้นอาจเกิด Invisible Wall ปิดทางเดิน
㉞ Collision ของ Furniture จำเป็นไหม
ขึ้นอยู่กับ Gameplay
โต๊ะขนาดใหญ่
มักควรมี
เก้าอี้ตกแต่งที่ผู้เล่นไม่ต้อง Interaction
อาจใช้ Collision ที่ง่ายกว่า
ขวดเล็ก ๆ หลายร้อยใบ
ไม่จำเป็นต้องให้แต่ละขวดมี Collision ละเอียดเสมอไป
ต้องรักษาสมดุลระหว่างความสมจริงกับ Asset Complexity
㉟ Props เยอะและทุกตัวมี Collision มีผลไหม
Scene ที่มี Props จำนวนมากพร้อม Collision จำนวนมากย่อมเพิ่ม Complexity ของพื้นที่
ตัวอย่าง
500 Props
+
500 Detailed Collisions
อาจไม่ใช่ Design ที่เหมาะกับ Server Production
ควรพิจารณาว่า Object ใดต้องชนจริง
㊱ Collision Optimization คืออะไร
คือการทำ Collision ให้
ง่ายพอที่จะประมวลผลได้ดี แต่แม่นพอที่จะไม่ทำลาย Gameplay
หลักสำคัญ เช่น
ลด Geometry ที่ไม่จำเป็น
ใช้ Primitive Shapes เมื่อเหมาะ
ใช้ Mesh เฉพาะพื้นที่ซับซ้อน
ตรวจ Material
ตรวจ Flags
ตรวจ Bounds
ตรวจ Transform
ไม่ทำ Collision ซ้ำ
㊲ Collision ซ้อนกันเกิดอะไร
ถ้า Map สองตัวมี Collision ในบริเวณเดียวกัน อาจเกิด
เดินติด
รถเด้ง
ขึ้นบันไดไม่ได้
Collision สูงกว่าพื้น
Invisible Wall
Player กระตุก
จึงต้องตรวจ Resource Conflict ด้วย ไม่ใช่ดู YBN ตัวเดียว
㊳ Map A และ Map B เปิดเดี่ยวปกติ แต่เปิดพร้อมกันเดินไม่ได้
นี่เป็น Pattern ที่ชัดเจนของ Conflict
ทดสอบ
Map A ON
Map B OFF
จากนั้น
Map A OFF
Map B ON
แล้ว
Map A ON
Map B ON
ถ้าสองรอบแรกปกติแต่รอบสุดท้ายผิด ให้ตรวจ Collision/Map Overlap
㊴ วิธีหา Collision Conflict แบบเร็ว
ใช้ Isolation Test
สมมติมี
pd_mlo
city_map
road_mod
vanilla_patch
เปิดเฉพาะ
pd_mlo
ก่อน
จากนั้นเพิ่ม Resource ทีละตัว
เมื่อ Collision เริ่มผิด Resource ล่าสุดคือจุดที่ควรตรวจต่อ
㊵ MLO ใหม่เดินทะลุหลังลบ MLO เก่า
ตรวจว่า MLO ใหม่มี Collision Assets ครบหรือไม่
บางครั้งผู้ดูแล Server
Copy YMAP
Copy YDR
Copy YTD
แต่ลืม
YBN
หรือ Embedded Collision Asset
ทำให้ภาพขึ้นครบแต่ไม่มี Physics
ควรติดตั้ง Original Resource ทั้งชุดก่อน Merge
㊶ Merge Map แล้ว Collision หาย
ถ้า Original Resources ทำงานปกติแต่หลัง Merge เดินทะลุ ให้ตรวจ
YBN Copy ครบหรือไม่
Filename ซ้ำหรือไม่
Asset ถูก Replace หรือไม่
Folder
streamครบหรือไม่Collision Embedded อยู่ใน YDR ที่ถูก Replace หรือไม่
อย่าเริ่มสร้าง Collision ใหม่ก่อนเปรียบเทียบ Original
㊷ YBN ชื่อซ้ำกันต้องระวังอะไร
สมมติ
map_a/collision.ybn
map_b/collision.ybn
เป็นคนละ Asset แต่ชื่อเหมือนกัน
ถ้า Merge เข้า Folder เดียวแล้วกด Replace จะเหลือเพียงหนึ่งไฟล์
ผลคือ Map อีกตัวอาจไม่มี Collision ที่ถูกต้อง
นี่เป็นหนึ่งในเหตุผลที่ไม่ควร Merge Resources ด้วยการ Copy/Replace แบบไม่ตรวจชื่อ Asset
㊸ Rename YBN เพื่อแก้ชื่อชนได้ไหม
ไม่ควร Rename แบบสุ่ม
ต้องเข้าใจว่า Collision Asset นั้นสัมพันธ์กับ World/Map Data อย่างไร
เปลี่ยนชื่อไฟล์อย่างเดียวไม่ได้รับประกันว่า Asset References หรือ Game Data ที่เกี่ยวข้องจะตามชื่อใหม่
ถ้าไม่จำเป็น การแยก Maps เป็น Resources คนละตัวมัก Debug ง่ายกว่า
㊹ Collision อยู่สูงกว่าพื้น
อาการคือ
Player เดินเหมือนลอย
หรือรถวิ่งสูงกว่าถนน
ให้ตรวจ
Z Position
Scale
Transform
Collision Geometry
โดยเฉพาะ World Collision ที่ต้องวางใน World Coordinates ตาม Workflow ของ Cfx.re
㊺ Collision อยู่ต่ำกว่าพื้น
ผู้เล่นอาจจมลงในพื้นก่อนชน Collision
ตัวอย่าง
Visual Floor Z = 30
Collision Z = 29.5
ทำให้เท้าหรือรถจมเข้า Visual Geometry
แก้โดยทำให้ Collision Surfaceสัมพันธ์กับตำแหน่ง Visual
㊻ Collision ใหญ่กว่า Model
ถ้าชนก่อนถึงกำแพง ให้ตรวจ Scale
ตัวอย่าง
Visual Wall
|-----------|
Collision
|---------------------|
ผู้เล่นจะถูกหยุดก่อนถึงผนังที่เห็น
นี่เป็น Geometry/Transform Problem ไม่ใช่ Texture
㊼ Collision เล็กกว่า Model
อาการคือผู้เล่นสามารถเดินเข้าไปในกำแพงบางส่วนก่อนจะชน
ตัวอย่าง
Visual
|----------------|
Collision
|--------|
ควรปรับ Collision ให้ครอบพื้นที่ที่ Gameplay ต้องการ
㊽ Collision Rotation ผิด
ถ้า Model หัน 90 องศา แต่ Collision ไม่หมุนตาม จะเกิด Invisible Collision รอบพื้นที่
ตรวจ
Rotation
Applied Transform
Asset Export
Parent Structure
อย่าพยายามแก้ด้วยการหมุน YMAP ถ้า Visual Model อยู่ถูกแล้ว
㊾ World Coordinates สำคัญแค่ไหน
สำคัญมากสำหรับ World Collision
Cfx.re ระบุว่าเมื่อเพิ่ม Collision Objects ใหม่ใน YBN Workflow ควรวาง Object ใน World Coordinates ก่อน Export
ดังนั้นหาก Origin/Transform ผิด Collision อาจไปโผล่อีกตำแหน่งได้
㊿ CodeWalker ใช้ดู Collision อย่างไร
Official Cfx.re Workflow คือ
เปิด CodeWalker World View
↓
Selection
↓
เปลี่ยน Entity เป็น Collision
↓
เลือก Collision
↓
ดูชื่อ .ybn
จากนั้นเปิด RPF Explorer เพื่อ Export YBN เป็น XML สำหรับแก้ไข
นี่เป็นวิธีที่ตรงที่สุดสำหรับหา World Collision ที่กำลังชนผู้เล่น
51. Blender ใช้แก้ Collision ได้ไหม
ได้
Cfx.re Workflow ให้
YBN
↓
Export XML จาก CodeWalker
↓
Import Blender
↓
แก้ Collision
↓
Export .ybn
โดยใช้ Sollumz สำหรับ Collision Asset Types และ Materials
จึงสามารถแก้ทั้ง Geometry และเพิ่ม Collision Objects ใหม่ได้
52. วิธีเพิ่ม Collision ใหม่
ตาม Workflow ของ Cfx.re ต้องดูมากกว่า Geometry
ขั้นตอนหลักคือ
สร้าง Collision Object
↓
วาง World Coordinates
↓
สร้าง Collision Material
↓
กำหนด Sollumz Type
↓
Parent เข้า Bound GeometryBVH
↓
ตรวจ Flags
↓
Export
หากข้ามขั้นตอน Structure หรือ Material อาจทำให้ Collision ทำงานผิด
53. วิธีทดสอบ Collision ในเกม
อย่าทดสอบแค่เดินชนกำแพงหนึ่งครั้ง
ควรทดสอบ
เดิน
วิ่ง
กระโดด
หมอบ/Animation
รถยนต์
มอเตอร์ไซค์
รถขนาดใหญ่
รวมทั้งตรวจ
พื้น
บันได
ทางลาด
ประตู
มุมกำแพง
ชั้นสอง
ขอบอาคาร
54. ทำไมควรทดสอบด้วยรถ
Character Collision กับ Vehicle Physics อาจทำให้เห็นปัญหาคนละแบบ
พื้นที่ที่คนเดินผ่านปกติอาจทำให้รถ
กระโดด
เด้ง
ติด
กระแทก Invisible Collision
จึงควร Test Map ที่มีถนนหรือ Garage ด้วยรถจริง
55. Collision ผิดเฉพาะผู้เล่นคนเดียว
ถ้า Server และ Client ส่วนใหญ่ชนปกติ แต่ Player เครื่องเดียวมีอาการ ให้ตรวจ Client State/Streaming เพิ่ม
แต่ถ้า
ผู้เล่นทุกคน
+
ตำแหน่งเดียวกัน
+
เดินทะลุเหมือนกัน
ควรตรวจ Asset/Collision ฝั่ง Resource ก่อน
อย่าบังคับทุกคนล้าง Cache ถ้าต้นเหตุอยู่ใน Map
56. Collision ทำให้ FPS ตกไหม
Collision เป็นส่วนของ Game/Physics Asset แต่ไม่ควรเหมารวมกับ Visual Rendering เพียงอย่างเดียว
Map ที่มี
Collision Mesh ซับซ้อนมาก
Props ที่มี Collision จำนวนมหาศาล
Duplicate Collision
ควรถูก Optimize
แต่ถ้า FPS ต่ำเพราะ Texture 4K หรือ Geometry YDR สูง การแก้ Collision อย่างเดียวไม่ช่วย
57. Collision ทำให้ Server Lag ไหม
ต้องแยก Server Script Performance ออกจาก Client/Game Physics
หาก Server Resource CPU สูง ให้ตรวจ
Script
Loops
Events
Runtime Logic
แต่ถ้าปัญหาเกิดตอนชน Object หรือขับรถใน Map ให้ตรวจ Collision/Client Asset Layer เพิ่ม
ไม่ควรลด Collision เพื่อแก้ Server Database Lag
58. Map ไม่มี Collision ควรสร้างใหม่เลยไหม
ก่อนสร้างใหม่ ให้ตรวจก่อนว่า
YBN หายจาก Resource หรือไม่
Embedded Collision อยู่ใน Original Asset หรือไม่
Merge แล้วถูกลบหรือไม่
Map Conflict หรือไม่
Original Version ใช้งานได้หรือไม่
ถ้า Original Map มี Collision ปกติ แต่ Production ไม่มี แสดงว่าปัญหาอาจอยู่ที่การติดตั้งหรือ Merge ไม่ใช่ Asset Creation
59. Original Map เดินได้ แต่หลัง Optimize เดินทะลุ
ย้อนดูสิ่งที่เปลี่ยน
เช่น
ลบ YBN
เปลี่ยน YDR
สร้าง Bounds ใหม่
Merge Resource
Rename Asset
Simplify Collision
จากนั้นนำ Original กลับมาทดสอบทีละส่วน
อย่าทำ Optimization ต่อจนหาต้นเหตุเดิมเจอ
60. Collision Simplify มากเกินไปมีผลไหม
มี
หากลดมากเกิน
ประตูอาจถูกปิดด้วย Collision
บันไดกลายเป็นกำแพง
ทางลาดกลายเป็นกล่อง
ช่องหน้าต่างถูกปิด
Optimization ต้องรักษา Gameplay Areas ที่ผู้เล่นต้องเดินผ่าน
61. Collision ละเอียดเกินไปมีผลไหม
ก็มี
หากทำ Collision ตาม Visual Mesh ทุก Detail เช่น
ร่อง
Decoration
Bolt
Trim
Furniture เล็ก ๆ
จำนวนมาก จะทำให้ Collision Structure ซับซ้อนโดยไม่จำเป็น
เป้าหมายคือ Simple but Correct
62. Map ใหญ่ควรแบ่ง Collision หรือไม่
ขึ้นอยู่กับ World Design
Map ขนาดใหญ่ เช่น
Island
Airport
Racetrack
City Expansion
อาจจัด Collision Assets เป็นกลุ่มหรือพื้นที่เพื่อช่วย Development และ Debug
ข้อดีคือหากพื้นที่หนึ่งเสีย ไม่จำเป็นต้องรื้อ Collision ทั้ง Map
63. Collision Conflict กับ Vanilla GTA V
Custom Map ไม่ได้ Conflict เฉพาะกับ Custom Map อื่น
อาจ Conflict กับ Vanilla World ด้วย
โดยเฉพาะเมื่อ
Custom Building
แทนที่
Vanilla Building
แต่ Vanilla Collision ยังอยู่
Cfx.re World Editor Documentation ระบุข้อจำกัดของ Global Collision Mesh ของ Buildings ไว้โดยตรง
64. Hide Vanilla Object แล้ว Collision หายตามไหม
ไม่ควรสมมติ
Cfx.re ระบุว่า World Editor สามารถ Hide Existing Map Objects ได้ แต่ Objects ที่ Collision เป็นส่วนหนึ่งของ Global Collision Mesh มีข้อจำกัด เพราะ Global Collision ไม่ได้ถูกแก้ตาม Visual Patch
ดังนั้น
Object มองไม่เห็น
ไม่ได้รับประกันว่า
Collision หาย
65. ทำไม Map ดูโล่งแต่รถชนอะไรบางอย่าง
เป็น Pattern ของ Invisible Collision
ตรวจ
Vanilla Collision
Map Resource เก่า
MLO Collision
YBN
Embedded Collision
และปิด Resources ทีละตัว
อย่าลด Graphics Settings เพราะไม่เกี่ยวกับ Collision Geometry
66. FiveM Collision Debug แบบเร็วที่สุด
ใช้ขั้นตอนนี้
ขั้นที่ 1
ดูว่า Visual Model ขึ้นหรือไม่
ถ้าไม่ขึ้นเลย ให้ตรวจ
YDR
YTYP
YMAP
ก่อน
ขั้นที่ 2
ระบุอาการ
เดินทะลุ
ตกพื้น
ชน Invisible Wall
รถเด้ง
Door เปิดแต่ยังชน
ขั้นที่ 3
ปิด Map/MLO อื่นบริเวณเดียวกัน
ขั้นที่ 4
ทดสอบ Original Resource
ขั้นที่ 5
ตรวจว่ามี YBN หรือ Embedded Collision
ขั้นที่ 6
เปิด CodeWalker แล้วเปลี่ยน Selection เป็น Collision
Official Cfx.re Workflow ใช้วิธีนี้เพื่อหา .ybn ที่เกี่ยวข้อง
ขั้นที่ 7
ตรวจ Position/Scale/Rotation
ขั้นที่ 8
ตรวจ Bound GeometryBVH
ขั้นที่ 9
ตรวจ Sollumz Type
Bound Poly Mesh
Bound Poly Box
ขั้นที่ 10
ตรวจ Collision Material
ขั้นที่ 11
ตรวจ Flags
ขั้นที่ 12
Export แล้ว Test ในเกมอีกครั้ง
67. วิธีแยกปัญหาจากอาการ
มองไม่เห็นอะไรเลย
ตรวจ
YDR / YTYP / YMAP
เห็น Model แต่ขาว
ตรวจ
YTD / Material
เห็น Model สวยแต่เดินทะลุ
ตรวจ
Collision / YBN / Embedded Bounds
ไม่เห็น Modelแต่ชน
ตรวจ
Visual Asset / Old Collision / Map Conflict
เดินได้แต่รถชนผิด
ตรวจ
Collision Type / Material / Flags
ประตูเปิดแต่ยังชน
ตรวจ
Door Bounds / Embedded Collision
ย้าย Building แล้วตำแหน่งเก่ายังชน
ตรวจ
Global Collision Mesh
Cfx.re ระบุว่าการย้าย Buildings มีข้อจำกัดเพราะ Collision อาจเป็นส่วนหนึ่งของ Global Collision Mesh
ตารางสรุปปัญหา FiveM Collision
| อาการ | จุดที่ควรตรวจ |
|---|---|
| เดินทะลุกำแพง | YBN / Embedded Collision |
| ตกพื้น | Floor Collision |
| รถทะลุอาคาร | Collision Geometry / Flags |
| Invisible Wall | Collision เก่า / Map Conflict |
| ชนก่อนถึงกำแพง | Collision Scale |
| จมเข้า Model ก่อนชน | Collision เล็ก/ต่ำเกิน |
| เดินลอยเหนือพื้น | Collision สูงเกิน |
| Collision อยู่ผิดที่ | World Coordinates / Transform |
| Collision หมุนผิด | Rotation |
| Door เปิดแต่ยังชน | Embedded Door Collision |
| Garage เปิดแต่รถผ่านไม่ได้ | Door/World Collision |
| บันไดเดินไม่ได้ | Collision Geometry |
| ตกเฉพาะจุด | Collision Mesh มีช่อง |
| Map A+B แล้วเดินติด | Collision Conflict |
| Hide Building แล้วยังชน | Global Collision |
| FPS/Physics แย่ | Collision Complexity / Duplicate |
FiveM Collision ที่ดีควรเป็นอย่างไร
Collision ที่ดีควร
ตรงกับ Visual Model ในจุดสำคัญ
ไม่มีช่องทำให้ตกพื้น
ไม่มี Invisible Wall
ไม่ละเอียดเกินความจำเป็น
ใช้ Primitive Collision เมื่อเหมาะ
มี Collision Material ถูกต้อง
Bound Type ถูกต้อง
Flags ถูกต้อง
Position ถูก
Scale ถูก
Rotation ถูก
ไม่ซ้อนกับ Map อื่น
Cfx.re Official Collision Workflow กำหนดทั้ง Geometry Type, Collision Material, Bound GeometryBVH และ Flags ซึ่งแสดงว่า Collision ที่สมบูรณ์ต้องดูหลายส่วนร่วมกัน ไม่ใช่เพียงมี Mesh อยู่ก็พอ
Collision Optimization ที่ควรทำ
ใช้หลัก
Visual Detail สูง
≠
Collision Detail ต้องสูงเท่ากัน
ตัวอย่าง
อาคาร
ใช้ Collision เฉพาะ
Walls
Floor
Stairs
Doorways
ที่สำคัญ
Furniture
ใช้ Shape ที่เรียบง่าย
Decoration เล็ก
ไม่จำเป็นต้องมี Collision ทุกชิ้น
Road/Ramp
รักษารูปทรงที่รถต้องสัมผัส
Door
ต้องให้ Collision เคลื่อนสัมพันธ์กับตัว Door
เป้าหมายคือให้ Gameplay แม่น แต่ไม่สร้าง Collision Geometry เกินความจำเป็น
สิ่งที่ไม่ควรทำเมื่อ Map เดินทะลุ
หลีกเลี่ยง
ล้าง Cache ก่อนทุกอย่าง
เพิ่ม RAM Server
ลด Texture
แก้ YMAP โดยไม่ตรวจ Collision
สร้าง YBN ใหม่ทั้ง Mapทันที
Merge Collision เพิ่ม
Rename YBN แบบสุ่ม
Copy Collision จาก Map อื่น
ถ้าปัญหาคือ Collision หาย สิ่งเหล่านี้อาจไม่แก้ต้นเหตุและอาจทำให้ Debug ยากกว่าเดิม
สรุป FiveM Collision คืออะไร ทำไม Map ถึงเดินทะลุ
FiveM Collision คือข้อมูลทางกายภาพที่กำหนดว่าผู้เล่น รถ และ Entities สามารถชนกับส่วนใดของ Map หรือ Model ได้
FiveM/GTA V Asset Workflow มีทั้ง
World Collision
→ .ybn
และ
Embedded Model Collision
→ Bounds ภายใน Drawable
โดย Cfx.re ใช้ Bound GeometryBVH เป็นส่วนของ Embedded Collision Structure และรองรับทั้ง Bound Poly Mesh และ Bound Poly Box พร้อม Collision Material และ Flags ที่เหมาะสม
จำแยกไฟล์แบบง่ายที่สุดว่า
YDR → Model
YTD → Texture
YTYP → Archetype
YMAP → Placement
YBN → World Collision
ถ้า เห็นกำแพงแต่เดินทะลุ ให้ตรวจ YBN หรือ Embedded Collision
ถ้า ตกพื้น ให้ตรวจ Floor Collision
ถ้า มองไม่เห็นอะไรแต่เดินชน ให้ตรวจ Invisible Collision, Map เก่า หรือ Global Collision
ถ้า Door เปิดแต่ยังชน ให้ตรวจ Embedded Bounds ของ Door
ถ้า ย้ายอาคารแล้วจุดเดิมยังมี Collision ต้องระวัง Global Collision Mesh เพราะ Cfx.re ระบุว่า Buildings บางประเภทมี Collision แยกจาก Visual Object และเป็นข้อจำกัดของ World Editor ปัจจุบัน
แนวทางของ comsiam คือแยก Visual Model ออกจาก Collision ทุกครั้งที่ Debug เพราะคำว่า “Map ขึ้นแล้ว” ไม่ได้หมายความว่า Physics ของ Map ทำงานแล้ว การตรวจ YBN, Embedded Bounds, Position, Scale, Material และ Collision Conflict อย่างเป็นระบบจะช่วยแก้ปัญหาเดินทะลุและ Invisible Wall ได้เร็วกว่าการแก้ Asset แบบสุ่ม
Comments
Post a Comment