วิธีย้าย FiveM Server จาก Legacy ไป Enhanced
การ ย้าย FiveM Server จาก Legacy ไป Enhanced ไม่ควรทำด้วยการลบ FXServer เดิมแล้วนำไฟล์ Enhanced ไปทับทันที เพราะ FiveM for GTAV Enhanced มีทั้ง Server Binary ใหม่, Breaking Changes, ระบบ OneSync ใหม่, Connection Handshake ใหม่, .NET Runtime ใหม่ รวมถึงการเปลี่ยนแปลงด้าน Asset และ Configuration บางส่วน
วิธีที่ปลอดภัยที่สุดคือ
Backup Legacy → สร้าง Enhanced Test Server แยก → ติดตั้ง Cfx Server → Clone Database → ย้าย Script ทีละกลุ่ม → แปลง Asset ด้วย Alchemist → แก้ Breaking Changes → ทดสอบ Voice/OneSync/Database → Load Test → เตรียม Rollback → เปิด Production
ข้อดีคือ Cfx.re ยังคงออกแบบให้ Script Lua, JavaScript และ C# เดิมจำนวนมากสามารถใช้งานต่อได้ จึงไม่จำเป็นต้องสร้าง ESX, QBCore, Qbox หรือระบบ Roleplay ใหม่ตั้งแต่ศูนย์
แต่ Server Owner ต้องตรวจ Resource ทุกตัวก่อนเปิดจริง โดยเฉพาะ Map, MLO, Vehicle, KVP Data, C# Resource, Voice, State Bags และ Configuration เก่าของ OneSync
บทความนี้จาก comsiam จะพาย้าย Server แบบเป็นขั้นตอนเพื่อรักษาข้อมูลผู้เล่นและลดความเสี่ยงต่อ Production Server ให้มากที่สุด
① ก่อนย้ายต้องเข้าใจก่อนว่า Enhanced เปลี่ยนอะไร
Enhanced ไม่ได้เป็นเพียง GTA V กราฟิกใหม่แล้ว FiveM ทำงานเหมือนเดิมทุกอย่าง
Cfx.re เปลี่ยนหลายส่วนของ Platform เช่น
Cfx Server ใหม่
Client-server synchronization
OneSync Mode
Connection Handshake
Voice
C# Runtime
State Bags
Developer Mode
Pure Mode
Gamebuild
Server Configuration
Asset Format
ดังนั้นการ Migration ควรถูกมองว่าเป็น Platform Migration ไม่ใช่เพียง Update Artifact ธรรมดา
② ห้าม Migration ทับ Production Server เดิม
แนวทางที่เสี่ยงคือ
FiveM Legacy Production
↓
ลบ FXServer
↓
Copy Enhanced ทับ
↓
เปิด Resource ทั้งหมด
ถ้ามี Resource ไม่รองรับ คุณอาจต้องแก้ Server ขณะที่ผู้เล่นกำลังรอ
แนวทางที่ดีกว่าคือสร้าง Environment ใหม่แยกออกมา
③ โครงสร้าง Server ที่แนะนำ
ตัวอย่างบน Windows
C:\FiveM-Legacy\
สำหรับ Server เดิม
และ
C:\FiveM-Enhanced\
สำหรับ Enhanced Test Server
อย่าใช้ Folder เดียวกัน
เพราะคุณต้องสามารถกลับ Legacy ได้ทันทีหาก Migration มีปัญหา
④ สิ่งแรกสุดคือ Backup
ก่อนแตะ Enhanced ให้ Backup อย่างน้อย
Database
server.cfgResource ทั้งหมด
txAdmin Data
Permission
ACE
Script Configuration
Environment Variables
Server Keys ที่เกี่ยวข้อง
Webhook Configuration
Custom Asset
ควรมี Backup ที่อยู่นอก Folder Server หลักด้วย
⑤ Database ต้อง Backup แบบ Full Dump
สำหรับ RP Server ฐานข้อมูลคือหนึ่งในสิ่งสำคัญที่สุด
เพราะเก็บข้อมูล เช่น
Character
Money
Inventory
Job
Gang
Vehicle
Housing
Business
Phone
Banking
ควรสร้าง Full Database Dump ก่อน Migration
ไม่ใช่ Backup เฉพาะ Table ที่คิดว่าสำคัญ
⑥ สร้าง Database Clone สำหรับ Enhanced
สมมติ Production ใช้
fivem_prod
ให้สร้างสำเนา เช่น
fivem_enhanced_test
แล้วให้ Enhanced Test Server ใช้ Database นี้
อย่าให้ Test Server เขียน Production Database ตั้งแต่วันแรก
⑦ ทำไมต้อง Clone Database?
เพราะ Resource ที่กำลังทดสอบอาจ
ALTER TABLE
เพิ่ม Column
เปลี่ยน Schema
Insert ข้อมูลผิด
Delete Record
เปลี่ยน Character Data
หากใช้ Production Database จริง ความเสียหายจะเกิดกับผู้เล่นทันที
Clone ช่วยให้ทดลองได้เต็มที่โดยไม่เสี่ยงข้อมูลจริง
⑧ ดาวน์โหลด Cfx Server สำหรับ Enhanced
Enhanced ใช้ Server Package ใหม่
บน Windows Package คือ
cfx-server_win_x64
และ Executable คือ
cfx-server.exe
ไม่ใช่
FXServer.exe
แบบ Legacy
ควรดาวน์โหลด Recommended Build จาก Cfx.re
⑨ Linux ก็มี Package แยก
สำหรับ Linux ใช้
cfx-server-linux_x64
Cfx.re ระบุว่า Linux Build ยังคงใช้ Alpine rootfs ทำให้ Requirement พื้นฐานใกล้เคียงกับ Legacy
แต่ต้องใช้ Cfx Server Package ของ Enhanced ให้ถูกตัว
⑩ txAdmin ยังใช้ต่อได้หรือไม่?
ได้
txAdmin ยังคง Embedded มากับ Cfx Server
ดังนั้น Workflow การบริหาร Server ยังใกล้เคียงเดิม เช่น
Console
Restart
Resource Management
Player Management
Scheduled Restart
CFG Editor
แต่แนะนำสร้าง txAdmin Profile ใหม่สำหรับ Enhanced
ไม่ควรนำ Production Profile เดิมมาทับทันที
⑪ ตั้งชื่อ Test Server ให้ชัด
เช่น
MyCity Enhanced TEST
ไม่ควรใช้ชื่อเดียวกับ Production
สิ่งที่ควรแยกคือ
Project Name
Port
txAdmin Profile
Database
Server Folder
เพื่อลดความสับสนระหว่างทีมงาน
⑫ ใช้ Port คนละ Port กับ Legacy
หาก Legacy และ Enhanced เปิดพร้อมกันบน IP เดียวกัน จะใช้ Endpoint เดียวกันไม่ได้
ตัวอย่าง
Legacy
30120
Enhanced Test
30130
นี่เป็นเพียงตัวอย่าง
Port ที่เลือกจริงต้องตรงกับ
server.cfg
Firewall
Router
Hosting
ทั้งหมด
⑬ อย่า Copy server.cfg แล้วเปิดทันที
server.cfg เดิมสามารถใช้เป็น Reference ได้ แต่ Enhanced มี Breaking Changes และ Configuration ที่เปลี่ยน
วิธีที่ดีคือ
เริ่มจาก Enhanced Config ที่ใช้งานได้
Copy Setting จาก Legacy ทีละส่วน
Restart/Test
ตรวจ Warning/Error
วิธีนี้ช่วยหา Config เก่าที่ใช้ไม่ได้ง่ายกว่า
⑭ OneSync Non-Big Mode ถูกถอดออก
นี่เป็น Breaking Change สำคัญ
Cfx.re ระบุว่า Enhanced ไม่มี OneSync non-big mode อีกต่อไป
Enhanced ใช้ Mode ที่เทียบกับ OneSync Big เป็นพื้นฐาน
ดังนั้น Server ที่มี Script ซึ่งพึ่งพาพฤติกรรม Player Event จาก Non-Big Mode ต้องทดสอบใหม่
⑮ Player Events อาจมี Behavior ต่างจากเดิม
ใน Big Mode Player Connect/Disconnect Event ที่เกี่ยวข้องกับ Scope อาจมีพฤติกรรมตาม Range แตกต่างจาก Non-Big Legacy
Script เก่าที่สมมติว่า Player ทุกคนอยู่ใน Scope ตลอดอาจต้องตรวจ
โดยเฉพาะ Script เช่น
Player Tracking
Scoreboard
Admin
Spectate
Global Player Cache
อย่าทดสอบเพียงว่า Resource Start สำเร็จ
⑯ P2P Sync ถูกเปลี่ยน
Enhanced ไม่ใช้ P2P Synchronization แบบ Legacy อีกต่อไป
Cfx.re เปลี่ยนไปใช้ Client-server model
เป้าหมายคือช่วยลด Latency และทำ Synchronization ให้เป็นระบบมากขึ้น
Script ที่พึ่งพาพฤติกรรม Network แบบเก่าจึงควรถูกทดสอบ
⑰ onesync_automaticResend ใช้ไม่ได้แล้ว
ตัวแปร
onesync_automaticResend
ถูกถอดออกจาก Enhanced
ถ้า server.cfg เก่ามี Setting นี้ ไม่ควรคาดหวังว่าจะมีผลเหมือน Legacy
ควร Review Convar เก่าทั้งหมดก่อน Production
⑱ sv_useAccurateSends ถูก Deprecated
Enhanced มี Config ใหม่คือ
sv_syncTickRate
แทนการพึ่ง
sv_useAccurateSends
แบบเดิม
Cfx.re ระบุ Range ของ sv_syncTickRate ตั้งแต่
1-120
และค่า Default คือ
60
ไม่ควรตั้ง 120 ทันทีโดยไม่ Benchmark เพราะ Tick Rate สูงขึ้นสามารถใช้ CPU มากขึ้น
⑲ endpoint_add_tcp และ udp เปลี่ยนอะไร?
Enhanced รองรับ Endpoint เดียว แทนการกำหนดหลาย Endpoint แบบ Legacy บาง Configuration
ถ้า Server เก่ามีหลาย
endpoint_add_tcp
หรือ
endpoint_add_udp
ต้อง Review ก่อน Migration
อย่า Copy Network Config เดิมโดยอัตโนมัติ
⑳ Pure Mode เปลี่ยนอย่างไร?
Enhanced เปิด Pure Mode เสมอและไม่สามารถปิดได้ตามเอกสาร Cfx.re ปัจจุบัน
ในช่วง Early Access ยังมีข้อจำกัดเกี่ยวกับ Graphics Mod ฝั่ง Client
ดังนั้น Community ที่เคยพึ่ง
Graphics Mod
Client Modification
Modified Game File
ควรแจ้งผู้เล่นถึงความแตกต่างนี้ก่อน Migration
㉑ Developer Mode เปลี่ยน
คำสั่ง Legacy อย่าง
+set moo 31337
ถูกถอดออก
Enhanced ใช้ Server-side Convar
sv_devMode true
เพื่อเปิด Development Tool
ดังนั้น Developer Workflow เดิมควรถูกอัปเดต
㉒ อย่าเปิด Developer Mode บน Production แบบไม่จำเป็น
Developer Mode มีไว้สำหรับ
Debug
Resmon
Profiler
Development Tool
ควรใช้บน Test Environment
Cfx.re ยังมีข้อจำกัด Player Slot เมื่อ Server เปิด Developer Mode ในบาง Configuration เพื่อป้องกันการใช้แทน Production
㉓ KVP Database ต้อง Migration
นี่เป็น Breaking Change ที่ Server Owner ไม่ควรมองข้าม
Cfx.re ระบุว่า Key-Value DB Files ต้อง Migration
ถ้า Resource ใช้ KVP เก็บข้อมูล เช่น
Setting
Player Preference
Resource Cache
Persistent State
ต้องตรวจว่าข้อมูลเหล่านี้ถูก Migration ด้วย
อย่าคิดว่า Database MySQL คือข้อมูลทั้งหมดของ Server
㉔ KVP คืออะไร?
KVP คือระบบ Key-Value Persistence ของ FiveM
Resource สามารถใช้เก็บข้อมูลในรูปแบบ
String
Integer
Float
บาง Resource ใช้ KVP แทน SQL สำหรับ Configuration หรือ State ขนาดเล็ก
ถ้าย้ายเฉพาะ MySQL แต่ลืม KVP Resource บางตัวอาจเหมือนถูก Reset
㉕ ตรวจ Resource ที่ใช้ KVP อย่างไร?
Developer สามารถ Search Code หาคำสั่งที่เกี่ยวข้องกับ
SetResourceKvp
GetResourceKvp
DeleteResourceKvp
หรือ API ที่เกี่ยวข้องตาม Runtime
สร้าง List ไว้ว่า Resource ใดต้องตรวจ KVP Migration
อย่ารอให้ Production เปิดแล้วจึงรู้ว่าข้อมูลหาย
㉖ Resource Builders ถูกถอดออก
Cfx.re ระบุว่า Resource ไม่สามารถเป็น Builder ในรูปแบบเดิมได้แล้ว
ถ้า Server ใช้ Resource Pipeline หรือ Build Process ที่พึ่ง Feature นี้ ต้องปรับ Workflow
Server ทั่วไปอาจไม่เจอปัญหานี้ แต่ Developer Environment ขนาดใหญ่อาจได้รับผล
㉗ DevCon Port เดิมถูกถอด
Port
29200
29300
สำหรับ DevCon แบบเก่าถูกถอดใน Enhanced
รวมถึง Server ImGui GUI แบบเดิมก็ถูกถอด
ถ้ามี Development Tool ภายในทีมที่พึ่งระบบเหล่านี้ต้องปรับก่อน Migration
㉘ Lua Script เดิมย้ายได้ไหม?
ส่วนใหญ่มีโอกาสสูง
Cfx.re ตั้งใจรักษา Backward Compatibility กับ Existing Script และ Native ที่รองรับอยู่
ดังนั้น Lua Script จำนวนมากไม่จำเป็นต้องเขียนใหม่
แต่ต้องทดสอบ Feature จริง เช่น
Events
Callbacks
Entity
State Bags
Player Scope
เพราะบาง Behavior เปลี่ยนแม้ Syntax เดิมยังทำงาน
㉙ JavaScript Resource เดิมล่ะ?
หลักการเดียวกัน
Resource JavaScript จำนวนมากสามารถนำมาทดสอบได้
แต่ควรตรวจ
Runtime Dependency
npm Package
Binary Module
Event
NUI
Memory
โดยเฉพาะ Resource เก่าที่ไม่ได้ Update มานาน
㉚ C# ต้องระวังมากกว่าปกติ
Enhanced เปลี่ยนจาก Mono ไปใช้ Runtime บน .NET 10
Cfx.re ยังรักษา Old API เพื่อ Compatibility แต่ Resource C# ควรได้รับการ Audit เพิ่ม
ตรวจ
NuGet Package
Reflection
Binary Dependency
Runtime API
Target Framework
Library เก่า
โดยเฉพาะ DLL ที่ Compile มานานแล้ว
㉛ อย่าทดสอบ Script ด้วยคำว่า Started อย่างเดียว
Console แสดง
Started resource myscript
ไม่ได้แปลว่า Resource Compatible 100%
ต้องทดสอบ Function จริง
เช่น Inventory ต้องทดสอบ
Open
Move Item
Drop
Stash
Trunk
Save
Reconnect
การ Migration ต้องเป็น Functional Test ไม่ใช่ Startup Test
㉜ Framework ควรย้ายก่อน Resource ย่อย
แนะนำลำดับ
กลุ่ม 1
Library/Dependency
กลุ่ม 2
Database Driver
กลุ่ม 3
Framework Core
กลุ่ม 4
Character/Spawn
กลุ่ม 5
Inventory/Target
กลุ่ม 6
Job
กลุ่ม 7
Voice/Phone
กลุ่ม 8
Vehicle
กลุ่ม 9
Map/MLO
กลุ่ม 10
ระบบเสริม
วิธีนี้ทำให้หาต้นเหตุง่ายขึ้น
㉝ ESX ควรทดสอบอะไร?
อย่างน้อย
Login
Player Loaded
Identifier
Character
Money
Job
Inventory
Vehicle
Death
Reconnect
Save
ถ้า Core ผ่านแล้วค่อยเพิ่ม ESX Resource ภายนอก
㉞ QBCore ควรทดสอบอะไร?
ตรวจ
PlayerData
Metadata
Job
Gang
Inventory
Character
Vehicle
Garage
Callback
Server Event
และ Resource ที่พึ่ง qb-core ทุกตัว
㉟ Qbox ต้องทดสอบ Dependency ทั้ง Chain
Qbox Server มักพึ่ง Resource หลายตัวร่วมกัน
ตัวอย่าง
qbx_core
ox_lib
ox_inventory
ox_target
Database Driver
อย่าทดสอบ Core ตัวเดียวแล้วสรุปว่า Stack ทั้งหมดรองรับ Enhanced
㊱ Voice ต้องทดสอบใหม่
FiveM Enhanced ใช้ Voice Stack ที่สร้างใหม่แทน Mumble Integration เดิม
Native แบบเก่ายังมี Compatibility บางส่วน แต่ Mumble ถูกจัดเป็น Deprecated
ดังนั้นต้องทดสอบ
Proximity
Radio
Phone
Channel
Mute
Routing Bucket
Reconnect
ให้ครบ
㊲ pma-voice ใช้ต่อได้เลยไหม?
ไม่ควรสมมติว่า Version เก่าจะสมบูรณ์
ควรตรวจ Version ล่าสุดและทดสอบบน Enhanced
โดยเฉพาะ Server ที่ใช้ Resource เสริมเช่น
Radio UI
Phone Calls
Voice Range
Megaphone
เพราะ Dependency Chain อาจมี Compatibility ต่างกัน
㊳ Connection Handshake ใหม่ต้องทดสอบ
Enhanced เปลี่ยน Handshake ระหว่าง Client และ Server
ช่วง Connection Deferral ใช้ WebSocket และ UDP จะยังไม่ถูกใช้จน Connection สำเร็จ
ดังนั้น Server ที่มี
Firewall
DDoS Protection
Reverse Proxy
ACL
Custom Network Protection
ต้องทดสอบใหม่ทั้งหมด
㊴ Legacy เข้าได้ไม่ได้แปลว่า Enhanced จะเข้าได้
นี่เป็นข้อผิดพลาดที่พบบ่อย
Firewall เดิมอาจรองรับ Connection Flow ของ Legacy แต่ไม่รองรับ Enhanced
หาก
Legacy เข้าได้
แต่
Enhanced WebSocket Handshake Fail
ให้ตรวจ Network Protection ก่อน Script
㊵ Map/MLO/รถต้องใช้ Alchemist
Cfx.re สร้าง Alchemist สำหรับแปลง Asset จาก GTA V Legacy ไป Enhanced โดยตรง
มันสามารถ Scan Folder และ Subfolder เพื่อหา Legacy Asset แล้วแปลงเป็น Enhanced Format
เหมาะกับ
Map
MLO
Vehicle
Model
3D Asset
นี่ควรเป็นส่วนหนึ่งของ Migration Plan สำหรับ Server ที่มี Custom Asset
㊶ Alchemist แปลง resources ทั้ง Folder ได้ไหม?
ได้
Cfx.re ระบุว่าสามารถเลือก resources Directory ของ Server เป็น Input
Alchemist จะสร้าง Output Resource Folder ที่ใช้เป็น Drop-in Replacement สำหรับ Enhanced
ระบบจะตรวจ Legacy 3D Asset ใน Subfolder แล้ว Convert
㊷ Script ใน Folder จะถูก Alchemist แก้ไหม?
โดยหลัก ไม่
Alchemist จะ Copy ไฟล์รอบข้าง เช่น
Script
Interface
Configuration
ไปยัง Output แต่ไม่ได้แก้เนื้อหา Script เหล่านั้น
ดังนั้น Script Compatibility ยังต้องทดสอบแยก
นี่สำคัญมาก เพราะ Alchemist ไม่ใช่ Script Converter
㊸ อย่า Convert ทับ Resource ต้นฉบับ
ควรใช้ Folder แบบนี้
resources-legacy
เป็น Source
และ
resources-enhanced
เป็น Output
ไม่ควรเขียนทับ Original Asset จนไม่สามารถกลับ Legacy ได้
เก็บ Source ต้นฉบับไว้เสมอ
㊹ ควรแปลง Asset ทั้งหมดทีเดียวไหม?
Server เล็กอาจทำได้
แต่ Server ใหญ่ควรแยก Batch เช่น
รถ
Map
MLO
Props
Clothing/Asset ที่เกี่ยวข้อง
แล้วทดสอบทีละกลุ่ม
หาก Asset ตัวหนึ่ง Crash จะหาได้ง่ายกว่าแปลงหลายพันไฟล์แล้วเปิดพร้อมกัน
㊺ Asset ที่ Convert แล้วต้องทดสอบอะไร?
ตรวจอย่างน้อย
Model แสดงถูก
Texture ถูก
Collision
LOD
Door
Interior
Spawn
Lighting
Performance
Client Crash
คำว่า Convert สำเร็จไม่ได้หมายความว่า Gameplay Test ผ่านเสมอไป
㊻ รถต้องทดสอบทีละ Pack
สำหรับ Vehicle ตรวจ
Spawn
Texture
Handling
Wheel
Door
Light
Damage
Collision
LOD
Meta
รวมถึงทดสอบหลายคันพร้อมกันเพื่อดู Performance
㊼ MLO ต้องเดินตรวจจริง
อย่าดูเพียงว่า Map โหลด
ให้เดินตรวจ
ทางเข้า
Collision
Door
Stair
Interior
Lighting
Teleport
NPC
Camera
และลองให้ผู้เล่นหลายคนเข้า Location พร้อมกัน
㊽ Asset Escrow เป็นจุดที่ต้องเช็กก่อนย้าย Production
ตามเอกสาร Cfx.re ปัจจุบัน Asset Escrow ยังระบุว่าไม่ได้ Implement สำหรับ Enhanced
ดังนั้นหาก Server พึ่ง Resource Escrow จำนวนมาก ต้องตรวจสถานะของ Resource เหล่านั้นก่อน Migration จริง
นี่เป็นเหตุผลสำคัญที่ Server Production บางแห่งอาจเลือกใช้ Legacy ต่อจน Dependency พร้อม
㊾ อย่า Bypass Asset Escrow
หาก Paid Resource ยังไม่รองรับ Enhanced ไม่ควร
Crack
Bypass
Decrypt
ดัดแปลง Escrow
เพื่อฝืนใช้งาน
ควรรอ Enhanced Version หรือสอบถาม Developer ผู้สร้าง Resource
นี่ปลอดภัยทั้งด้าน Technical และ License
㊿ State Bags เปลี่ยน Behavior
Enhanced มีการเปลี่ยนเรื่อง State Bags
Cfx.re ระบุว่า Callback จะถูกเรียกเมื่อ Entity มีอยู่จริง และ Replicated Value จะ Replicate เมื่อถูกกำหนดให้ Replicate อย่างชัดเจน
Resource ที่ใช้ State Bags หนัก ๆ ควรทดสอบ
Player State
Entity State
Vehicle State
Job State
Routing
อีกครั้ง
51. Script ที่พึ่ง State Bag แบบเดิมอาจมี Bug แบบเงียบ
ปัญหาอาจไม่ได้ขึ้น Error
แต่ Feature เช่น
Vehicle Lock
Duty State
Entity Metadata
Interaction
Instance
อาจไม่ Sync ตามที่คาด
จึงต้องทดสอบด้วยผู้เล่นอย่างน้อย 2–3 Client ไม่ใช่คนเดียว
52. Gamebuild ต้องตรวจ
Enhanced ปัจจุบันรองรับ Gamebuild ล่าสุดเป็น Default
Server เก่าที่ตั้ง
sv_enforceGameBuild
ไว้เพื่อบังคับ Legacy DLC Build ควร Review
อย่า Copyเลข Build เก่าจาก Legacy อย่างไม่ตรวจ
เพราะ Enhanced Gamebuild Model ต่างออกไป
53. Graphics Mod ของผู้เล่นต้องแจ้งล่วงหน้า
Enhanced Early Access เปิด Pure Mode แบบบังคับและมีข้อจำกัดกับ Graphics Mod
ถ้า Community เดิมใช้
ReShade
Graphics Pack
Modified Visual File
อย่างแพร่หลาย ควรประกาศก่อน Migration
ไม่เช่นนั้นผู้เล่นอาจเข้า Server แล้วคิดว่า Client มีปัญหา
54. Resource File Download Timeout มี Config ใหม่
Enhanced เพิ่ม
sv_resourceFileDownloadTimeout
ใช้กำหนด Timeout สำหรับการดาวน์โหลด Resource File ผ่าน HTTP
Default ตามเอกสารคือประมาณ 2 นาที
Server ที่มี Resource ใหญ่มากหรือ Infrastructure Download พิเศษควรเข้าใจ Setting นี้
ไม่ควรเพิ่ม Timeout สูงมากเพื่อซ่อน Download Server ที่ช้าโดยไม่แก้ต้นเหตุ
55. อย่าเร่ง sv_syncTickRate เป็น 120 ทันที
แม้ Enhanced รองรับถึง 120 แต่ Cfx.re ระบุชัดว่า Tick Rate ที่สูงขึ้นสามารถเพิ่ม CPU Usage
สำหรับ Migration ควรเริ่มจากค่า Default
แล้ว Benchmark
CPU
Network
Player Count
Latency
ก่อนปรับ
56. ทดสอบ Server Performance ก่อน Production
วัดอย่างน้อย
CPU
RAM
Thread Tick
Player Count
Entity Count
Network
Lua Memory
JavaScript Memory
Enhanced มี Metrics มากขึ้นสำหรับ Server Owner จึงควรใช้ข้อมูลจริงประกอบการตัดสินใจ
57. Enhanced มี Server Metrics มากขึ้น
Cfx.re เพิ่ม Metrics ที่ติดตามได้ เช่น
svMain Tick
svNetwork Tick
svSync Tick
Entity
State Bags
Handshake
TCP Connections
Lua Memory
JavaScript Memory
Event Queue
เหมาะมากกับ Migration เพราะสามารถเปรียบเทียบ Performance ก่อนและหลังได้
58. Benchmark Legacy ก่อนย้าย
ก่อน Migration ควรเก็บ Baseline จาก Legacy เช่น
RAM ตอน 50 Player
CPU ตอน 50 Player
Server Tick
Resource CPU
Database Latency
Network
หลัง Enhanced Test ให้ใช้จำนวน Player และ Scenario ใกล้เคียงกัน
จะได้รู้ว่า Migration ดีขึ้นหรือแย่ลงตรงไหนจริง
59. Resmon และ Profiler ควรใช้ตั้งแต่ Test
อย่ารอ Production Lag ก่อนค่อยใช้
Developer ควรตรวจ
Resource CPU
Resource Memory
Spike
Hitch
NUI
ตั้งแต่ Enhanced Test Server
Resource ที่มีปัญหาควรถูกแก้ก่อนเพิ่ม Player
60. Database Persistence ต้องทดสอบ
ทำ Test เช่น
Login
ซื้อ Item
ฝากเงิน
เปลี่ยน Job Data
เก็บรถ
Logout
Restart Server
Login ใหม่
แล้วตรวจว่าข้อมูลยังอยู่ครบ
นี่เป็นหนึ่งใน Test ที่สำคัญที่สุดสำหรับ RP Server
61. Character Migration ต้องทดสอบหลาย Account
อย่าทดสอบ Character Admin เพียงคนเดียว
ควรมี Test Case เช่น
Character ใหม่
Character เก่า
Character มีบ้าน
Character มีรถหลายคัน
Character มี Inventory เยอะ
Character มี Job/Gang
เพราะ Data Structure แต่ละคนอาจต่างกัน
62. Vehicle Data ต้องแยกจาก Vehicle Asset
ตัวอย่าง Player มีรถ
customcar01
ใน Database
Database Record อาจ Migration ได้ครบ
แต่ถ้า Model customcar01 ยังไม่ได้ Convert รถก็อาจ Spawn ไม่ได้
ดังนั้นต้องตรวจทั้ง
Database Data + Enhanced Asset
พร้อมกัน
63. Clothing เป็นอีกจุดที่ควรทดสอบหนัก
Character เดิมอาจเก็บ
Drawable
Texture
Component
Prop
เป็น Index
หลัง Enhanced Migration ต้องตรวจว่า Outfit เดิมยังแสดงถูกต้องหรือไม่
อย่ารอผู้เล่นหลายพันคน Login แล้วค่อย发现ว่าเสื้อผ้าผิด Index
64. Phone ต้องทดสอบร่วมกับ Voice
Phone ไม่ได้มีเพียง UI
อาจเชื่อม
Voice Call
Contact
Message
Camera
GPS
Database
Notification
Voice Stack ใหม่ของ Enhanced ทำให้ Phone เป็น Resource ที่ต้องทดสอบละเอียดเป็นพิเศษ
65. Admin Script ต้องทดสอบ
ตรวจ
Kick
Ban
Spectate
Teleport
Bring
Freeze
Revive
Entity Delete
Player List
โดยเฉพาะ Script ที่อาศัย Player Scope และ Entity Behavior แบบ Legacy
Admin Tool ที่ผิดอาจสร้างปัญหาใหญ่ใน Production
66. Security Script ต้องทดสอบด้วย
Anti-cheat และ Server Protection บางระบบอาจพึ่ง
Network Behavior
Entity Creation
Event
Identifier
Connection Flow
ที่เปลี่ยนใน Enhanced
ควรตรวจ Version จากผู้พัฒนา Anti-cheat และทดสอบก่อน
อย่าปิด Anti-cheat แล้วเปิด Production เพียงเพื่อให้ Enhanced เข้าได้
67. Firewall และ DDoS Protection ต้องทดสอบจาก Internet จริง
Localhost ไม่พอ
ให้ Tester ภายนอก Network เข้า Server
ทดสอบ
Login
Reconnect
Queue
Deferral
High Ping
Multiple Clients
ถ้าเกิด WebSocket Handshake Error ให้ตรวจ Protection Layer
68. ต้องมี Test Server กี่คน?
ช่วงแรกอาจเริ่ม
2–5 คน
เพื่อ Function Test
จากนั้นเพิ่มเป็น
10–20 คน
เพื่อ Integration Test
แล้วทำ Stress Test ตามจำนวนที่เหมาะกับ Server
อย่ากระโดดจาก Developer 2 คนไป Production 300 คนโดยไม่มี Load Test
69. ทำ Checklist แบบ Pass/Fail
ตัวอย่าง
| ระบบ | สถานะ |
|---|---|
| Framework | ✅ |
| Database | ✅ |
| Inventory | ✅ |
| Phone | ⚠️ |
| Voice | ✅ |
| Map Pack 1 | ✅ |
| MLO Pack 2 | ❌ |
| Vehicle Pack | 🧪 |
| Admin | ✅ |
ใช้ Checklist จริงจะช่วย Team เห็นความพร้อมง่ายกว่าอาศัยความจำ
70. Resource ควรแบ่งสถานะ
แนะนำ
✅ Compatible
⚠️ ต้องแก้
❌ ใช้ไม่ได้
🔄 รอผู้พัฒนา
🧪 กำลังทดสอบ
Resource ที่เป็น ❌ ไม่ควรแอบเปิด Productionแล้วหวังว่าจะไม่มีผู้เล่นเจอ
71. ก่อน Cutover ต้อง Freeze การเปลี่ยนแปลง
ช่วงก่อน Migration จริงควรหยุด Update Script ใหม่ชั่วคราว
เรียกว่า Change Freeze
เพราะถ้ายังเพิ่ม
Phone ใหม่
Map ใหม่
Inventory Update
Framework Update
พร้อมกับ Migration คุณจะไม่รู้ว่า Bug มาจากอะไร
ลดจำนวนตัวแปรให้ต่ำที่สุด
72. วิธี Cutover Database
แนวทางทั่วไปคือ
ประกาศ Maintenance
ปิด Legacy Server
Backup Database รอบสุดท้าย
Migration/Restore ไป Production Target
ตรวจ Schema
เปิด Enhanced Server
Staff Login ทดสอบ
เปิดผู้เล่น
อย่าให้ Legacy และ Enhanced เขียน Character Database เดียวกันพร้อมกันโดยไม่มี Architectureรองรับ
73. ทำไมไม่ควรเปิด Legacy และ Enhanced ใช้ Database เดียวพร้อมกัน?
เพราะ Player สามารถเกิด
Duplicate Login
Inventory Conflict
Money Conflict
Vehicle State Conflict
Housing Conflict
Session Conflict
ได้
หากต้องการ Parallel Environment ให้ใช้ Database แยก
จนกว่าจะมีระบบ Sync ที่ออกแบบเฉพาะ
74. Rollback Plan ต้องเตรียมก่อนเปิดจริง
ก่อน Cutover ต้องตอบได้ว่า
ถ้า Enhanced มีปัญหาหนัก เรากลับ Legacy อย่างไร?
ควรเก็บ
Legacy Binary
Legacy Resources
Legacy Config
Database Backup ก่อน Migration
DNS/IP Configuration
Join Announcement เดิม
ไว้
อย่าคิดเรื่อง Rollback หลัง Server พังแล้ว
75. กำหนดเงื่อนไข Rollback ไว้ล่วงหน้า
ตัวอย่าง
Rollback หาก
ผู้เล่นส่วนใหญ่ Connect ไม่ได้
Character Data เสีย
Inventory Save ไม่ได้
Server Crash ต่อเนื่อง
Voice ใช้งานไม่ได้หนัก
Asset ทำ Client Crash จำนวนมาก
การกำหนดเกณฑ์ก่อนช่วยให้ทีมไม่ลังเลตอนเกิดเหตุจริง
76. อย่าลบ Legacy หลัง Enhanced เปิดวันแรก
ควรเก็บ Legacy Environment ไว้อีกระยะหนึ่ง
จนยืนยันว่า
Database เสถียร
Resource หลักผ่าน
Player เข้าได้
Crash อยู่ในระดับรับได้
Backup Enhanced ทำงาน
แล้วจึงค่อยตัดสินใจ Archive Legacy
77. Enhanced ยังอยู่ใน Early Access
FiveM for GTAV Enhanced ขณะนี้ยังอยู่ในช่วง Early Access
Cfx.re ยังคงทำ Stress Test และปรับ Platform ต่อเนื่อง
ดังนั้น Server Production ขนาดใหญ่ควร Migration เมื่อ Dependency สำคัญพร้อม ไม่จำเป็นต้องรีบเพียงเพราะ Enhanced เปิดให้ใช้งานแล้ว
ความเสถียรของ Community สำคัญกว่าความเร็วในการย้าย
78. Server แบบไหนควรย้ายก่อน?
เหมาะกับ
Server Development
Server ใหม่
Server Asset ไม่เยอะ
Script ส่วนใหญ่พัฒนาเอง
ทีม Developerพร้อม
มี Staging
มี Backup
มี Tester
เพราะสามารถควบคุม Dependency ได้ง่าย
79. Server แบบไหนควรรอบคอบเป็นพิเศษ?
เช่น Server ที่มี
Resource หลายร้อยตัว
Paid Escrow Resource จำนวนมาก
Custom MLO จำนวนมาก
Vehicle หลายพันคัน
Player Database ใหญ่
Framework ดัดแปลงหนัก
Anti-cheat เฉพาะ
Player จำนวนมาก
Server ประเภทนี้ควร Migration แบบ Phase มากกว่าการย้ายครั้งเดียว
80. Migration Checklist แบบสั้น
ก่อนเปิด Production ให้ครบอย่างน้อย
Platform
Cfx Server Enhanced ✅
Artifact Supported ✅
txAdmin ✅
Network
Port ✅
Firewall ✅
WebSocket/Handshake ✅
DDoS Protection ✅
Data
Database Backup ✅
Database Clone Test ✅
KVP Migration ✅
Framework
Core ✅
Character ✅
Inventory ✅
Jobs ✅
Communication
Voice ✅
Radio ✅
Phone ✅
Assets
Maps ✅
MLO ✅
Vehicles ✅
Clothing ✅
Operations
Admin ✅
Anti-cheat ✅
Backup ✅
Rollback ✅
Load Test ✅
ถ้ายังมีระบบ Critical เป็น ❌ ไม่ควร Cutover
81. สิ่งที่ไม่ควรทำตอนย้าย Legacy ไป Enhanced
หลีกเลี่ยง
Copy Cfx Server ทับ FXServer
ไม่มี Backup
ใช้ Production Database ทดสอบ
เปิด Resource ทั้งหมดครั้งเดียว
Copy Config เดิมโดยไม่อ่าน Breaking Changes
ไม่ Migration KVP
ไม่ตรวจ OneSync
ไม่ตรวจ State Bags
ไม่ทดสอบ Voice
Copy Asset Legacy ตรง ๆ ทั้งหมด
Bypass Asset Escrow
ไม่มี Rollback Plan
ข้อผิดพลาดเหล่านี้ทำให้ Migration ที่ควรควบคุมได้กลายเป็น Downtime ขนาดใหญ่
82. คำถามที่พบบ่อย
ย้าย FiveM Legacy ไป Enhanced ต้องสร้าง Server ใหม่หมดไหม?
ไม่ต้อง Framework, Script และ Database จำนวนมากสามารถ Migration ได้ แต่ต้องใช้ Cfx Server Enhanced และทดสอบ Compatibility
ใช้ server.cfg เดิมได้ไหม?
ใช้เป็นฐานได้ แต่ต้องตรวจ Breaking Changes และ Convar ที่ถูกถอดหรือเปลี่ยน
Database เดิมใช้ได้ไหม?
ได้ถ้า Framework/Schema รองรับ แต่ควรทดสอบกับ Clone ก่อน
KVP ต้องย้ายไหม?
ต้องตรวจและ Migration เพราะ Enhanced มี Breaking Change ด้าน KVP Database Files
ESX/QBCore/Qbox ใช้ต่อได้ไหม?
มีโอกาสสูง แต่ต้องทดสอบ Resource และ Dependency ทั้ง Stack
Map/MLO/รถต้องทำอย่างไร?
ตรวจและแปลง Legacy Asset ด้วย Alchemist ตามความจำเป็น
Alchemist แก้ Script ให้ด้วยไหม?
ไม่ มัน Convert Asset และ Copy Script/Config รอบข้างโดยไม่แก้เนื้อหา Script
C# เดิมใช้ได้ไหม?
Enhanced เปลี่ยนไปใช้ .NET 10 แต่ยังมี Compatibility API สำหรับ Resource เดิม ต้องทดสอบ Dependency
Voice เดิมใช้ได้ไหม?
Enhanced มี Voice Stack ใหม่และ Compatibility กับ Native เดิมบางส่วน แต่ต้องทดสอบระบบ Voice จริง
Asset Escrow ใช้ได้หรือยัง?
ตามเอกสาร Enhanced ปัจจุบันยังระบุ Asset Escrow ว่าไม่ได้ Implement จึงต้องตรวจ Paid Resource ก่อน Migration
ต้องลบ Legacy เมื่อ Enhanced เปิดได้ไหม?
ไม่ควร ควรเก็บไว้เพื่อ Rollback จน Enhanced Production เสถียร
83. สรุปวิธีย้าย FiveM Server จาก Legacy ไป Enhanced
วิธีที่ปลอดภัยที่สุดในการ ย้าย FiveM Server จาก Legacy ไป Enhanced คืออย่ามองว่าเป็นการ Update FXServer ธรรมดา
ให้ทำเป็น Migration Project
เริ่มจาก
Backup → Cfx Server Enhanced แยก Folder → Clone Database → Config Review → Framework → Script → Voice → Asset Conversion → Network → Load Test → Cutover → Rollback Ready
Enhanced ยังคงรักษา Backward Compatibility กับ Script Lua, JavaScript และ C# จำนวนมาก จึงไม่จำเป็นต้องสร้าง Roleplay Serverใหม่ทั้งหมด
แต่ Breaking Changes ที่ต้องตรวจจริงมีหลายจุด เช่น
OneSync Non-Big Mode ถูกถอด
P2P Sync เปลี่ยนเป็น Client-server
KVP Files ต้อง Migration
Mono เปลี่ยนเป็น .NET
Pure Mode เปิดตลอด
Endpoint รองรับเพียงชุดเดียว
Developer Mode เปลี่ยน
State Bags เปลี่ยน Behavior
sv_syncTickRateเข้ามาแทนแนวทางเก่าบางส่วนAsset Legacy ต้องตรวจและแปลง
สำหรับ Custom Asset ควรใช้ Alchemist เพราะ Cfx.re ออกแบบมาให้สามารถ Convert Legacy 3D Asset ได้ถึงระดับเลือก resources Folder แล้วสร้าง Enhanced-compatible Output Folder โดยยัง Copy Script และ Configuration รอบข้างไปให้ แต่จะไม่แก้ Script แทน Developer
อีกจุดสำคัญคือ Enhanced ยังอยู่ใน Early Access และเอกสาร Cfx.re ปัจจุบันยังระบุ Asset Escrow เป็น Feature ที่ไม่ได้ Implement ดังนั้น Server ที่พึ่ง Paid/Escrow Resource จำนวนมากต้องตรวจ Dependency ก่อนตัด Legacy
แนวทางที่ comsiam แนะนำสำหรับ Server ที่มีผู้เล่นจริงคือ อย่าปิด Legacy จน Enhanced ผ่าน Functional Test, Database Test, Asset Test, Network Test และ Load Test พร้อมมี Rollback Plan
Migration ที่ดีไม่ใช่ Server ที่ “เปิดติด” แต่คือ Server ที่ผู้เล่นเดิม Login กลับมาแล้ว Character, เงิน, Item, รถ, บ้าน, Voice, Map และระบบทั้งหมดทำงานต่อได้อย่างถูกต้อง โดยสามารถย้อนกลับ Legacy ได้ทันทีหากเกิดปัญหาสำคัญ
Comments
Post a Comment