FiveM Entity Lockdown คืออะไร? strict, relaxed, inactive และ full ต่างกันอย่างไร
FiveM Entity Lockdown คือระบบของ OneSync ที่ใช้ควบคุมว่า Client สามารถสร้าง Networked Entities ภายใน Routing Bucket ได้มากน้อยเพียงใด เช่น Vehicle, Ped หรือ Object โดย Cfx.re รองรับการกำหนด Lockdown Mode แยกในแต่ละ Routing Bucket ผ่าน SetRoutingBucketEntityLockdownMode().
ปัจจุบันมี Mode สำคัญคือ strict, relaxed, inactive และ full โดยแต่ละ Mode ให้ระดับการควบคุม Entity Creation แตกต่างกัน และ full ใช้ได้เฉพาะ FiveM for GTAV Enhanced.
Meta Title: FiveM Entity Lockdown คืออะไร? strict, relaxed, inactive และ full
Meta Description: อธิบาย FiveM Entity Lockdown แบบละเอียด strict, relaxed, inactive, full ต่างกันอย่างไร วิธีใช้ SetRoutingBucketEntityLockdownMode และแก้ Client สร้าง Entity ไม่ได้
Focus Keyword: FiveM Entity Lockdown
Related Keywords: FiveM strict lockdown, FiveM relaxed lockdown, Routing Bucket Lockdown, SetRoutingBucketEntityLockdownMode, FiveM OneSync, FiveM Entity Security
สารบัญ
① FiveM Entity Lockdown คืออะไร
Entity Lockdown เป็นระบบสำหรับกำหนด Policy การสร้าง Networked Entities ของ Client ภายใน Routing Bucket
แนวคิดคือ:
Player
↓
Routing Bucket
↓
Entity Lockdown Policy
↓
Client สร้าง Entity ได้หรือไม่ได้
Cfx.re ระบุว่า Entity สามารถถูก Lockdown จาก Server เพื่อให้ Server มีอำนาจควบคุม Entity Creation มากขึ้น.
② Entity Lockdown เกี่ยวข้องกับ OneSync หรือไม่
เกี่ยวข้องโดยตรง
Entity Lockdown อยู่ใน OneSync และทำงานร่วมกับระบบ:
Routing Bucket
Entity Synchronization
Server-created Entities
Network Ownership
Population
OneSync Documentation รวม Entity Lockdown ไว้ใน Best Practices ของ Server-side Entity Management.
③ Entity Lockdown ทำงานระดับไหน
Lockdown Mode สามารถกำหนดให้ Routing Bucket แต่ละ Bucket แยกจากกันได้.
ตัวอย่าง:
Bucket 0
→ inactive
Bucket 100
→ strict
Bucket 200
→ relaxed
จึงสามารถมี Main World ที่อนุญาต Entity Creation แต่ Character Selection Instance ใช้ Policy ที่เข้มกว่าได้
④ ทำไม Routing Bucket ถึงเหมาะกับ Lockdown
เพราะ Routing Bucket แยก Players และ Entities เป็น Game State คนละชุด
ดังนั้น Server สามารถกำหนดว่า:
Instance นี้
→ Client สร้าง Entity ไม่ได้
อีก Instance
→ Client สร้างได้บางประเภท
ได้โดยไม่ต้องใช้ Policy เดียวกันกับทุก Session.
⑤ Lockdown Mode ปัจจุบันมีอะไรบ้าง
Cfx.re ระบุ 4 Mode:
| Mode | การทำงาน |
|---|---|
strict | Client สร้าง Entity ไม่ได้ |
relaxed | Block Script-owned Entity ที่ Client สร้าง |
inactive | Client สร้าง Entity ได้ |
full | เพิ่มการปิด Dummy Object Creation และใช้เฉพาะ GTAV Enhanced |
⑥ strict คืออะไร
strict เป็น Mode ที่เข้มมาก โดย Cfx.re ระบุว่า:
No entities can be created by clients at all.
ตั้งค่าด้วย:
SetRoutingBucketEntityLockdownMode(
bucketId,
'strict'
)
⑦ strict เหมาะกับอะไร
เหมาะกับ Instance ที่ Server ต้องการควบคุม Entity Creation เอง เช่น:
Character Selection
Controlled Session
Private Instance
Server-authoritative Gameplay
โดยเฉพาะเมื่อ Entity ที่จำเป็นสามารถถูกสร้างจาก Server ได้
⑧ strict มีผลกับ Player ที่อยู่ใน Bucket อย่างไร
เมื่อ Player อยู่ใน Bucket ที่ตั้งเป็น:
strict
Client จะไม่สามารถสร้าง Networked Entities ตาม Policy ของ Mode นั้น.
ตัวอย่าง Official ของ Cfx.re ใช้:
SetRoutingBucketEntityLockdownMode(1, 'strict')
SetPlayerRoutingBucket(source, 1)
เพื่อให้ Player ใน Bucket 1 ไม่สามารถสร้าง Entities ฝั่ง Client ได้.
⑨ strict แล้ว Resource รถไม่ทำงานเพราะอะไร
ถ้า Resource เดิมสร้าง Vehicle จาก Client เช่นแนวคิด:
Client
↓
Create Vehicle
↓
Network Entity
เมื่อ Player ถูกย้ายเข้า strict Bucket การสร้าง Entity จาก Client อาจถูก Block
จึงต้องตรวจว่า Resource ใช้ Client-created หรือ Server-created Entity
⑩ strict แล้วควรสร้าง Entity ที่ไหน
หาก Entity ต้องมีอยู่ใน strict Bucket ควรพิจารณา Server-created Entity
Cfx.re ระบุ OneSync Best Practice ให้ Server สามารถสร้าง Peds, Vehicles และ Objects ได้โดยตรง.
Flow:
Client ขอ Action
↓
Server ตรวจ
↓
Server สร้าง Entity
↓
Set Entity Bucket
↓
OneSync Sync ให้ Client
⑪ relaxed คืออะไร
Cfx.re ระบุ relaxed ว่า:
เฉพาะ Script-owned Entities ที่ Client สร้างจะถูก Block.
จึงไม่เข้มเท่ากับ strict
⑫ relaxed ต่างจาก strict อย่างไร
จำง่ายๆ:
strict
= ไม่ให้ Client สร้าง Entity
relaxed
= Block เฉพาะ Client-created Script-owned Entity ตาม Policy
⑬ relaxed เหมาะกับ Server แบบไหน
อาจเหมาะกับ Server ที่ต้องการเพิ่มการควบคุม Entity Creation แต่ยังไม่พร้อมย้าย Resource ทั้งหมดไปใช้ Server-created Entity
อย่างไรก็ตามควรทดสอบ Resources จริงก่อนเปิด Production
⑭ relaxed แล้ว Script บางตัวพังได้ไหม
ได้
หาก Resource นั้นพึ่ง Client-created Script Entity ที่ถูก Mode นี้ Block
ดังนั้นก่อนเปิด relaxed ควรทดสอบ:
Vehicle Spawn
Ped Spawn
Object Spawn
Gameplay Props
Temporary Network Entities
ใน Development Server ก่อน
⑮ inactive คืออะไร
Cfx.re ระบุ inactive ว่า Clients สามารถสร้าง Entities ได้.
ตั้งค่า:
SetRoutingBucketEntityLockdownMode(
bucketId,
'inactive'
)
⑯ inactive เหมาะกับอะไร
เหมาะกับ Bucket ที่ Resources เดิมต้องพึ่ง Client-created Entities และไม่ต้องการใช้ Entity Lockdown
แต่ inactive ไม่ได้หมายความว่า Server ไม่ต้องตรวจ Network Events หรือ Gameplay Logic
Security และ Validation ยังต้องทำฝั่ง Serverตามปกติ
⑰ inactive คือปิด OneSync หรือไม่
ไม่ใช่
inactive หมายถึง Entity Lockdown ของ Bucket นั้นไม่ได้จำกัด Client Entity Creation ตาม Mode ที่เข้มกว่า
OneSync, Routing Bucket, Network ID และ State Awareness ยังเป็นระบบคนละส่วน
⑱ full คืออะไร
Cfx.re ระบุ full ว่าเป็น Lockdown Mode ที่เพิ่มการปิด Dummy Object Creation และใช้ได้เฉพาะ FiveM for GTAV Enhanced.
ดังนั้นไม่ควรใช้:
SetRoutingBucketEntityLockdownMode(
bucketId,
'full'
)
โดยสมมติว่าทุก Environment รองรับ
⑲ full กับ strict ต่างกันอย่างไร
โดยสรุป:
strict
ไม่ให้ Client สร้าง Entities
full
เพิ่มข้อจำกัด Dummy Object Creation และใช้เฉพาะ FiveM for GTAV Enhanced.
จึงไม่ควรคิดว่า full เป็นเพียงชื่อใหม่ของ strict
⑳ Server ที่รองรับ Legacy และ Enhanced ควรทำอย่างไร
Resource ควรตรวจ Environment และ Compatibility ก่อนเลือก Mode
หากต้องรองรับหลาย Platform Mode อย่า Hard-code full โดยไม่มี Fallback
㉑ วิธีตั้ง Entity Lockdown
ใช้ Native:
SetRoutingBucketEntityLockdownMode(
bucketId,
mode
)
โดย mode เป็น:
strict
relaxed
inactive
full
ตาม Environment ที่รองรับ.
㉒ ตัวอย่าง strict แบบพื้นฐาน
local bucketId = 100
SetRoutingBucketEntityLockdownMode(
bucketId,
'strict'
)
SetPlayerRoutingBucket(
source,
bucketId
)
Player ถูกย้ายเข้า Bucket ที่ Client Entity Creation ถูกจำกัดแบบ strict.
㉓ ตัวอย่าง strict + ปิด Population
local bucketId = 100
SetRoutingBucketEntityLockdownMode(
bucketId,
'strict'
)
SetRoutingBucketPopulationEnabled(
bucketId,
false
)
SetPlayerRoutingBucket(
source,
bucketId
)
Cfx.re ใช้ Structure ลักษณะเดียวกันในตัวอย่าง Entity Lockdown อย่างเป็นทางการ.
㉔ ทำไมมักปิด Population ร่วมกับ strict
สำหรับ Instance ที่ Server ต้องการ Environment ที่ควบคุมเอง เช่น Character Selection การปิด Population ช่วยไม่ให้ Population ของ Game เข้ามาปะปนกับ Instance
Cfx.re รองรับ Population Policy แยกในแต่ละ Routing Bucket.
㉕ Player และ Entity ต้องอยู่ Bucket เดียวกันไหม
ถ้าต้องการให้ Player เห็น Entity นั้นตาม Routing Isolation ก็ควรจัด Entity ไป Bucket ที่เหมาะสม
ตัวอย่าง:
SetPlayerRoutingBucket(
source,
100
)
SetEntityRoutingBucket(
vehicle,
100
)
Players และ Entities ที่อยู่ Bucket เดียวกันถูก Route ให้อยู่ใน Game State เดียวกัน.
㉖ strict แล้ว Server สร้าง Vehicle ได้ไหม
ได้
OneSync รองรับ Server-created Vehicles, Peds และ Objects และ Official Example ใช้ CreateVehicleServerSetter() ก่อนย้าย Entity เข้า strict Bucket.
แนวคิด:
local vehicle = CreateVehicleServerSetter(
model,
'automobile',
x,
y,
z,
heading
)
SetEntityRoutingBucket(
vehicle,
bucketId
)
㉗ strict ไม่ได้หมายความว่าไม่มี Entity
ถูกต้อง
หมายถึง Client ถูกจำกัดไม่ให้สร้าง Entity ตาม Policy
Server ยังสามารถสร้าง Entity แล้ว Route ให้เข้า Bucket ได้.
㉘ Population กับ Entity Lockdown เป็นระบบเดียวกันไหม
ไม่ใช่
Entity Lockdown
ควบคุม Client Entity Creation
Population
ควบคุม Population ภายใน Routing Bucket
ใช้ร่วมกันได้แต่เป็นคนละ Setting.
㉙ เปิด Population ใน strict Bucket ได้ไหม
Routing Bucket มี Population Policy แยกต่างหาก จึงไม่ได้บังคับว่าการใช้ strict ต้องปิด Population เสมอ
ให้เลือกตาม Gameplay Design
㉚ Character Selection ควรใช้แบบไหน
ตัวอย่าง Architecture:
Private Character Bucket
↓
strict Entity Lockdown
↓
Population Off
↓
Server-created Entities ที่จำเป็น
↓
เลือก Character
↓
ย้ายกลับ Gameplay Bucket
Routing Buckets ถูกระบุโดย Cfx.re ว่าเหมาะกับ Character Selection Instance.
㉛ Server-created Entities สำคัญกับ Lockdown อย่างไร
เมื่อ Server ไม่อนุญาต Client-created Entity สิ่งที่ Gameplay ต้องการก็ต้องมี Authority อื่นเป็นผู้สร้าง
OneSync จึงรองรับ Server-created:
Ped
Vehicle
Object
โดยตรง.
㉜ CreateVehicleServerSetter เหมาะเมื่อไหร่
Cfx.re แสดง CreateVehicleServerSetter() ใน Best Practice สำหรับ Server-created Vehicle เพราะ Entity ถูก Register กับ Server โดยตรง.
เหมาะกับ Entity ที่ Server ต้องควบคุมต้นทาง
㉝ Server-created Entity อาจยังไม่มี Owner ทันที
Cfx.re ระบุว่า Server-created Entity บางกรณีเริ่มต้นในสถานะ orphaned จนกว่าจะมี Client ที่เหมาะสมอยู่ใน Scope และ NetworkGetEntityOwner() สามารถคืน -1 ในช่วงนั้น.
ดังนั้น Entity Created สำเร็จไม่ได้หมายความว่า Client Owner พร้อมทันที
㉞ RPC Native อาจไม่ทำงานขณะ Entity Orphaned
Cfx.re ระบุว่า Server RPC Natives บางตัวไม่ทำงานขณะ Entity ยัง Orphaned เพราะยังไม่มี Client ที่เหมาะสมรับ Ownership.
จึงต้องระวังการตั้งค่าบางอย่างทันทีหลัง Create Entity
㉟ State Bag ช่วย Initialize Entity ได้อย่างไร
Cfx.re แนะนำ Pattern ที่ Server สร้าง Entity แล้วตั้ง State Bag สำหรับ Initialization จากนั้น Client ที่รับ Ownership สามารถตอบสนอง State นั้นได้.
ตัวอย่างแนวคิด:
local state = Entity(vehicle).state
state:set(
'myresource:init',
true,
true
)
ช่วยลดการเรียก RPC Native เร็วเกินไปก่อน Entity มี Owner
㊱ Entity Lockdown เกี่ยวกับ NetworkRequestControlOfEntity ไหม
เกี่ยวข้องในบาง Configuration
Server มี ConVar:
sv_filterRequestControl
สำหรับควบคุมการ Route REQUEST_CONTROL_EVENT.
หาก Mode ไม่ใช่ 0 จะมี Routing Bucket และ Lockdown Checks เพิ่มเข้ามา
㊲ strict สามารถ Block Control Request ได้ไหม
Cfx.re ระบุว่าเมื่อ sv_filterRequestControl ไม่อยู่ใน Mode Off:
Control Request จะถูก Block เสมอถ้า Sender อยู่ใน strict Entity Lockdown Mode ไม่ว่าจะมาจาก Global Setting หรือ Routing Bucket.
นี่สำคัญมากเวลา Debug:
NetworkRequestControlOfEntity()
ไม่สำเร็จ
㊳ Control Request ข้าม Routing Bucket ได้ไหม
เมื่อ sv_filterRequestControl เปิดใช้นโยบาย Filtering แล้ว Cfx.re ระบุว่า Control Request Events ไม่สามารถ Route ข้าม Routing Buckets.
ดังนั้นต้องตรวจ:
Player Bucket
Entity Bucket
Lockdown Mode
sv_filterRequestControl
ร่วมกัน
㊴ sv_filterRequestControl มี Mode อะไร
Cfx.re ระบุ Mode 0–4 โดย:
0 = Off
1 = จำกัด Control Request บาง Entity ที่ settled
2 = Block Entity ที่ Player ควบคุม
3 = เพิ่ม settled non-player entities
4 = ไม่ Route REQUEST_CONTROL_EVENT เลย
รายละเอียด Policy แตกต่างกันตาม Mode.
ไม่ควรเปลี่ยน Mode แบบสุ่มเพื่อแก้ Entity Control
㊵ Mode 0 มีผลอะไรกับ Lockdown-based Control Policy
sv_filterRequestControl 0 เป็น Default Off และ Cfx.re ระบุว่าจะปิด Routing Bucket/Entity Lockdown-based Policy ของ Request Control Filtering ด้วย.
อย่าสับสนส่วนนี้กับ Entity Creation Lockdown เอง เพราะเป็น Policy ของ REQUEST_CONTROL_EVENT
㊶ Entity Lockdown กับ sv_stateBagStrictMode เหมือนกันไหม
ไม่เหมือนกัน
Entity Lockdown
ควบคุม Client Entity Creation
sv_stateBagStrictMode
ควบคุม Client Modification ของ Replicated State Bags
Cfx.re ระบุว่าเมื่อ sv_stateBagStrictMode true เฉพาะ Server เท่านั้นที่สามารถแก้ State ของ Networked Entities และ Player State ได้.
㊷ strict Entity Lockdown ไม่ได้ทำให้ State Bags เป็น Server-only อัตโนมัติ
ถูกต้อง
หากต้องการ State Bag Policy แบบ Server-only ต้องใช้:
setr sv_stateBagStrictMode true
แยกต่างหาก.
㊸ ใช้สองระบบร่วมกันได้ไหม
ได้
Architecture ที่เข้มขึ้นอาจใช้:
Routing Bucket = strict
+
sv_stateBagStrictMode = true
+
Server-created Entities
+
Server-side Event Validation
แต่ต้องทดสอบ Resource Compatibility เพราะ Client Scripts ที่เดิมสร้าง Entities หรือแก้ State เองอาจหยุดทำงาน
㊹ FiveM Client สร้าง Vehicle ไม่ได้หลังเข้า Instance
ตรวจ:
Player อยู่ Bucket ไหน?
↓
Bucket Lockdown Mode?
↓
strict หรือ full?
↓
Resource สร้าง Vehicle ฝั่ง Client?
ถ้า Bucket เป็น strict การถูก Block อาจเป็น Behavior ที่ถูกต้องตาม Policy.
㊺ Resource ทำงาน Bucket 0 แต่พัง Bucket 100
เปรียบเทียบ:
Bucket 0 Lockdown
vs
Bucket 100 Lockdown
หาก 0 เป็น inactive แต่ 100 เป็น strict Resource ที่พึ่ง Client-created Entity สามารถทำงานใน Bucket 0 แต่ล้มใน Bucket 100 ได้
㊻ strict แล้ว Props ไม่เกิด
ถ้า Props ถูกสร้างจาก Client Script ให้ตรวจ Resource Architecture
ทางเลือกคือ:
Server สร้าง Entity
หรือ
เปลี่ยน Lockdown Policy
ตาม Requirement จริง
อย่าปิด Lockdown ทันทีโดยไม่รู้ว่า Resource ต้องสร้าง Entity แบบไหน
㊼ Server-created Vehicle มีแต่ยังแก้ Appearance ไม่ได้
ตรวจ Owner ก่อน
Cfx.re ระบุว่า Server-created Entity อาจเริ่มเป็น Orphan และ Server RPC Native บางตัวจะยังไม่ทำงานจนมี Client ที่เหมาะสมอยู่ใน Scope.
ใช้ State Bag Initialization เป็นอีก Pattern หนึ่งที่ Documentation แนะนำ
㊽ NetworkRequestControlOfEntity ไม่ทำงานเฉพาะ strict Bucket
ตรวจ sv_filterRequestControl
ถ้าไม่ได้อยู่ Mode Off Cfx.re ระบุว่า Sender ใน strict Entity Lockdown จะถูก Block Control Request เสมอ.
ดังนั้นการ Request ซ้ำ 100 ครั้งไม่แก้ Policy ที่ Server ตั้งไว้
㊾ อย่าแก้ด้วยการ Request Control ทุก Tick
หาก Policy ของ Server Block Control Request การ Loop:
while true do
NetworkRequestControlOfEntity(entity)
Wait(0)
end
ไม่ได้แก้ต้นเหตุและเพิ่มงานที่ไม่จำเป็น
ต้องตรวจ:
Lockdown
Routing Bucket
sv_filterRequestControl
Entity Owner
Scope
ก่อน
㊿ Checklist FiveM Entity Lockdown
ก่อนใช้ Production ตรวจว่า:
OneSync ทำงาน
รู้ว่า Bucket ไหนใช้ Lockdown
เข้าใจ
strictเข้าใจ
relaxedเข้าใจ
inactiveใช้
fullเฉพาะ Environment ที่รองรับClient Resources สร้าง Entity ที่ไหน
Server-created Entity ทำงานหรือไม่
Player และ Entity อยู่ Bucket เดียวกัน
Population Policy ถูกต้อง
Entity Owner ถูกตรวจเมื่อจำเป็น
State Bag Initialization ทำงาน
RPC Native ไม่ถูกเรียกเร็วเกินไป
ตรวจ
sv_filterRequestControlControl Request ไม่ข้าม Bucket
strict อาจ Block Control Request ตาม Policy
ไม่สับสน Lockdown กับ State Bag Strict Mode
ทดสอบ Vehicle
ทดสอบ Ped
ทดสอบ Object
ทดสอบ Character Selection
ทดสอบ Party Instance
ทดสอบ Player Disconnect
ทดสอบ Resource Restart
ตรวจ Client F8 และ Server Console
ตาราง Entity Lockdown Modes
| Mode | Client Entity Creation | เหมาะกับ |
|---|---|---|
inactive | อนุญาต | Compatibility สูง |
relaxed | จำกัด Script-owned Entities | ค่อยๆ เพิ่ม Server Control |
strict | ไม่อนุญาต Client-created Entities | Server-authoritative Instance |
full | เพิ่ม Dummy Object Restriction | GTAV Enhanced เท่านั้น |
คำจำกัดความของแต่ละ Mode อ้างอิง OneSync Documentation ปัจจุบันของ Cfx.re.
ตัวอย่าง Character Selection Bucket
local CHARACTER_BUCKET = 100
SetRoutingBucketEntityLockdownMode(
CHARACTER_BUCKET,
'strict'
)
SetRoutingBucketPopulationEnabled(
CHARACTER_BUCKET,
false
)
SetPlayerRoutingBucket(
source,
CHARACTER_BUCKET
)
โครงสร้างนี้เหมาะกับแนวคิด Character Selection Instance ซึ่ง Routing Bucket ถูกระบุเป็น Use Case อย่างเป็นทางการของ OneSync.
ตัวอย่างสร้าง Entity จาก Server ใน strict Bucket
local bucketId = 100
local vehicle = CreateVehicleServerSetter(
model,
'automobile',
x,
y,
z,
heading
)
SetEntityRoutingBucket(
vehicle,
bucketId
)
OneSync รองรับ Server-created Entities และ Official Documentation แนะนำ Server-created Entity เป็น Best Practice.
ตัวอย่างใช้ State Bag Initialize Server-created Entity
local vehicle = CreateVehicleServerSetter(
model,
'automobile',
x,
y,
z,
heading
)
local state = Entity(vehicle).state
state:set(
'myresource:initialize',
true,
true
)
Cfx.re ระบุ State Bag Initialization เป็น Pattern ที่มีประโยชน์เมื่อ Server-created Entity ยังไม่มี Client Owner ที่เหมาะสมทันที.
FiveM strict กับ relaxed อันไหนดีกว่า
ไม่มี Mode ที่ดีที่สุดสำหรับทุก Server
เลือกตาม Resource Architecture:
Resources ยังพึ่ง Client Entity มาก
→ inactive / ทดสอบ relaxed
ต้องการ Server ควบคุม Entity มาก
→ strict
GTAV Enhanced + Requirement เฉพาะ
→ พิจารณา full
สิ่งสำคัญคือต้องทดสอบ Resources ก่อนเปลี่ยน Production Policy
FiveM strict ทำให้ Server Lag ไหม
ตัว Lockdown มีหน้าที่กำหนด Entity Creation Policy ไม่ควรตีความว่าเปิด strict แล้ว Performance จะดีหรือแย่เสมอ
Performance จริงยังขึ้นกับ:
จำนวน Entities
Resource Loops
Network Events
State Updates
Player Count
Streaming Density
จึงต้องวัดจาก Profiler/Server Metrics แยกต่างหาก
FiveM Entity Lockdown ช่วยเรื่อง Server Security ไหม
ช่วยเพิ่ม Server Authority ด้าน Entity Creation โดยเฉพาะเมื่อใช้ strict และ Server-created Entities แต่ไม่แทนที่ Network Event Validation
Cfx.re แนะนำให้ Network Events ตรวจข้อมูลสำคัญจาก Server-side State ไม่เชื่อ Client Input โดยตรง.
ดังนั้น:
Entity Lockdown
+
Secure Events
+
Server Validation
ควรใช้ร่วมกัน
FiveM strict แล้ว Network Event ยังทำงานไหม
Entity Lockdown ไม่ได้มีหน้าที่ปิด TriggerServerEvent
Network Events เป็นอีกระบบหนึ่ง
Server ยังคงต้อง Validate:
source
permission
player state
position
inventory
session
ตาม Use Case.
FiveM Entity Lockdown กับ Entity Ownership ต่างกันอย่างไร
Entity Lockdown:
Client สร้าง Entity ได้หรือไม่
Entity Ownership:
Client คนใดกำลังควบคุม Entity ที่มีอยู่แล้ว
สองระบบเกี่ยวข้องกับ Entity Networking แต่ทำหน้าที่ต่างกัน
FiveM Entity Lockdown กับ Routing Bucket ต่างกันอย่างไร
Routing Bucket:
Entity/Player อยู่ Instance ไหน
Entity Lockdown:
ภายใน Instance นั้น Client สร้าง Entityได้ระดับไหน
ดังนั้นหนึ่ง Bucket สามารถมี Policy ของตัวเองได้.
FAQ FiveM Entity Lockdown
FiveM Entity Lockdown คืออะไร
เป็น OneSync Policy สำหรับควบคุมการสร้าง Entity จาก Client ภายใน Routing Bucket.
strict หมายถึงอะไร
Client ไม่สามารถสร้าง Entities ได้ใน Bucket ที่ตั้ง strict.
relaxed หมายถึงอะไร
Cfx.re ระบุว่าเฉพาะ Script-owned Entities ที่ Client สร้างจะถูก Block.
inactive หมายถึงอะไร
Clients สามารถสร้าง Entities ได้ตามปกติของ Lockdown Policy.
full ใช้ได้ที่ไหน
ใช้เฉพาะ FiveM for GTAV Enhanced และเพิ่มการปิด Dummy Object Creation.
ตั้ง Entity Lockdown ใช้ Native อะไร
ใช้:
SetRoutingBucketEntityLockdownMode(
bucketId,
mode
)
strict แล้ว Server สร้าง Entity ได้ไหม
ได้ OneSync รองรับ Server-created Vehicles, Peds และ Objects.
strict กับ sv_stateBagStrictMode เหมือนกันไหม
ไม่เหมือนกัน Entity Lockdown ควบคุม Entity Creation ส่วน sv_stateBagStrictMode ควบคุมการแก้ Replicated State Bags.
ทำไม NetworkRequestControlOfEntity ไม่ทำงานใน strict Bucket
หาก sv_filterRequestControl ใช้ Mode ที่ไม่ใช่ Off Cfx.re ระบุว่า Sender ใน strict Entity Lockdown จะถูก Block Control Request.
ประเด็นสำคัญ
FiveM Entity Lockdown เป็นระบบที่ช่วยกำหนดว่า Client สามารถสร้าง Networked Entities ภายใน Routing Bucket ได้มากเพียงใด โดย Mode ปัจจุบันคือ inactive, relaxed, strict และ full ซึ่ง full ใช้เฉพาะ GTAV Enhanced.
สำหรับ Server ที่ต้องการ Server-authoritative Architecture มากขึ้น strict มีความสำคัญ เพราะ Client จะไม่สามารถสร้าง Entities ได้ และ Server สามารถใช้ Server-created Vehicles, Peds หรือ Objects แล้ว Route Entity เข้า Bucket ที่ต้องการแทน.
แต่ Lockdown ไม่ควรถูกเปิดแบบสุ่มบน Production Server เพราะ Resource ที่พึ่ง Client-created Entities อาจหยุดทำงาน จึงควรทดสอบ Vehicle, Ped, Object, Network Control, State Bags และ Routing Buckets ใน Development Environment ก่อน
อีกจุดที่ต้องจำคือ sv_filterRequestControl เพราะเมื่อเปิด Mode ที่ไม่ใช่ Off Control Requests จะไม่ข้าม Routing Buckets และ Sender ที่อยู่ใน strict Entity Lockdown จะถูก Block Control Request.
สำหรับผู้อ่าน comsiam ให้จำสูตร “Routing Bucket = อยู่โลกไหน, Entity Lockdown = สร้าง Entity ได้ไหม, Ownership = ใครควบคุม” และ comsiam แนะนำให้เริ่มจาก inactive ใน Resource เก่าที่ต้องการ Compatibility แล้วค่อยทดสอบ relaxed หรือ strict พร้อมย้าย Entity สำคัญไปสร้างและตรวจสอบจาก Server ตาม Architecture ที่เหมาะสม
Comments
Post a Comment