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การทำงาน
strictClient สร้าง Entity ไม่ได้
relaxedBlock Script-owned Entity ที่ Client สร้าง
inactiveClient สร้าง 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 ตรวจว่า:

  1. OneSync ทำงาน

  2. รู้ว่า Bucket ไหนใช้ Lockdown

  3. เข้าใจ strict

  4. เข้าใจ relaxed

  5. เข้าใจ inactive

  6. ใช้ full เฉพาะ Environment ที่รองรับ

  7. Client Resources สร้าง Entity ที่ไหน

  8. Server-created Entity ทำงานหรือไม่

  9. Player และ Entity อยู่ Bucket เดียวกัน

  10. Population Policy ถูกต้อง

  11. Entity Owner ถูกตรวจเมื่อจำเป็น

  12. State Bag Initialization ทำงาน

  13. RPC Native ไม่ถูกเรียกเร็วเกินไป

  14. ตรวจ sv_filterRequestControl

  15. Control Request ไม่ข้าม Bucket

  16. strict อาจ Block Control Request ตาม Policy

  17. ไม่สับสน Lockdown กับ State Bag Strict Mode

  18. ทดสอบ Vehicle

  19. ทดสอบ Ped

  20. ทดสอบ Object

  21. ทดสอบ Character Selection

  22. ทดสอบ Party Instance

  23. ทดสอบ Player Disconnect

  24. ทดสอบ Resource Restart

  25. ตรวจ Client F8 และ Server Console

ตาราง Entity Lockdown Modes

ModeClient Entity Creationเหมาะกับ
inactiveอนุญาตCompatibility สูง
relaxedจำกัด Script-owned Entitiesค่อยๆ เพิ่ม Server Control
strictไม่อนุญาต Client-created EntitiesServer-authoritative Instance
fullเพิ่ม Dummy Object RestrictionGTAV 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

Popular posts from this blog

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

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

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