FiveM OneSync คืออะไร ต้องเปิดไหม? ตั้งค่าอย่างไรให้ Server รองรับผู้เล่นและ Entity ได้ถูกต้อง
FiveM OneSync คือระบบ Synchronization ของ Cfx.re ที่ช่วยให้ FXServer มี Server-side State Awareness และจัดการ Player, Vehicle, Ped, Object และ Entity ต่าง ๆ จากฝั่ง Server ได้ดีขึ้น รวมถึงเป็นพื้นฐานสำคัญสำหรับ FiveM Server ที่ต้องการรองรับผู้เล่นจำนวนมาก
สำหรับ Server ใหม่โดยทั่วไป แนะนำให้ใช้
set onesync on
โดยเฉพาะ Server RP ที่ใช้ Framework และ Resources รุ่นปัจจุบัน
ถ้าตั้งจำนวนผู้เล่นตั้งแต่ 32 คนขึ้นไป OneSync จะกลายเป็นข้อกำหนดตาม sv_maxClients และหากต้องการมากกว่า 64 Clients ต้องใช้ OneSync แบบ on
สรุปสั้น ๆ คือ
OneSync Off
→ ระบบ Networking แบบเก่า
→ Server มี State Awareness จำกัด
OneSync On
→ Server-side State Awareness
→ Entity Routing
→ State Bags
→ Routing Buckets
→ รองรับ Player Scale สูงขึ้น
① OneSync คืออะไร
OneSync เป็น Custom Synchronization System ของ FiveM ที่สร้างต่อยอดจาก Networking ของ GTA Online
เป้าหมายสำคัญคือ
เพิ่มจำนวนผู้เล่น
+
ให้ Server เข้าใจ State ของ Entity
+
เพิ่ม Server-side Synchronization
ทำให้ Developer สามารถสร้างระบบที่ควบคุม Entity จาก Server ได้มากขึ้น
② Synchronization คืออะไร
ในเกม Multiplayer ต้องทำให้ Client หลายเครื่องเห็นสถานะของโลกใกล้เคียงกัน
เช่น
ตำแหน่ง Player
Vehicle
Ped
Object
Health
Entity State
ระบบ Synchronization ทำหน้าที่จัดการข้อมูลเหล่านี้ระหว่าง Server และ Clients
③ OneSync ต่างจากระบบเดิมอย่างไร
ถ้าตั้ง
set onesync off
Cfx.re ระบุว่า Server ไม่มี State Awareness และ Clients จะใช้ Standard GTA/RAGE P2P Networking Model โดย Server ทำหน้าที่หลักในลักษณะ Relay
แต่ถ้าใช้
set onesync on
จะเปิด
Full State Awareness
+
Server-determined Entity Routing
จึงเหมาะกับ FiveM Server สมัยใหม่มากกว่า
④ FiveM Server ใหม่ต้องเปิด OneSync ไหม
สำหรับ Server ใหม่ แนะนำให้เปิด
ใช้
set onesync on
โดยเฉพาะถ้าใช้
ESX
QBCore
Qbox
Routing Buckets
Server-created Entities
State Bags
Server-side Entity Logic
Player Slots จำนวนมาก
เพราะ Resources รุ่นใหม่จำนวนมากถูกออกแบบโดยคำนึงถึง OneSync
⑤ Server ต่ำกว่า 32 คนต้องเปิดไหม
ไม่ใช่เพราะ Slot Requirement อย่างเดียว แต่ก็ยังสามารถเปิด OneSync ได้
ข้อดีคือได้ Server-side State Awareness และ Feature ที่เกี่ยวข้องกับ Entity Synchronization
ดังนั้น Server ใหม่ไม่จำเป็นต้องปิด OneSync เพียงเพราะมีผู้เล่น 10–20 คน
⑥ ตั้งแต่ 32 Players ต้องเปิด OneSync ไหม
ตามเอกสาร Cfx.re ปัจจุบัน
sv_maxClients ตั้งแต่ 32 ขึ้นไป
ต้องใช้
onesync on
หรือ
onesync legacy
แต่ Legacy ไม่แนะนำสำหรับ Server ใหม่
⑦ มากกว่า 64 Players ต้องใช้อะไร
ถ้ากำหนด
sv_maxClients > 64
ต้องใช้
set onesync on
Legacy ไม่เพียงพอสำหรับช่วงนี้ตามข้อกำหนดปัจจุบัน
⑧ OneSync เปิดอย่างไร
แก้ server.cfg
เพิ่ม
set onesync on
ตัวอย่าง
set onesync on
sv_maxclients 48
จากนั้น Save และ Restart Server
⑨ ใช้ onesync on หรือ true
คำสั่ง OneSync รองรับ Mode
on
off
legacy
ดังนั้นรูปแบบที่ชัดเจนคือ
set onesync on
และเป็นรูปแบบที่ Vanilla Configuration ของ Cfx.re ใช้อยู่
⑩ OneSync Off คืออะไร
set onesync off
หมายถึงปิด State Awareness ของ OneSync
Client จะใช้ Standard GTA/RAGE P2P Networking Model และ Server จะทำหน้าที่ Relay มากกว่า OneSync Full Mode
สำหรับ Server รุ่นใหม่มักไม่มีเหตุผลมากนักที่จะเลือก Mode นี้ เว้นแต่มี Requirement เฉพาะ
⑪ OneSync Legacy คืออะไร
ใช้
set onesync legacy
เป็น Compatibility Mode สำหรับ Scripts ที่คาดหวังว่า Player ทุกคนจะมีอยู่บน Client ทุกตัว
แต่ Cfx.re ระบุว่า ไม่แนะนำ
เพราะอาจเกิด
Performance Problems
Graphical Glitches
จึงไม่ใช่ตัวเลือกหลักสำหรับ Server ใหม่
⑫ Server ใหม่ควรใช้ Legacy ไหม
โดยทั่วไป ไม่ควร
เลือก
set onesync on
ก่อน
ถ้า Resource เก่าบังคับให้ใช้ Legacy ควรพิจารณาว่า Resource นั้นยังเหมาะกับ Production Server ปัจจุบันหรือไม่
การใช้ Mode เก่าเพื่อรองรับ Script เก่าอาจสร้าง Technical Debt ระยะยาว
⑬ OneSync Infinity คืออะไร
OneSync Infinity คือเทคโนโลยีของ OneSync สำหรับรองรับการ Synchronize Entity และ Player ใน Scale ขนาดใหญ่
เอกสาร Cfx.re ระบุว่าสถาปัตยกรรมสามารถรองรับได้สูงสุดประมาณ
2048 Players
ในระดับระบบ
แต่ไม่ได้หมายความว่า Server RP ทั่วไปสามารถตั้ง 2048 แล้วเล่นลื่นทันที
⑭ ต้องพิมพ์ onesync infinity หรือไม่
สำหรับ Configuration ปัจจุบัน ให้ใช้
set onesync on
เป็นหลัก
ระบบมีตัวแปร
onesync_enableInfinity
ซึ่งค่า Default ปัจจุบันเป็น
true
จึงไม่จำเป็นต้อง Copy Tutorial เก่าที่ตั้ง Mode แบบล้าสมัยโดยไม่ตรวจ Documentation
⑮ onesync_enableInfinity คืออะไร
เป็น Boolean Variable สำหรับเปิด Infinity System ของ OneSync
ค่า Default ปัจจุบันคือ
true
และถูกใช้สำหรับ Large-scale Entity Synchronization
โดยทั่วไป Server Owner ไม่จำเป็นต้องแก้ค่านี้จาก Default โดยไม่มีเหตุผลเฉพาะ
⑯ OneSync รองรับ 2048 คนจริงไหม
ในระดับ Architecture รองรับได้ถึงขนาดดังกล่าวตามเอกสาร
แต่ Player Capacity จริงขึ้นกับ
CPU
RAM
Network
Framework
Database
Voice
Resources
Entities
Cfx Entitlement
ดังนั้น
OneSync รองรับ 2048
ไม่เท่ากับ
Server ของเรารองรับ 2048 คน
⑰ OneSync ฟรีถึงกี่ Slots
เอกสาร OneSync ปัจจุบันระบุว่า OneSync ใช้งานได้ฟรีถึง
48 Slots
หากต้องการมากกว่านั้นต้องมี Tier ที่รองรับจาก Cfx Portal โดยเริ่มจาก FiveM Element Club Argentum ตามข้อมูลปัจจุบัน
⑱ OneSync กับ Element Club เหมือนกันไหม
ไม่เหมือนกัน
OneSync
= Networking / Synchronization Technology
Element Club
= Entitlement / Subscription
OneSync สามารถเปิดได้ แต่จำนวน Player Slots ที่ Account ใช้ได้ยังมีเงื่อนไขของ Platform
⑲ OneSync กับ sv_maxclients เกี่ยวกันอย่างไร
ตัวอย่าง Server 48 คน
set onesync on
sv_maxclients 48
onesync เปิดระบบ Synchronization
ส่วน
sv_maxclients
กำหนดจำนวน Client สูงสุด
ต้องตั้งทั้งสองอย่างให้สัมพันธ์กัน
⑳ เปิด OneSync แล้ว Slots เพิ่มเองไหม
ไม่
ถ้า Config ยังเป็น
sv_maxclients 16
เปิด OneSync แล้ว Server ก็ยังมีเพดานตาม sv_maxclients
OneSync ไม่ได้แก้ Player Cap ให้อัตโนมัติ
㉑ OneSync ช่วยเรื่อง Entity อย่างไร
เมื่อเปิด Full State Awareness Server สามารถรับรู้และจัดการ Entity ได้มากขึ้น เช่น
Vehicles
Peds
Objects
Players
ทำให้ Developer สามารถเขียน Logic ฝั่ง Server ที่เกี่ยวข้องกับ Entity ได้ดีกว่าระบบเดิม
㉒ Server สร้าง Vehicle ได้ไหม
ได้
OneSync สนับสนุนแนวทาง Server-created Entities
เช่นสร้าง Vehicle จาก Server-side Script
แนวคิดคือ
Server
↓
Create Vehicle
↓
Network Entity
↓
Clients ที่เกี่ยวข้องได้รับ Entity
นี่เป็นหนึ่งใน Best Practices ที่ Cfx.re แนะนำ
㉓ ทำไม Server-created Entity ถึงสำคัญ
ช่วยให้ Authority และ Logic สำคัญอยู่ฝั่ง Server มากขึ้น
ตัวอย่างระบบ
Mission Vehicle
Persistent Vehicle
NPC
World Object
สามารถถูกจัดการโดย Server แทนการฝาก Logic สำคัญไว้กับ Client เพียงอย่างเดียว
㉔ Entity Culling คืออะไร
OneSync Infinity ไม่จำเป็นต้องสร้าง Entity ทุกตัวให้ Client ทุกคนเห็นตลอดเวลา
ระบบใช้ Culling เพื่อ Sync เฉพาะ Entity ที่เกี่ยวข้องกับ Client
ช่วยลด Networking และ Client Load ใน Server ขนาดใหญ่
㉕ Focus Zone คืออะไร
เอกสาร OneSync อธิบายว่า Player Ped/Vehicle Culling ใช้ Focus Zone รอบ Player
ปัจจุบันเอกสารระบุ Radius ประมาณ
424 units
Entity ที่อยู่นอกพื้นที่เกี่ยวข้องไม่จำเป็นต้องถูกสร้างบน Client ตัวนั้นทั้งหมด
㉖ ทำไม Player 200 คนไม่ต้องเห็นกันทุกคน
สมมุติมีผู้เล่นอยู่คนละฝั่ง Map
Client ของ Player A ไม่จำเป็นต้อง Synchronize รายละเอียด Entity ของ Player B ทุกอย่างตลอดเวลา
OneSync สามารถเลือก Routing ตามความเกี่ยวข้อง
นี่เป็นหลักสำคัญที่ทำให้รองรับ Scale ใหญ่ขึ้น
㉗ Routing Bucket คืออะไร
OneSync มีระบบ
Routing Buckets
คล้ายแนวคิด
Dimension
Virtual World
Instance
สามารถแยก Player และ Entities ให้อยู่คนละ World Instance เชิง Network ได้
㉘ Routing Bucket ใช้ทำอะไร
ตัวอย่าง
Character Selection
Apartment Instance
Heist Instance
Match
Private Interior
Tutorial
Player ใน Bucket หนึ่งสามารถถูกแยก Entity Routing จาก Player อีก Bucket ได้
㉙ ตัวอย่าง Routing Bucket
แนวคิดเช่น
Bucket 0
= Main World
Bucket 10
= Apartment A
Bucket 20
= Heist
Server สามารถย้าย Player หรือ Entity ไป Bucket ที่กำหนดได้
㉚ Routing Bucket ใช้ทำ Interior ทุกแบบไหม
ไม่ควรคิดว่า Bucket คือคำตอบสำหรับทุก Interior
ต้องออกแบบตามระบบ Resource และ Gameplay
แต่สำหรับ Instance ที่ต้องการแยก Game State จริง ๆ Routing Bucket เป็น Feature สำคัญของ OneSync
㉛ Entity Lockdown คืออะไร
OneSync รองรับการกำหนด Entity Lockdown Mode สำหรับ Routing Bucket
Mode ปัจจุบันมี เช่น
strict
relaxed
inactive
และใน FiveM สำหรับ GTAV Enhanced ยังมี full ตามเอกสารปัจจุบัน
㉜ strict คืออะไร
strict
หมายถึงไม่อนุญาตให้ Clients สร้าง Entities ภายใน Bucket นั้น
เหมาะกับระบบที่ต้องการให้ Server เป็นผู้ควบคุม Entity Creation อย่างเข้มงวด
㉝ relaxed คืออะไร
relaxed
จะ Block เฉพาะ Script-owned Entities ที่ Client สร้างตามพฤติกรรมที่ Cfx.re กำหนด
เป็นระดับที่ผ่อนคลายกว่า Strict
㉞ inactive คืออะไร
inactive
อนุญาตให้ Clients สร้าง Entity ได้ตามปกติ
เป็น Default/Mode ที่ไม่ใช้ Lockdown เข้มงวดในบริบทดังกล่าว
㉟ State Bags คืออะไร
State Bags เป็นระบบเก็บ State แบบ Key/Value ที่เกี่ยวข้องกับ
Entity
Player
Global State
และสามารถ Replicate ไปยัง Clients ที่เกี่ยวข้องได้
OneSync ทำให้ State Bags เป็นเครื่องมือสำคัญสำหรับ Resources รุ่นใหม่
㊱ State Bags ใช้ทำอะไร
ตัวอย่าง
Vehicle Locked
Player Duty
Entity Status
Mission State
Custom Attributes
แทนการส่ง Network Event แบบ Manual สำหรับทุกข้อมูลในบางกรณี
Developer ควรเลือก State Bag หรือ Event ตามลักษณะข้อมูล
㊲ OneSync Population คืออะไร
มี Convar
onesync_population
ค่า Default ปัจจุบันคือ
true
ใช้ควบคุม Population Spawning/Management
จำเป็นสำหรับ NPC Population ที่ต้องการให้ระบบ Spawn ตามปกติ
㊳ ปิด Population ได้ไหม
ได้
เช่น
set onesync_population false
แต่จะเปลี่ยนพฤติกรรม Population ของ Server
ไม่ควร Copy ค่านี้จาก Optimization Guide แบบสุ่ม เพราะ Server อาจต้องใช้ NPC/Traffic ตาม Gameplay
㊴ onesync_forceMigration คืออะไร
ตัวแปร
onesync_forceMigration
ค่า Default ปัจจุบันคือ true
ช่วย Force Entity Migration เมื่อ Network Owner เดิมไม่เกี่ยวข้องหรือ Disconnect
การปิดอาจเพิ่ม Performance บางกรณี แต่สามารถทิ้ง Entity ไว้โดยไม่มี Owner ได้
จึงไม่ควรเปลี่ยนโดยไม่มีการทดสอบ
㊵ onesync_distanceCulling คืออะไร
ค่า
onesync_distanceCulling
Default ปัจจุบันเป็น true
ช่วยตัด Entity ออกจาก Synchronization เมื่ออยู่ไกลและไม่เกี่ยวข้องกับ View
นี่เป็นหนึ่งในกลไกช่วยด้าน Performance
㊶ distanceCullVehicles ควรเปิดไหม
มีตัวแปร
onesync_distanceCullVehicles
Default ปัจจุบันเป็น false
การเปิดสามารถลด Vehicle Sync ระยะไกลได้ แต่มีผลต่อ Gameplay/Script บางประเภท
ไม่ควรปรับเป็น Optimization Trick โดยไม่ทดสอบ Server จริง
㊷ เปิด OneSync ทำให้ Server เร็วขึ้นไหม
ไม่ควรมองว่า OneSync เป็น “FPS Booster”
หน้าที่หลักคือ State Awareness, Entity Routing และ Synchronization Architecture
Performance จริงยังขึ้นกับ
Resource Code
CPU
Database
Network
Entity Count
Player Count
เปิด OneSync ไม่สามารถแก้ Script ที่เขียนไม่ดีได้
㊸ เปิด OneSync แล้ว Resource พังได้ไหม
Resources เก่าบางตัวอาจมี Assumption เกี่ยวกับ Networking แบบเก่า
โดยเฉพาะ Script ที่เก่ามากหรือเขียนโดยไม่รองรับ Server-side State Awareness
หากเปิดแล้ว Resource มีปัญหา ควรตรวจ Version หรือเปลี่ยน Resource
ไม่ควรถอยกลับ Legacy เป็นคำตอบแรกเสมอไป
㊹ Framework รุ่นใหม่รองรับ OneSync ไหม
Framework หลักใน Ecosystem FiveM สมัยใหม่โดยทั่วไปถูกพัฒนาโดยคำนึงถึง OneSync
แต่ Custom Resources ต้องตรวจ Documentation แยก
โดยเฉพาะ Script ที่ไม่ได้อัปเดตมาหลายปี
㊺ OneSync ช่วย Security ไหม
OneSync เปิดโอกาสให้ Server ควบคุม Logic และ Entity Authority ได้มากขึ้น
เช่นใช้
Server-created Entities
Entity Lockdown
Server-side Validation
เป็นส่วนหนึ่งของ Security Architecture
แต่ไม่ได้ทำให้ Server ปลอดภัยจาก Cheat โดยอัตโนมัติ
Resources ยังต้อง Validate Input ฝั่ง Server
㊻ เปิด OneSync แล้วต้องตั้งอะไรเพิ่มไหม
สำหรับ Server ทั่วไปเริ่มต้นเพียง
set onesync on
และ
sv_maxclients 48
ตาม Capacity ที่ต้องการก็เพียงพอในระดับพื้นฐาน
ตัวแปร OneSync ขั้นสูงควรปล่อย Default ก่อน เว้นแต่มีเหตุผลและผ่านการทดสอบ
㊼ อย่า Copy OneSync Optimization มั่ว
ไม่ควรเห็น Config จาก Server อื่นแล้ว Copy เช่น
forceMigration
distanceCulling
population
entity lockdown
frequency settings
ทั้งหมดมาใช้ทันที
Server แต่ละแห่งมี
Framework
Resources
Player Count
Entity Behavior
ต่างกัน
ควรวัดก่อนและหลังทุกการเปลี่ยน
㊽ Checklist ตั้ง OneSync
ตรวจ
Artifact ปัจจุบัน
set onesync on
sv_maxclients ถูกต้อง
Entitlement รองรับ Slots
Framework รองรับ
Resources รองรับ
Console ไม่มี Error
Player เข้าได้
Entities Sync ถูกต้อง
Vehicles ทำงาน
NPC ทำงาน
Routing Buckets ทำงานถ้าใช้
State Bags ทำงานถ้าใช้
CPU/RAM ปกติ
Network ปกติ
จากนั้นจึงค่อยปรับ Advanced Convars หากจำเป็น
㊾ ตัวอย่าง Config ที่แนะนำสำหรับ Server ใหม่
ตัวอย่างพื้นฐาน
# OneSync
set onesync on
# Player slots
sv_maxclients 48
แล้วปล่อย Advanced Variables เป็น Default ก่อน
อย่าเริ่ม Server ใหม่ด้วย Configuration OneSync 20–30 บรรทัดที่ Copy จากอินเทอร์เน็ตโดยไม่รู้ว่าแต่ละตัวทำอะไร
㊿ สรุป FiveM OneSync คืออะไร ต้องเปิดไหม
OneSync คือระบบ Synchronization หลักของ FiveM สำหรับ Server-side State Awareness, Entity Routing และการรองรับ Player Scale ที่สูงขึ้น
สำหรับ Server ใหม่ คำตอบโดยทั่วไปคือ ควรเปิด
ใช้
set onesync on
โดยเฉพาะเมื่อ
ใช้ Framework รุ่นใหม่
ต้องการ State Bags
ใช้ Routing Buckets
สร้าง Entity ฝั่ง Server
ต้องการ 32+ Players
ต้องการ Server-side Entity Logic
ตามเอกสาร Cfx.re ปัจจุบัน
32+ Clients
→ OneSync on หรือ legacy
มากกว่า 64 Clients
→ OneSync on
และ OneSync ใช้งานได้ฟรีถึง 48 Slots ก่อนต้องมี Entitlement ระดับที่รองรับมากขึ้น
สำหรับ Production Server comsiam แนะนำให้ใช้ set onesync on และหลีกเลี่ยง Legacy ใน Server ใหม่ เว้นแต่มี Resource เก่าที่บังคับจริง ๆ และควรวางแผนเปลี่ยน Resource ดังกล่าวในระยะยาว
อีกเรื่องสำคัญคืออย่าปรับ Advanced OneSync Convars เพียงเพราะมีคนเรียกว่า “สูตรลดแลค” เพราะค่าต่าง ๆ อย่าง Population, Entity Migration และ Distance Culling สามารถเปลี่ยนพฤติกรรมของเกมได้
แนวทางที่เหมาะสมคือ
เปิด OneSync
↓
ตั้ง Player Slots
↓
ทดสอบ Framework
↓
ทดสอบ Entity
↓
Monitor Performance
↓
ปรับเฉพาะเมื่อมีข้อมูล
เมื่อใช้ OneSync อย่างถูกต้อง ผู้ดูแล FiveM Server ของ comsiam จะมี Foundation ที่เหมาะกับ Server รุ่นใหม่ ทั้งด้าน Player Scaling, Server-side Logic, Routing Buckets และ Entity Synchronization โดยไม่ต้องพึ่ง Networking Mode รุ่นเก่าที่มีข้อจำกัดมากกว่า
Comments
Post a Comment