FiveM Ped คืออะไร ต่างจาก Player, NPC และ Custom Ped อย่างไร
FiveM Ped คือ Entity ประเภทตัวละครใน GTA V/FiveM ไม่ว่าจะเป็นคนเดินถนน NPC เจ้าหน้าที่ ตัวละครที่ Script สร้างขึ้น หรือ Ped ที่ผู้เล่นกำลังควบคุมอยู่ โดย Cfx.re อธิบาย CREATE_PED ว่าใช้สร้าง Ped ซึ่งเป็นตัวละครสองขา/คนเดินถนน/Actor ตาม Model, ตำแหน่ง และ Heading ที่กำหนด.
คำว่า Ped มาจากแนวคิด Pedestrian ของ GTA แต่ในงาน FiveM คำนี้ถูกใช้กว้างกว่าคนเดินถนนทั่วไป เพราะ Script สามารถสร้าง Ped เพื่อเป็นร้านค้า เจ้าหน้าที่รักษาความปลอดภัย หมอ ช่าง พนักงาน NPC หรือ Character สำหรับ Mission ได้
บทความนี้จาก comsiam จะอธิบายว่า FiveM Ped คืออะไร แตกต่างจาก Player, NPC และ Custom Ped อย่างไร รวมถึง Ped Model, Components, Props, Network ID และวิธีสร้าง Ped อย่างถูกต้อง
① FiveM Ped คืออะไร
Ped คือ Entity ประเภทตัวละคร
ตัวอย่างเช่น
คนเดินถนนตำรวจ NPCหมอ NPCพนักงานร้านค้าSecurityGang NPCMission CharacterPlayer Characterสัตว์บาง Model
Cfx.re มีรายการ Ped Models ของ GTA V แยกเป็นหลายกลุ่ม เช่น Ambient Male/Female, Animals, Gang, Multiplayer, Scenario และ Story Models.
② Ped กับ NPC เหมือนกันไหม
ไม่เหมือนกันเสียทีเดียว
Ped เป็นประเภท Entity
ส่วน NPC เป็นคำที่ใช้เรียก Character ที่ไม่ได้ถูกผู้เล่นควบคุม
ดังนั้น
Ped├── Player Ped└── NPC Ped
เป็นภาพจำที่เข้าใจง่ายกว่า
Ped ที่ Script สร้างด้วย CREATE_PED มักถูกใช้เป็น NPC แต่ Ped ไม่ได้หมายถึง NPC เท่านั้น.
③ Player Ped คืออะไร
Player Ped คือ Ped Entity ที่เป็นตัวละครของผู้เล่น
ใน Client Script มักพบ
local ped = PlayerPedId()
แล้วนำ Ped Handle ไปใช้กับ Native ต่าง ๆ เช่น
ตรวจตำแหน่งเปลี่ยนเสื้อผ้าตรวจ InteriorAnimationWeaponHealth
ดังนั้น Player และ Ped เป็นคนละ Concept แต่ Player มี Ped ที่ใช้เป็น Character ในโลกเกม
④ NPC Ped คืออะไร
NPC Ped คือ Ped ที่ไม่ได้ถูกผู้เล่นควบคุมโดยตรง
ตัวอย่าง
ShopkeeperPolice NPCDoctor NPCMechanic NPCGuardQuest NPCDealerReceptionist
NPC เหล่านี้อาจเป็น Population Ped ที่ GTA สร้างเอง หรือ Script-created Ped ที่ Resource สร้างขึ้น
⑤ Population Ped คืออะไร
Population Ped คือ Ped ที่ระบบ Population ของเกมสร้างขึ้น เช่นคนเดินถนนทั่วไป
FiveM มี Event populationPedCreating ซึ่งถูกเรียกก่อน Population Ped ถูกสร้าง และ Script สามารถเปลี่ยน Model, Position หรือยกเลิกการสร้างได้.
จึงต่างจาก Ped ที่ Resource สร้างเองด้วย CREATE_PED
⑥ Script-created Ped คืออะไร
คือ Ped ที่ Resource สร้างขึ้นเอง
ตัวอย่าง
local ped = CreatePed(pedType,model,x,y,z,heading,isNetwork,false)
Cfx.re ระบุว่า CREATE_PED สร้าง Ped ด้วย Model ที่กำหนด ณ Coordinates และ Heading ที่ระบุ และ Model ควรถูก Load ไว้ก่อน เช่นผ่าน REQUEST_MODEL.
⑦ Ped Model คืออะไร
Ped Model คือ Model ที่กำหนดรูปลักษณ์พื้นฐานของ Ped
ตัวอย่าง Model Categories ที่ Cfx.re แสดง ได้แก่
Ambient MaleAmbient FemaleAnimalsGangMultiplayerScenarioStory
รายการ Ped Models อย่างเป็นทางการของ Cfx.re ใช้สำหรับอ้างชื่อ Models ที่ GTA V รองรับ.
⑧ Ped Model กับ Ped ต่างกันอย่างไร
จำแบบนี้
Ped= Entity ตัวละครที่มีอยู่ในโลกเกมPed Model= Model/รูปลักษณ์ที่ Ped ตัวนั้นใช้
ตัวอย่าง
Ped Entity #1234↓Model = a_m_m_business_01
Ped Handle และ Model จึงไม่ใช่สิ่งเดียวกัน
⑨ Ped Handle คืออะไร
เมื่อ Script สร้างหรือค้นพบ Entity จะใช้ Handle ฝั่ง Script เพื่ออ้างถึง Entity นั้น
เช่น
local ped = CreatePed(...)
ค่าที่ได้ถูกใช้ส่งเข้า Native อื่น เช่น
ตั้ง Animationตั้ง Headingตั้ง Clothingตรวจ Healthลบ Entity
Ped Handle เป็นการอ้าง Entity ใน Context ปัจจุบัน ไม่ควรใช้แทน Network ID สำหรับการอ้างข้ามเครื่อง
⑩ Network ID คืออะไร
FiveM แยก Local Entity Handle ออกจาก Network ID
Cfx.re ระบุว่า Network ID เป็น Integer 16-bit ที่แทน Networked Entity ในช่วงเวลาหนึ่ง และหากต้องอ้าง Entity ข้าม Clients หรือ Server ควรใช้ Network ID.
ดังนั้น
Local Handle→ ใช้ภายในเครื่อง/ContextNetwork ID→ ใช้อ้าง Entity ข้าม Network
⑪ Ped Local กับ Networked Ped ต่างกันอย่างไร
Local Ped
Ped ที่ไม่จำเป็นต้อง Sync ไปยัง Client อื่น
เหมาะกับบาง UI/Visual/Local Gameplay Use Cases
Networked Ped
Ped ที่ต้องมีตัวตนร่วมกันระหว่าง Clients
เช่น
NPC ร้านค้าตำรวจ NPCMission PedBoss NPC
ที่ผู้เล่นหลายคนต้องเห็นตัวเดียวกัน
ต้องออกแบบ Networking ให้เหมาะสม ไม่ใช่แค่ตั้ง Boolean แบบสุ่ม
⑫ isNetwork ใน CreatePed คืออะไร
CREATE_PED มี Parameter isNetwork
CREATE_PED(pedType,modelHash,x,y,z,heading,isNetwork,bScriptHostPed)
Cfx.re Native Reference แสดง Parameter นี้โดยตรง.
ถ้า Ped ต้องใช้ร่วมกันหลาย Client ควรออกแบบ Network Ownership และ Entity Lifecycle อย่างถูกต้อง
⑬ OneSync เกี่ยวกับ Ped อย่างไร
OneSync คือระบบ State Awareness/Networking ของ FiveM และ Cfx.re ระบุว่าสามารถสร้าง Entities ฝั่ง Server ได้ เช่น
PedsVehiclesObjects
สำหรับ Server ที่ต้องการ NPC ที่มี Authority/State ระดับ Server การสร้าง Entity ฝั่ง Server เป็นอีกแนวทางที่ควรพิจารณา
⑭ Server-created Ped ต่างจาก Client-created Ped อย่างไร
Client-created Ped ถูกสร้างโดย Client Script
ส่วน Server-created Entity ภายใต้ OneSync สามารถถูกสร้างจาก Server
แนวคิด
Client-created→ Client เป็นจุดเริ่มต้นServer-created→ Server เป็นจุดเริ่มต้น
การเลือกแบบใดขึ้นอยู่กับ
PersistenceNetworkingGameplayจำนวนผู้เล่นOwnership
ไม่ใช่ว่าแบบใดดีกว่าทุกกรณี
⑮ Ped Persistence คืออะไร
Persistence หมายถึงการออกแบบให้ Entity อยู่ต่อในช่วงเวลาที่ Gameplay ต้องการ
Cfx.re OneSync Documentation ยกตัวอย่างการสร้าง Server Entity และใช้ Entity Orphan Mode เพื่อช่วยจัดการ Entity Lifecycle.
ดังนั้นถ้าสร้าง NPC สำคัญ เช่น Dealer หรือ Mission Character ควรคิดเรื่อง Lifecycle ตั้งแต่ต้น
⑯ Ped หายเมื่อเดินไกลเกิดจากอะไร
ต้องแยก
Local EntityNetwork OwnershipPopulation ManagementScript CleanupResource StopEntity Scope
ออกจากกัน
อย่าแก้โดยสร้าง Ped ใหม่ทุก Frame เพราะอาจสร้าง Entity ซ้ำจำนวนมาก
⑰ Ped Spawn ซ้ำหลายตัวเกิดจากอะไร
Pattern ที่พบบ่อยคือ Script มี
while true doWait(0)CreatePed(...)end
หรือ Event ถูก Trigger ซ้ำโดยไม่มี State Check
ผลคือ
NPC 1NPC 2NPC 3NPC 4...
ควรสร้าง Ped เมื่อจำเป็นและเก็บ Handle/Network ID ไว้
⑱ ก่อน CreatePed ต้องโหลด Model ไหม
ควร
Cfx.re Native Documentation ระบุว่า Model ควรถูก Loaded ก่อน CREATE_PED เช่นใช้ REQUEST_MODEL.
แนวคิดคือ
Model Hash↓Request Model↓รอ Model Loaded↓CreatePed
ไม่ควร Create Ped ก่อน Model พร้อม
⑲ ตัวอย่าง Request Model ก่อนสร้าง Ped
ตัวอย่างพื้นฐาน
local model = `a_m_m_business_01`RequestModel(model)while not HasModelLoaded(model) doWait(0)endlocal ped = CreatePed(4,model,0.0,0.0,72.0,0.0,false,false)
แนวทางนี้สอดคล้องกับ Cfx.re CREATE_PED Reference ที่ระบุว่า Model ควรถูก Load ก่อน.
⑳ หลังสร้าง Ped ควร Release Model ไหม
เมื่อ Script ไม่จำเป็นต้อง Hold Model ไว้แล้ว ควรจัดการ Model Streaming State อย่างเหมาะสมตาม Workflow ของ Resource
โดยเฉพาะ Script ที่สร้าง NPC หลาย Models ไม่ควร Request Models ซ้ำตลอดเวลาโดยไม่มีการจัดการ State
㉑ pedType คืออะไร
CREATE_PED มี Parameter pedType เป็น Integer.
แต่สำหรับ FiveM Scripts ทั่วไป ไม่ควรเลือกค่าจาก Tutorial เก่าแบบสุ่มเพียงเพราะเห็น Code ตัวอย่าง
สิ่งสำคัญกว่าคือ Model, Network State และ Behavior ของ Ped ที่ Resource ต้องการ
㉒ Heading คืออะไร
Heading คือทิศที่ Ped หันตอนถูกสร้าง
เช่น
0°90°180°270°
CREATE_PED รับ heading เป็น Parameter โดยตรง.
ถ้า NPC หันหลังให้ Counter หรือหันผิดทาง ให้ตรวจ Heading ก่อนย้าย Coordinates
㉓ Ped Coordinates สำคัญอย่างไร
Ped ถูกสร้างที่
xyz
ตาม Parameters ของ CREATE_PED.
ถ้า Z ต่ำกว่าพื้น อาจเห็น Ped จม
ถ้าสูงเกิน Ped อาจตกลงมา
ถ้าอยู่ใน MLO ต้องตรวจ Collision และ Interior Position ด้วย
㉔ Ped Spawn ใต้พื้นแก้อย่างไร
ตรวจ
Z CoordinateMap CollisionMLO CollisionInterior Position
ก่อน
อย่าเพิ่ม Z ทีละ 10 แบบสุ่มหาก Map มีพื้นหลายระดับ
สำหรับ NPC ร้านค้า ควรใช้ Coordinates ที่ทดสอบจาก Map จริง
㉕ Ped ลอยเหนือพื้นเกิดจากอะไร
อาจเกิดจาก
- Z สูงไป
- Collision ยังไม่พร้อม
- Map Asset ผิด
- Spawn Position ไม่ตรง Floor
ถ้า NPC ทุกตัวใน Map เดียวกันลอย ควรตรวจ Map/Collision เพิ่ม
㉖ Ped กับ Custom Ped ต่างกันอย่างไร
Ped เป็นคำทั่วไปสำหรับ Character Entity
ส่วน Custom Ped หมายถึง Ped Model ที่เพิ่มหรือปรับแต่งขึ้นมาเอง
ดังนั้น
Ped├── Vanilla GTA Ped└── Custom Ped
Custom Ped ยังถูกสร้างและจัดการในฐานะ Ped Entity เช่นเดิม
㉗ Custom Ped ไม่เหมือน Custom Clothes
ต่างกันชัดเจน
Custom Ped→ เปลี่ยน Character Model ทั้งตัวCustom Clothes→ เปลี่ยน Clothing Components/Props ของ Ped ที่รองรับ
Custom Ped บางตัวอาจไม่ได้รองรับ Clothing Variations แบบเดียวกับ Multiplayer Freemode Ped
㉘ Ped กับ EUP ต่างกันอย่างไร
Ped= ตัวละครEUP= Uniform/Clothing Assets
EUP ถูก Apply บน Ped Models ที่รองรับ Clothing Variation
ดังนั้น EUP ไม่ใช่ Ped Model โดยตัวมันเอง
㉙ Ped Components คืออะไร
Ped Models ที่รองรับ Clothing Variations สามารถมี Drawable Components เช่น
TorsoLegsShoesUndershirtsTopsArmorAccessories
FiveM มี Collection-based APIs สำหรับ Drawable Components และ Props โดยตรง.
㉚ Props คืออะไรใน Ped
Props เป็น Accessory Data ที่แยกจาก Drawable Components
Cfx.re ระบุว่า Ped Drawable Components และ Props ถูกจัดเก็บเป็น Named Collections และมี Indexing Mechanism คล้ายกัน.
จึงควรแยก
Components
กับ
Props
ใน Character System
㉛ Ped Collections คืออะไร
FiveM อธิบายว่า Ped Drawable Components และ Props ถูกเก็บใน Named Groups เรียกว่า Collections.
นี่สำคัญกับ
Custom ClothesEUPAdd-on ClothesProps
เพราะ Custom Collections สามารถใช้ Local Index ที่เสถียรกว่า Global Index หลัง Title Updates
㉜ Ped ทุกตัวรองรับ Clothes เหมือนกันไหม
ไม่
Clothing Variations ขึ้นกับ Ped Model
Ped Story Character หรือ NPC Model บางตัวไม่ได้มี Component Structure แบบ Freemode Character
จึงไม่ควรใช้ Clothing IDs จาก Ped หนึ่งกับ Ped อื่นโดยอัตโนมัติ
㉝ Ped Model List หาได้จากไหน
Cfx.re มีหน้า Ped Models ซึ่งรวบรวม Working Ped Models ของ GTA V แยกเป็น Categories เช่น Ambient, Gang, Multiplayer, Scenario และ Story.
สำหรับ Development ควรใช้ชื่อ Model ที่ตรวจสอบได้แทนการเดา Hash
㉞ Model Hash คืออะไร
Native CREATE_PED รับ
Hash modelHash
เป็น Parameter.
ใน Lua มักเห็นรูปแบบ
local model = `a_m_m_business_01`
หรือการ Hash ชื่อ Model ก่อนใช้
㉟ Ped Model ไม่ถูกต้องจะเกิดอะไร
หาก Model ไม่ใช่ Model ที่ใช้ได้หรือยังไม่ถูก Load การสร้าง Ped สามารถล้มเหลวหรือไม่ได้ผลตามต้องการ
ดังนั้นก่อน Create ควร
ตรวจ Model↓Request Model↓รอ Load↓Create Ped
ตาม Requirement ที่ Cfx.re ระบุ.
㊱ Ped ไม่ Spawn ควรตรวจอะไร
เริ่มจาก
ModelModel Loaded?CoordinatesCreatePed Return ValueResource ErrorNetwork Configuration
จากนั้นจึงตรวจ AI/Behavior
อย่าดู Animation ก่อนถ้า Ped ยังไม่ได้ถูกสร้าง
㊲ CreatePed คืน 0 หมายความว่าอะไร
หาก Native ไม่ได้คืน Entity Handle ที่ใช้งานได้ ควรถือว่าการสร้างไม่สำเร็จและตรวจ Model/Parameters/Environment ก่อน
อย่าใช้ Handle นั้นต่อกับ Native อีกหลายสิบตัว เพราะจะทำให้ Debug ซับซ้อนขึ้น
㊳ Ped ยืนเฉย ๆ ทำอย่างไร
NPC ร้านค้า/Receptionist มักต้องการให้ยืนอยู่ตำแหน่งเดิม
แต่ควรจัด Behavior ด้วย Task/Scenario หรือ Ped Behavior APIs ตาม Use Case แทนการ Teleport Ped กลับตำแหน่งทุก Frame
เป้าหมายคือให้ AI Behavior ทำงานเป็นระบบ
㊴ Ped เดินหนีเกิดจากอะไร
GTA Ped มี AI และ Event Responses ของตัวเอง
Ped อาจตอบสนองต่อ
- การยิง
- Vehicle
- Player
- Combat
- World Events
ถ้า NPC ร้านค้าต้องยืนประจำตำแหน่ง ต้องกำหนด Behavior ที่เหมาะสม ไม่ใช่เพียง Spawn แล้วจบ
㊵ Ped ร้านค้าควรเป็น Invincible ไหม
ขึ้นกับ Gameplay Design
ถ้า NPC เป็น UI Anchor ที่ไม่ต้องถูกฆ่า อาจตั้ง State ป้องกัน Damage
แต่ถ้า Server ต้องการ Roleplay ที่ NPC สามารถถูกโจมตีได้ก็ไม่ควรบังคับ Invincible
นี่เป็น Design Choice ไม่ใช่ Requirement ของ Ped
㊶ Ped ควร Freeze Position ไหม
ขึ้นกับงาน
ตัวอย่าง
ReceptionistShop NPCBank Clerk
อาจต้องอยู่ตำแหน่งตายตัว
แต่ Guard หรือ Patrol Ped ไม่ควรถูก Freeze หากต้องเดิน
อย่าตั้ง
Freeze = true
ให้ Ped ทุกตัวใน Server แบบเหมารวม
㊷ Ped สามารถเล่น Animation ได้ไหม
ได้
Ped เป็น Entity Character ที่สามารถถูกสั่ง Tasks/Animations ผ่าน GTA/FiveM Native APIs ได้
จึงพบ NPC เช่น
ช่างกำลังซ่อมรถหมอกำลังเขียนเอกสารพนักงานกำลังถือของNPC กำลังสูบบุหรี่
ใน Server Roleplay
㊸ Ped Scenario คืออะไร
Scenario เป็น Behavior/Activity สำเร็จรูปของ GTA ที่สามารถใช้กับ NPC บางประเภท เช่นยืน ทำงาน หรือนั่ง
Cfx.re Ped Model Reference เองยังจัด Ped Models บางกลุ่มเป็น Scenario Male/Female ซึ่งสะท้อนว่า GTA มีระบบ Population/Scenario Ped อยู่ใน World Population.
㊹ Ped สามารถถืออาวุธได้ไหม
ได้ใน Gameplay ที่ Script ออกแบบ
เช่น
GuardPolice NPCGang NPCMission Enemy
แต่ต้องออกแบบ
- Weapon
- AI Task
- Relationship
- Combat Behavior
- Network State
ร่วมกัน
เพียง Spawn Ped ไม่ได้ทำให้ NPC กลายเป็น Combat AI ที่สมบูรณ์
㊺ Ped Relationship คืออะไร
GTA มีระบบ Relationships สำหรับกำหนดพฤติกรรมระหว่าง Groups
เช่น
FriendlyNeutralHostile
Custom NPC Combat Systems จึงมักต้องจัด Relationship Group ร่วมกับ Tasks
ไม่ควรสร้าง Armed Ped แล้วหวังว่า AI จะเข้าใจว่าใครเป็นศัตรูเอง
㊻ Ped จำนวนมากทำให้ FPS ตกไหม
Ped แต่ละตัวมี
ModelAnimationAIPhysicsClothingNetwork State
ดังนั้นจำนวน Ped จำนวนมากสามารถเพิ่มภาระของ Client/Game Simulation ได้
แต่ต้องแยก
RenderingAI ScriptNetworking
เพื่อรู้ว่าควร Optimize ด้านไหน
㊼ Spawn Ped หลายร้อยตัวพร้อมกันดีไหม
ไม่ควรทำโดยไม่มีเหตุผล
Server Roleplay ทั่วไปไม่จำเป็นต้อง Spawn NPC ทุกจุดของเมืองตั้งแต่ผู้เล่น Join
ควรคิดเรื่อง
DistanceAreaPlayer PresenceEntity ScopeLifecycle
แทน
㊽ Distance-based Ped Spawn คืออะไร
แนวคิดคือ
ผู้เล่นเข้าใกล้พื้นที่↓สร้าง/เปิดใช้งาน NPCผู้เล่นออกจากพื้นที่↓จัดการ Entity ตาม Architecture
แต่สำหรับ Networked Shared NPC ต้องระวังไม่ให้ Clients หลายเครื่องสร้าง NPC ตัวเดียวซ้ำกัน
㊾ ทำไมผู้เล่นสองคนเห็น NPC คนละตัว
ถ้าแต่ละ Client สร้าง Local Ped ของตัวเอง
Client A → Ped AClient B → Ped B
แม้พิกัดและ Model เหมือนกัน ก็ไม่ได้หมายความว่าเป็น Network Entity เดียวกัน
ถ้าต้องการ Entity เดียวที่อ้างข้ามเครื่อง ต้องใช้ Networking Design และ Network ID ตามแนวทางของ FiveM.
㊿ Network ID ควรเก็บใน Database ไหม
ไม่ควรใช้ Network ID เป็น Persistent Database Identifier ระยะยาว
Cfx.re ระบุว่า Network IDs สามารถถูก Reuse ได้เมื่อ Entity เดิมหมดอายุ แม้ ID จะไม่เปลี่ยนระหว่าง Lifetime ของ Entity นั้น.
ดังนั้น Database ควรเก็บ Logical NPC ID เช่น
shopkeeper_01police_guard_01
แล้ว Map ไปยัง Network Entity ที่มีอยู่ใน Runtime
51. Entity Handle เก็บข้าม Client ได้ไหม
ไม่ควร
Cfx.re ระบุว่าหากต้องอ้าง Entity ระหว่าง Machines ควรใช้ Network ID ไม่ใช่ Local Handle.
ดังนั้นไม่ควรส่ง
local ped handle
จาก Client A ไป Client B แล้วคาดว่าจะอ้าง Entity เดียวกัน
52. Ped Resource Restart แล้ว NPC หาย
ถ้า Ped ถูกสร้างโดย Resource และ Resource Stop/Restart แล้ว Cleanup หรือ Script State ถูก Reset NPC อาจหายหรือถูกสร้างใหม่ตาม Resource Design
ดังนั้น Resource ควรมี Lifecycle ที่ชัดเจน
on start→ create/registeron stop→ cleanup
เพื่อป้องกัน Ped ซ้ำหรือ Entity ค้าง
53. Ped ซ้ำหลัง Restart Resource
เกิดได้หาก Resource สร้าง Ped ใหม่ทุก Start แต่ของเดิมไม่ได้ถูก Cleanup หรือยังมี Network Entity อยู่
ควรตรวจ
Existing Entity?Network ID?Cleanup?Ownership?
ก่อน Create ตัวใหม่
54. populationPedCreating ใช้ทำอะไร
FiveM มี Event populationPedCreating ก่อน Population Ped ถูกสร้าง โดย Script สามารถ
เปลี่ยน Positionเปลี่ยน ModelCancel การสร้าง
ผ่าน Setters/Event Handling ที่ Cfx.re ระบุ.
เหมาะกับการควบคุม Population มากกว่าการใช้กับ NPC Script ทุกตัว
55. สามารถปิด Population Ped ทั้งเมืองด้วย Event ได้ไหม
Event สามารถ Cancel Population Ped Creation ได้ตาม Documentation.
แต่การปิด Population ทั้งหมดมีผลต่อบรรยากาศโลกและ Gameplay
ควรตัดสินใจตาม Server Design ไม่ใช่ทำเพียงเพื่อหวังเพิ่ม FPS โดยไม่วัดผล
56. Ped กับ Object ต่างกันอย่างไร
Ped→ Character EntityObject→ Prop/Object Entity
Ped มี Character-specific Systems เช่น
AITasksAnimationsWeaponsClothingHealth
จึงไม่ควรใช้ Ped เมื่อสิ่งที่ต้องการเป็นเพียง Static Decoration
57. Ped กับ Vehicle ต่างกันอย่างไร
ทั้งสามเป็น Entity Categories คนละประเภท
PedVehicleObject
OneSync Documentation ระบุว่าสามารถสร้าง Entities เหล่านี้จาก Server ได้.
แต่ Native และ Lifecycle ของแต่ละประเภทแตกต่างกัน
58. Ped ต้องใช้ ESX หรือ QBCore ไหม
ไม่
CREATE_PED เป็น GTA/FiveM Native ไม่ใช่ Function ของ ESX หรือ QBCore.
Framework จะเกี่ยวข้องเมื่อ NPC เชื่อมกับ
JobInventoryShopQuestDatabasePermissions
เท่านั้น
59. Ped ต้องใช้ OneSync ไหม
Local Client Ped ไม่ได้หมายความว่าต้องใช้ OneSync ทุกกรณี
แต่ถ้าต้องการ Server-created/network-aware Entity Architecture OneSync เป็นระบบที่เกี่ยวข้องโดยตรง และ Cfx.re ระบุว่าสามารถสร้าง Peds, Vehicles และ Objects ฝั่ง Serverได้.
จึงต้องเลือกตาม Networking Requirement
60. วิธี Debug FiveM Ped ไม่ขึ้น
ใช้ลำดับนี้
ขั้นที่ 1 — ตรวจ Model
ใช้ Ped Model ที่มีอยู่จริง
Cfx.re มี Ped Model Reference.
ขั้นที่ 2 — Request Model
Model ต้อง Load ก่อน CreatePed.
ขั้นที่ 3 — ตรวจ Coordinates
XYZHeading
ขั้นที่ 4 — ตรวจค่า CreatePed ที่คืนมา
เก็บ Ped Handle ไว้
ขั้นที่ 5 — ตรวจ F8/Console
ดู Client Script Error
ขั้นที่ 6 — ถ้าเป็น Networked Ped
ตรวจ Network ID และ Ownership
Cfx.re แนะนำ Network ID สำหรับการอ้าง Entity ข้าม Machines.
ขั้นที่ 7 — ตรวจว่า Script สร้างซ้ำหรือไม่
ขั้นที่ 8 — ตรวจ Resource Restart/Cleanup
ขั้นที่ 9 — ถ้าใช้ OneSync Server Ped
ตรวจ Entity Creation Architecture ฝั่ง Server.
ตารางสรุปปัญหา FiveM Ped
| อาการ | จุดที่ควรตรวจ |
|---|---|
| Ped ไม่ขึ้น | Model / Model Loading |
| Ped Spawn ผิดจุด | Coordinates |
| Ped หันผิดทาง | Heading |
| Ped จมพื้น | Z / Collision |
| Ped ลอย | Z / Map |
| Ped ซ้ำหลายตัว | Spawn Logic |
| Ped หายหลัง Restart | Resource Lifecycle |
| ผู้เล่นเห็น NPC คนละตัว | Local vs Network Ped |
| Client อื่นหา Entity ไม่เจอ | Network ID |
| Ped เดินหนี | AI Behavior |
| NPC ไม่ยืนประจำที่ | Tasks/Behavior |
| Clothes ไม่ขึ้น | Ped Model/Components |
| Custom Clothes ใช้ไม่ได้ | Ped Compatibility |
| NPC มากแล้ว FPS ลด | Ped Count / Assets / AI |
| Ped หายเมื่อออกระยะ | Entity Scope/Lifecycle |
| Custom NPC ไม่ Sync | Networking Architecture |
FiveM Ped ที่ดีควรออกแบบอย่างไร
สำหรับ NPC Production ควรกำหนดให้ชัด
Ped ModelCoordinatesHeadingLocal หรือ NetworkedBehaviorAnimation/ScenarioInvincibilityInteractionLifecycleCleanupLogical NPC ID
อย่าสร้างเพียง CreatePed() แล้วเพิ่ม Native แบบสุ่มไปเรื่อย ๆ
ตัวอย่าง Architecture NPC ร้านค้า
แนวคิด
shopkeeper_01↓Model↓Coordinates↓Create Ped↓ตั้ง Behavior↓Register Interaction↓ผู้เล่นกดใช้งาน↓เปิด Shop UI
แยก
NPC Visual
ออกจาก
Shop Business Logic
จะทำให้ Debug ง่ายกว่า
ตัวอย่าง Architecture Networked Mission Ped
Server↓สร้าง/กำหนด Mission Entity↓Network ID↓Clients ใช้ Network ID อ้าง Entity↓Mission Logic↓Cleanup เมื่อจบ
FiveM ระบุว่า Network ID ควรถูกใช้เมื่ออ้าง Entity ข้าม Clients/Server และ OneSync รองรับ Server-created Entities.
Ped กับ Player กับ NPC ต่างกันแบบสั้นที่สุด
จำแบบนี้
Ped= Character EntityPlayer= ผู้เล่นที่เชื่อมต่อกับ ServerPlayer Ped= Character ที่ Player ควบคุมNPC= Character ที่ไม่ถูกผู้เล่นควบคุมCustom Ped= Custom Character Model
ดังนั้นคำเหล่านี้มีความสัมพันธ์กัน แต่ไม่ใช่สิ่งเดียวกัน
สิ่งที่ไม่ควรทำกับ FiveM Ped
หลีกเลี่ยง
CreatePed ทุก Frameสร้าง NPC ซ้ำจากทุก Clientใช้ Local Handle ข้าม Clientเก็บ Network ID เป็น Database ID ถาวรSpawn Ped ก่อน Model Loadedใช้ Clothing IDs ของ Ped คนละ Modelสร้าง NPC หลายร้อยตัวโดยไม่วัด Performanceไม่ Cleanup Entity หลัง Resource Stop
สิ่งเหล่านี้ทำให้ Server Debug ยากและสามารถสร้าง Entity/Performance Problems ได้
สรุป FiveM Ped คืออะไร
FiveM Ped คือ Entity ประเภทตัวละครของ GTA V/FiveM ซึ่งครอบคลุมทั้ง Player Character, Population NPC และ Script-created NPC
Cfx.re CREATE_PED ใช้สร้าง Ped โดยกำหนด
Ped TypeModelX / Y / ZHeadingNetwork State
และ Model ควรถูก Load ก่อน Create.
Ped Model เป็นตัวกำหนดรูปลักษณ์พื้นฐานของ Character โดย FiveM มีรายการ Models ตั้งแต่ Ambient, Animals, Gang, Multiplayer, Scenario ไปจนถึง Story Characters.
ถ้า Ped ไม่ Spawn ให้ตรวจ Model และ Model Loading
ถ้า Ped อยู่ผิดตำแหน่ง ให้ตรวจ Coordinates/Heading
ถ้า ผู้เล่นสองคนเห็น NPC คนละตัว ให้ตรวจ Local vs Networked Ped
ถ้าต้องอ้าง Ped ข้าม Clients หรือ Server ให้ใช้ Network ID เพราะ Cfx.re ระบุว่า Local Entity Handles ไม่ควรถูกใช้เป็นตัวอ้างข้าม Machines.
ถ้าต้องการสร้าง Entities จากฝั่ง Server FiveM OneSync รองรับ Peds, Vehicles และ Objects โดยตรง.
และถ้า Custom Clothes หรือ EUP ใช้กับ Ped ไม่ได้ ให้ตรวจ Ped Model ก่อน เพราะ Clothing Components และ Props ถูกจัดตาม Ped/Collections และไม่ได้เหมือนกันทุก Character Model.
แนวทางของ comsiam คือให้มอง Ped เป็น Entity ที่มีทั้ง Model, Behavior, Networking และ Lifecycle ไม่ใช่เพียง NPC ที่ตั้งไว้หน้าร้าน เพราะเมื่อออกแบบทั้ง 4 ส่วนให้ถูก การสร้าง Shop NPC, Mission Ped, Police NPC หรือ Character แบบ Networked จะเสถียรและขยายระบบต่อได้ง่ายกว่ามาก
Comments
Post a Comment