ESX กับ QBCore ต่างกันอย่างไร เลือก Framework ไหนดีสำหรับ FiveM
ESX และ QBCore คือสอง Framework สำหรับสร้าง FiveM Roleplay Server ที่ได้รับความนิยมมายาวนาน ทั้งคู่ช่วยจัดการระบบพื้นฐาน เช่น Character, เงิน, Job, Player Data และการเชื่อม Resources ต่าง ๆ เข้าด้วยกัน แต่ Architecture, API, Database Structure และ Ecosystem ของ Script แตกต่างกัน
ถ้าสรุปสั้นที่สุด
ESX
→ es_extended
→ xPlayer
→ Accounts
→ Jobs / Job Grades
→ ESX ecosystem
QBCore
→ qb-core
→ Player / PlayerData
→ Money
→ Jobs + Gangs
→ Metadata
→ qb-* ecosystem
ไม่มีคำตอบว่า ESX หรือ QBCore “ดีกว่าเสมอ” เพราะ Framework ที่ดีที่สุดคือ Framework ที่เหมาะกับ Resource Stack และทีม Developer ของ Server นั้น
① ESX คืออะไร
ESX เป็น FiveM Roleplay Framework ที่ใช้ Core หลักคือ
es_extended
Player ฝั่ง Server มักถูกจัดการผ่าน Player Object ที่เรียกว่า
xPlayer
Core จัดการข้อมูล เช่น
Identifier
Accounts
Job
Job Grade
Group
Inventory
Metadata
Position
แล้วเปิด APIs ให้ Resources อื่นนำไปใช้
ตัวอย่าง
es_extended
↓
Police
EMS
Mechanic
Society
Billing
Garage
Custom Scripts
② QBCore คืออะไร
QBCore เป็น FiveM Roleplay Framework ที่ใช้
qb-core
เป็น Core
ข้อมูล Character ถูกจัดไว้ใน
PlayerData
เช่น
citizenid
charinfo
money
job
gang
metadata
position
จากนั้น Resources อื่นสามารถใช้ QBCore APIs เพื่อเข้าถึงข้อมูลเหล่านี้
ตัวอย่าง
qb-core
↓
qb-policejob
qb-garages
qb-banking
qb-inventory
Custom QB Scripts
③ ทั้งสองตัวเป็น FiveM Framework เหมือนกันหรือไม่
ใช่
Cfx.re ปัจจุบันยังจัดทั้ง
ESX
QBCore
ไว้ในกลุ่ม Lua Framework สำหรับ FiveM
Framework มีหน้าที่สร้างโครงสร้างพื้นฐานให้ Developer ไม่ต้องเขียนระบบ Character, Economy และ Player Management ใหม่ทั้งหมด
ดังนั้นทั้ง ESX และ QBCore สามารถใช้สร้าง Serious RP หรือ Economy RP Server ได้
④ Core หลักต่างกันอย่างไร
ESX
es_extended
QBCore
qb-core
นี่เป็น Resource ที่ Scripts จำนวนมากพึ่ง
ดังนั้น ESX Script ที่เขียนเฉพาะ Framework จะเรียก API จาก es_extended
ส่วน QBCore Script จะเรียก API จาก qb-core
การเปลี่ยนชื่อ Folder ไม่ได้ทำให้ Script ใช้ข้าม Framework ได้
⑤ Player Object ต่างกันอย่างไร
ESX ใช้แนวคิด
xPlayer
เช่น Server-side อาจหา Player ผ่าน
local xPlayer = ESX.GetPlayerFromId(source)
จากนั้นใช้งาน
xPlayer.getJob()
xPlayer.getAccounts()
xPlayer.getMeta()
ตาม API ที่เกี่ยวข้อง
QBCore ใช้ Player Object ที่มี
Player.PlayerData
Player.Functions
เช่น
local Player = QBCore.Functions.GetPlayer(source)
แล้วอ่าน
Player.PlayerData.job
หรือใช้ Player Functions ต่อ
⑥ Identifier ของ Character แตกต่างกัน
ESX Current Core ใช้ Identifier เป็นแกนหลักในการบันทึก Player
Database users มี Primary Key
identifier
ขณะที่ QBCore ใช้
citizenid
เป็น Identifier สำคัญของ Character
ตัวอย่าง QBCore Database
players
└── citizenid
ดังนั้น Database Architecture ของสอง Framework ไม่เหมือนกัน
⑦ QBCore citizenid คืออะไร
QBCore Documentation ระบุว่า citizenid เป็น Unique Identifier ของ Character
อย่าสับสนกับ
source
เพราะ source เป็น Player Server ID ชั่วคราวของ Session
ตัวอย่าง
เข้าเกมครั้งแรก
source = 25
เข้าใหม่
source = 61
แต่
citizenid
ของ Character ยังสามารถเป็นตัวเดิม
⑧ ESX เก็บ Player Data อย่างไร
Current ESX Database มี Table
users
พร้อมข้อมูลพื้นฐาน เช่น
identifier
accounts
group
inventory
job
job_grade
loadout
metadata
position
เมื่อ Player เข้า Server ESX จะโหลดข้อมูลจาก Database แล้วสร้าง xPlayer Object
Flow คือ
Database
↓
ESX
↓
xPlayer
↓
Resources
⑨ QBCore เก็บ Player Data อย่างไร
Current QBCore มี Table
players
ที่มีข้อมูล เช่น
citizenid
cid
license
name
money
charinfo
job
gang
position
metadata
inventory
PlayerData จะถูกโหลดเข้ามาให้ Framework ใช้ขณะ Character Online
Flow คือ
Database
↓
qb-core
↓
PlayerData
↓
Resources
⑩ ระบบเงินต่างกันอย่างไร
ESX ใช้แนวคิด
Accounts
เช่น
money
bank
หรือ Accounts ตาม Configuration
ข้อมูล Accounts ถูกบันทึกอยู่ใน Player Data และ Database
QBCore ใช้
PlayerData.money
ซึ่ง Default Structure สามารถมี
cash
bank
และ Money Types อื่นตาม Configuration
แนวคิดใกล้เคียงกัน แต่ APIs และ Data Structure ต่างกัน
⑪ ตัวอย่าง ESX Money
Resource ESX มักทำงานผ่าน xPlayer
แนวคิด
Player ซื้อสินค้า
↓
Server
↓
หา xPlayer
↓
ตรวจ Account
↓
หักเงิน
ไม่ควร Update users.accounts โดยตรงทุกครั้งถ้า Framework API รองรับอยู่แล้ว
⑫ ตัวอย่าง QBCore Money
QBCore Resource มักทำ
Player
↓
Player.Functions
↓
AddMoney / RemoveMoney
ตาม API
แนวคิดเหมือน ESX คือให้ Framework จัดการ State และ Persistence
ไม่ควรให้ Custom Shop เขียน Database โดยตรงโดยไม่มีเหตุผล
⑬ Job System ของ ESX
ESX ใช้ Tables อย่าง
jobs
job_grades
ตัวอย่าง
police
├── recruit
├── officer
├── sergeant
└── boss
Player มี
job
job_grade
แล้ว Resource สามารถตรวจ Job/Grade ก่อนอนุญาต Feature
⑭ Job System ของ QBCore
QBCore มี Job อยู่ใน PlayerData
ข้อมูล Job มีโครงสร้างประเภท
name
label
payment
onduty
isboss
grade
จึงมีแนวคิด Duty อยู่ใน Job Data อย่างชัดเจน
ตัวอย่าง
police
+
On Duty
หรือ
police
+
Off Duty
⑮ QBCore มี Gang ใน Core
จุดหนึ่งที่เห็นชัดใน QBCore PlayerData คือมี
gang
แยกออกจาก
job
ทำให้ Player สามารถเป็น
Job
→ mechanic
Gang
→ ballas
โดยข้อมูลทั้งสองมี Context แยกกัน
นี่เป็นหนึ่งในรูปแบบ Data Model ที่หลาย QB Scripts ใช้โดยตรง
⑯ ESX ทำ Gang ได้หรือไม่
ทำได้ แต่ไม่ได้หมายความว่า Core Data Model จะเหมือน QBCore
Server ESX สามารถสร้างระบบ
Gang
Organization
Society
Faction
ผ่าน Resources และ Database Architecture ที่เลือก
ดังนั้นอย่าเอา QBCore Gang Script มาใช้บน ESX แล้วคาดว่าจะมี PlayerData.gang แบบเดียวกัน
ต้องมี Framework Bridge หรือ Rewrite Integration
⑰ Metadata ต่างกันอย่างไร
ทั้งสอง Framework ปัจจุบันรองรับแนวคิด Metadata
ESX Current Core มี
metadata
อยู่ใน users และ xPlayer
QBCore มี
PlayerData.metadata
ซึ่งใช้กับข้อมูลต่าง ๆ เช่น
hunger
thirst
stress
isdead
และ State อื่นตาม Resource Stack
ดังนั้นทั้งสองสามารถเก็บ Extended Character State ได้ แต่ API ต่างกัน
⑱ Character Information ต่างกันอย่างไร
QBCore มี Structure
charinfo
ที่ประกอบด้วย Character Information
เช่น
firstname
lastname
birthdate
gender
nationality
ตาม Current Configuration
ESX มักทำ Character Identity ผ่าน Core + Resource อย่าง
esx_identity
และ Fields ที่เพิ่มใน Player Database
ผลลัพธ์ที่ผู้เล่นเห็นอาจคล้ายกัน แต่ออกแบบคนละแบบ
⑲ Multicharacter รองรับไหม
ทั้งสอง Frameworkสามารถทำ Multicharacter ได้
ESX ecosystem มี
esx_multicharacter
QBCore ecosystem มี
qb-multicharacter
ตาม Stack ที่ใช้งาน
ก่อนติดตั้ง Character Selector Third-party ต้องตรวจว่า Resource จะ Replace ระบบเดิมอย่างไร
ไม่ควรเปิด Multicharacter Systems สองตัวซ้อนกัน
⑳ Inventory ต่างกันอย่างไร
ESX มี Inventory Data ใน Core และรองรับ Custom Inventory Architecture
QBCore ecosystem มีความสัมพันธ์กับ
qb-inventory
โดย Current QBCore Player Save Code ยังตรวจ Resource qb-inventory เพื่อ Save Inventory เมื่อมีใช้งานอยู่
แต่ทั้ง ESX และ QBCore สามารถใช้ Inventory ภายนอกได้หากมี Integration ที่รองรับ
เช่นบาง Server ใช้
ox_inventory
㉑ Framework กับ Inventory ไม่ใช่สิ่งเดียวกัน
ต้องจำว่า
ESX
≠
Inventory
และ
QBCore
≠
Inventory
Server สามารถมี
ESX
+
Inventory A
หรือ
QBCore
+
Inventory B
ได้
แต่ Scripts ทุกตัวต้องรองรับ Stack ที่เลือก
คำว่า
ESX Supported
ไม่ได้แปลว่า Inventory ทุกตัว Supported
㉒ Script Ecosystem ของ ESX
ESX มีประวัติยาวนานมาก จึงมี Resources จำนวนมหาศาล
เช่น
Jobs
Police
EMS
Businesses
Garage
Vehicle Shop
Billing
Society
Phone
Housing
ทั้ง Free และ Paid
ข้อดีคือหา Script ได้ง่าย
ข้อเสียคือ Scripts มีหลาย Generation มาก
อาจเจอ
Current ESX Legacy
Old ESX
EssentialMode-era script
mysql-async script
Old Shared Object
ปะปนกัน
㉓ Script Ecosystem ของ QBCore
QBCore มี Ecosystem qb-* ขนาดใหญ่
ตัวอย่าง
qb-policejob
qb-ambulancejob
qb-inventory
qb-target
qb-garages
qb-banking
และ Third-party Marketplace จำนวนมากรองรับ QBCore
โครงสร้าง QB ecosystem ค่อนข้างเป็นที่รู้จักใน Community
แต่ก็ยังมีปัญหา Version Compatibility เช่น Framework อื่น
㉔ ESX Script ใช้บน QBCore ได้ไหม
ถ้าเป็น ESX-only
ส่วนใหญ่ไม่ได้โดยตรง
เพราะอาจเรียก
ESX.GetPlayerFromId
xPlayer
ESX callbacks
ESX events
QBCore ไม่มี API ชุดเดียวกัน
ต้องใช้
Framework Bridge
หรือ Script ที่รองรับหลาย Framework
㉕ QBCore Script ใช้บน ESX ได้ไหม
หลักเดียวกัน
Resource ที่เรียก
exports['qb-core']:GetCoreObject()
และใช้
QBCore.Functions
QBCore.Shared
Player.PlayerData
ไม่สามารถใช้กับ ESX แบบตรง ๆ
ต้องมี
ESX Bridge
หรือ Framework Adapter
㉖ Multi-framework Script คืออะไร
Scripts สมัยใหม่จำนวนมากแยก Framework Integration ออกจาก Core Logic
เช่น
bridge/
├── esx.lua
├── qb.lua
└── qbox.lua
หรือ Config
Config.Framework = 'esx'
กับ
Config.Framework = 'qb'
Architecture นี้ดีต่อ Server Owner มาก เพราะ Framework Migration ง่ายกว่า Resource ที่ Hardcode Framework เต็ม Source
㉗ ก่อนซื้อ Script ควรดู Framework Support
อย่าดูเพียง Feature
ควรตรวจ
ESX?
QBCore?
Qbox?
Inventory?
Target?
Database?
ox_lib?
Voice?
เพราะ Script อาจรองรับ
ESX + ox_inventory
แต่ไม่รองรับ Default Inventory อีกตัว
หรือรองรับ
QBCore + qb-target
แต่ไม่รองรับ Target ที่ Server ใช้
㉘ Shared Object ต่างกันอย่างไร
ESX Current Integration สามารถใช้
ESX = exports["es_extended"]:getSharedObject()
หรือ Imports ตาม Resource Architecture
QBCore ใช้
local QBCore = exports['qb-core']:GetCoreObject()
นี่คือหนึ่งในความแตกต่างที่เห็นทันทีเมื่อเปิด Source
ถ้า Script เรียก
es_extended
ก็มีแนวโน้มเป็น ESX integration
ถ้าเรียก
qb-core
ก็เป็น QB integration
㉙ Callback ต่างกัน
ESX มี Callback System เช่น
ESX.RegisterServerCallback
QBCore มีระบบอย่าง
QBCore.Functions.CreateCallback
QBCore.Functions.TriggerCallback
แนวคิดเหมือนกันคือ Request → Response
แต่ Syntax/API ต่างกัน
ดังนั้น Callback-based Resource ต้องมี Framework Bridge หากต้องการใช้ข้าม Framework
㉚ Events ต่างกัน
ทั้งสองสร้างอยู่บน FiveM Event System เดียวกัน
แต่ Framework-specific Event Names ต่างกัน
ตัวอย่าง ESX อาจมี
esx:playerLoaded
esx:setJob
ขณะที่ QBCore มี Player Lifecycle/Job Events ของตัวเอง
Custom Resource ที่ Hardcode Events จึงผูกกับ Framework
นี่เป็นอีกเหตุผลที่ Multi-framework Resources มักสร้าง Bridge
㉛ Database Schema ต่างกันมากไหม
ค่อนข้างมาก
ESX
Core Player Table
users
มี
identifier
accounts
job
job_grade
inventory
metadata
position
QBCore
Core Player Table
players
มี
citizenid
cid
license
money
charinfo
job
gang
position
metadata
ดังนั้นการย้าย ESX → QBCore ไม่สามารถ Copy Table แล้วเปลี่ยนชื่ออย่างเดียวได้
㉜ Migration ESX ↔ QBCore ยากไหม
สำหรับ Server เล็กอาจทำได้ไม่ยาก
แต่ Production Server ใหญ่สามารถเป็น Project ใหญ่ เพราะต้อง Migration
Characters
Identifiers
Money
Jobs
Inventory
Vehicles
Phone
Housing
Businesses
Metadata
และ Custom Scripts
ยิ่ง Resource ผูก Framework Core โดยตรงมาก Migration ยิ่งยาก
㉝ Database Wrapper เป็นตัวตัดสิน Framework หรือไม่
ไม่ใช่
Current ESX Legacy ใช้
oxmysql
และ Current QBCore ก็ใช้ oxmysql ใน Core Stack
ดังนั้น
ใช้ oxmysql เหมือนกัน
ไม่ได้หมายความว่า Framework Compatible กัน
Database Schema และ Framework API ยังแตกต่างกันทั้งหมด
㉞ ESX ใช้ OneSync หรือไม่
Current ESX Legacy ต้องการ OneSync สำหรับ Framework รุ่นปัจจุบัน
Core Current Source ยังตรวจ OneSync State ระหว่าง Player Connection
ดังนั้นอย่าใช้ Tutorial ESX รุ่นเก่ามาตัดสิน Architecture ปัจจุบัน
Framework มีการพัฒนาต่อเนื่อง
㉟ QBCore ใช้ OneSync ได้ไหม
ได้ และ FiveM Server ปัจจุบันโดยทั่วไปใช้ OneSync สำหรับ Server Architecture สมัยใหม่
แต่คำถามว่า Framework ไหน “รองรับคนได้เยอะกว่า” ไม่ควรตัดสินจาก OneSync อย่างเดียว
ต้องดู Resource Stack ทั้ง Server
㊱ ESX หรือ QBCore ตัวไหนเบากว่า
ไม่ควรตอบว่า Framework หนึ่งเบากว่าเสมอ
Server Performance ขึ้นกับ
Phone
Housing
Inventory
Jobs
Maps
Vehicles
Database Queries
Loops
Entities
Player Count
มากกว่า Core เพียงตัวเดียว
ESX Server ที่ Optimize ดีสามารถเบากว่า QB Server ที่มี Scripts หนัก
และกลับกันได้
ควรใช้
Profiler
Resmon
Database Metrics
วัดจริง
㊲ จำนวน Script เยอะทำให้ Framework หนักหรือไม่
จำนวน Resource ไม่ได้บอก Performance โดยตรง
ตัวอย่าง
100 Resources ที่ Idle ดี
อาจเบากว่า
20 Resources ที่ Loop หนัก
Framework Choice จึงไม่ควรตัดสินจากจำนวน Folder ใน resources
ต้องวัด CPU, Server Tick และ Database Load
㊳ ESX หรือ QBCore ตัวไหนปลอดภัยกว่า
ไม่มี Framework ไหนทำให้ Custom Script ปลอดภัยโดยอัตโนมัติ
ตัวอย่างที่ไม่ปลอดภัยเหมือนกันทั้งสอง
Client
↓
ส่ง reward = 1,000,000
↓
Server เชื่อ
↓
เพิ่มเงิน
Server ต้อง Validate
Player
Job
Position
State
Permission
Cooldown
Reward
ไม่ว่าจะใช้ ESX หรือ QBCore
㊴ Security ขึ้นกับ Resource มากกว่า Framework
สมมติ Core เขียนดีมาก
แต่ Custom Job มี
RegisterNetEvent('job:reward', function(amount)
-- เพิ่มเงินตาม amount จาก client
end)
Server ก็ยังมีช่องโหว่
ดังนั้นตอนเลือก Paid Script ควรดู
Server-side Validation
Source Quality
Update Frequency
Developer Reputation
ด้วย
ไม่ใช่ดูเพียงโลโก้ ESX/QBCore
㊵ ESX เหมาะกับ Server แบบไหน
ESX เหมาะมากถ้า
มี ESX Scripts เดิมจำนวนมาก
ทีมถนัด ESX
ต้องการ ESX ecosystem
สร้าง Economy RP
ใช้ ESX Legacy อยู่แล้ว
โดยเฉพาะ Production Server ที่ทำงานดีอยู่แล้ว
ไม่ควรย้ายเพียงเพราะ Framework อื่นกำลังเป็นกระแส
㊶ QBCore เหมาะกับ Server แบบไหน
QBCore เหมาะถ้า
ทีมถนัด QB APIs
ต้องการ qb-* ecosystem
มี QBCore Paid Scripts
ต้องการ Job + Gang Data Model
สร้าง Economy/Serious RP
และมี Developers ที่คุ้นกับ
PlayerData
QBCore.Functions
QBCore.Shared
อยู่แล้ว
㊷ มือใหม่ควรเลือก ESX หรือ QBCore
ทั้งสองเรียนได้
ESX
ข้อดีคือมีประวัติยาวและ Resources มาก
แต่ต้องระวัง Tutorial เก่าปะปนกับ Current ESX Legacy
QBCore
มี Documentation ของ PlayerData/Core Object ค่อนข้างชัด และมี qb-* ecosystem จำนวนมาก
ดังนั้นมือใหม่ควรเลือก Framework หนึ่งตัวแล้วเรียนให้ลึก
ไม่ควร
เปิด ESX วันนี้
↓
เปลี่ยน QBCore พรุ่งนี้
↓
เปลี่ยน Qbox สัปดาห์หน้า
เพราะจะไม่ได้เข้าใจ Framework ใดจริง
㊸ ESX มี Tutorial มากกว่าไหม
เพราะ ESX มีอายุยาวนาน จึงมี Tutorial จำนวนมากมาก
แต่ข้อเสียคือบางอันอาจสอน
EssentialMode
mysql-async
Old Shared Object
Old Manifest
ซึ่งไม่ตรง Current ESX Legacy
ดังนั้นจำนวน Tutorial เยอะไม่ได้แปลว่าทุก Tutorial ควรใช้
ต้องดูวันที่และ Framework Version
㊹ QBCore Tutorial ต้องระวัง Version ไหม
ต้องระวังเช่นเดียวกัน
QBCore ก็มีการ Update
APIs, PlayerData, Inventory และ Resources ใน Ecosystem สามารถเปลี่ยนได้
ดังนั้นเมื่อ Script Error ให้ดู
Current Documentation
Current Core
Script Version
ก่อน Copy Fix จากโพสต์เก่า
㊺ ESX หรือ QBCore หา Paid Script ง่ายกว่า
ทั้งสอง Framework มี Marketplace Support สูงมาก
Commercial Resources จำนวนมากเขียนว่า
ESX
QBCore
รองรับพร้อมกัน
ดังนั้นปัจจุบันปัจจัยสำคัญกว่าคือ
Inventory
Target
Phone
Housing
Bridge Quality
เพราะ Framework Support อย่างเดียวอาจไม่เพียงพอ
㊻ Inventory ควรเลือกก่อน Framework หรือไม่
ควรพิจารณาพร้อมกัน
ตัวอย่าง Resource Stack
Framework
↓
Inventory
↓
Jobs
↓
Shops
↓
Crafting
↓
Phone
ถ้าคุณเลือก Framework ก่อน แต่ Paid Scripts สำคัญทั้งหมดต้องใช้ Inventory คนละตัว อาจต้องแก้ Integration จำนวนมาก
ดังนั้น Server ใหม่ควรออกแบบ Stack เป็นชุด
㊼ Phone สำคัญต่อการเลือก Framework
Phone เป็น Resource ใหญ่ที่เชื่อม
Character
Money
Jobs
Vehicles
Housing
Voice
Database
ดังนั้นก่อนเลือก ESX หรือ QBCore ควรดู Phone ที่ต้องการด้วย
ถ้า Phone มี Native Support Framework หนึ่งดีกว่า อาจลดงาน Integration ได้มาก
㊽ Housing ก็เช่นเดียวกัน
Housing เชื่อมกับ
Character ID
Vehicles
Garage
Keys
Inventory
Furniture
Database
ถ้า Housing Resource เป็นหัวใจ Server ควรตรวจ Framework/Inventory Compatibility ก่อนกำหนด Core
อย่าเลือก Framework แล้วพบภายหลังว่า Housing หลักรองรับไม่ครบ
㊾ Jobs จำนวนมากควรเลือกตัวไหน
ทั้ง ESX และ QBCoreรองรับ Job Server ได้ดี
ถ้ามี ESX Jobs เดิม
เลือก ESX ต่อ
อาจคุ้มกว่า
ถ้ามี QB Jobs เดิม
QBCore
อาจง่ายกว่า
การ Convert Job Logic หลายสิบ Resources เพียงเพื่อเปลี่ยน Framework มักไม่มีประโยชน์ถ้า Core เดิมยังตอบโจทย์
㊿ Gang RP ล่ะ
QBCore มี Gang อยู่ใน PlayerData โดยตรง จึงเหมาะกับ Scripts ใน QB ecosystem ที่ออกแบบรอบ
job
+
gang
แต่ ESX ก็สามารถสร้าง Gang RP ได้ผ่าน Resources เพิ่มเติม
ดังนั้น QBCore มี Data Model ที่ชัดในจุดนี้ แต่ไม่ได้หมายความว่า ESX ทำ Gang Server ไม่ได้
ต้องดู Script Stack ที่จะใช้จริง
51. Society และ Business
ESX ecosystem มีแนวคิด
esx_society
ที่ใช้มานานกับ Jobs/Organizations
QBCore ecosystem มี Management/Banking/Job Resources ในแนวทางของ QB
ทั้งสองสามารถทำ
Business
Employee
Boss
Company Money
ได้
แต่ Database และ APIs คนละชุด
52. Framework ไหน Customize ง่ายกว่า
ขึ้นกับทีม
ถ้าทีมเขียน ESX มา 5 ปี
ESX จะง่ายกว่า
ถ้าทีมเขียน QBCore อยู่แล้ว
QBCore จะง่ายกว่า
ความคุ้นเคยกับ
APIs
Events
Database
Debugging
มีผลมากกว่าความแตกต่างเล็กน้อยระหว่าง Framework
53. Framework ไหน Update ง่ายกว่า
Framework ไหนก็ Update ยากได้ถ้าแก้ Core โดยตรง
ตัวอย่างไม่ดี
Core
├── Custom Job Code
├── Custom Garage Code
├── Custom Business Code
└── Custom Phone Hooks
เมื่อ Core Update ต้อง Merge ทุกอย่าง
Architecture ที่ดีกว่า
Framework Core
↓
Public APIs
↓
Custom Resources
ใช้ได้กับทั้ง ESX และ QBCore
54. อย่าแก้ Core หากไม่จำเป็น
ESX
es_extended
และ QBCore
qb-core
ควรรักษาให้ใกล้ Official Source เมื่อเป็นไปได้
Custom Feature ควรอยู่ใน Resource แยก
ช่วยให้
Update ง่าย
Debug ง่าย
Rollback ง่าย
Migration ง่าย
กว่า
55. Server ที่เปิดอยู่แล้วควรเปลี่ยน Framework ไหม
ถ้า Server
เสถียร
Player Data ถูก
Performance ดี
Scripts ทำงานครบ
ทีมดูแลได้
ไม่มีความจำเป็นต้องเปลี่ยนเพียงเพราะ Framework อื่นกำลังนิยม
Framework Migration มีต้นทุนสูง
โดยเฉพาะ Server ที่มี
Custom Scripts
Player Data
Vehicles
Phone
Housing
Businesses
จำนวนมาก
56. เปลี่ยน Framework เมื่อไรถึงคุ้ม
อาจคุ้มเมื่อ
กำลัง Rewrite Server ใหญ่
Framework เดิมเป็น Technical Debt หนัก
Scripts หลักไม่รองรับ Framework เดิม
ทีมใหม่มี Expertise อีก Framework
ต้องเปลี่ยน Architecture ระยะยาว
และได้ประโยชน์ชัดเจน
ไม่ควร Migration เพราะต้องการลด Resmon ของ Script ตัวเดียว
57. ตารางเปรียบเทียบ ESX กับ QBCore
| หัวข้อ | ESX | QBCore |
|---|---|---|
| Core | es_extended | qb-core |
| Player Object | xPlayer | Player |
| Character ID หลัก | Identifier | citizenid |
| Player Table | users | players |
| Money | Accounts | PlayerData.money |
| Job | Job + Job Grade | Job Object + Grade |
| Gang ใน PlayerData | ไม่ใช่ Data Model เดียวกับ QB | มี |
| Metadata | มี | มี |
| Core Access | ESX exports/imports/APIs | GetCoreObject/exports/APIs |
| Database Layer ปัจจุบัน | oxmysql | oxmysql |
| Ecosystem | ESX Resources | qb-* Resources |
| RP/Economy | เหมาะมาก | เหมาะมาก |
| Third-party Scripts | เยอะมาก | เยอะมาก |
| Migration ข้ามกัน | ต้อง Conversion | ต้อง Conversion |
58. เลือก ESX ถ้าอะไร
ESX เป็นตัวเลือกที่ดีเมื่อ
มี ESX Server อยู่แล้ว
มี Custom ESX Scripts มาก
ทีม Developer ถนัด xPlayer/ESX APIs
Paid Scripts หลักรองรับ ESX
ต้องการ ESX Legacy ecosystem
ไม่มีเหตุผลทางเทคนิคให้ Migration
Server ที่ทำงานดีอยู่แล้วไม่จำเป็นต้องรื้อเพื่อเปลี่ยน Framework
59. เลือก QBCore ถ้าอะไร
QBCoreเป็นตัวเลือกที่ดีเมื่อ
ทีมถนัด QBCore
มี QB Scripts อยู่แล้ว
ต้องการ
qb-*ecosystemต้องการ PlayerData Structure แบบ QB
ต้องการ Job/Gang Model ของ QBCore
Paid Scripts สำคัญรองรับ QB โดยตรง
โดยเฉพาะทีมที่มี Custom Code บน QB อยู่มาก การใช้ QBCore ต่อจะลดต้นทุนได้มาก
60. Checklist ก่อนเลือก ESX หรือ QBCore
Framework
ถามว่า
ทีมถนัดอะไร?
Inventory
เลือก
Inventory อะไร?
Target
เลือก
Target อะไร?
Phone
ตรวจ
รองรับ ESX/QBCore แบบไหน?
Housing
ตรวจ
Framework + Inventory Compatibility
Jobs
ตรวจว่า Scripts หลักเป็น
ESX
หรือ
QBCore
Paid Resources
ดู
Bridge
Framework Version
Dependencies
Maintenance
ถามว่า
ใครจะดูแล Server อีก 1–2 ปี?
คำตอบทั้งหมดนี้สำคัญกว่าคำถามว่า Framework ไหนดังที่สุด
ESX กับ QBCore เลือกตัวไหนดีแบบสั้นที่สุด
มี ESX Server ทำงานดีอยู่แล้ว
ใช้ ESX ต่อ
มี QBCore Server ทำงานดีอยู่แล้ว
ใช้ QBCore ต่อ
มี ESX Scripts จำนวนมาก
ESX ได้เปรียบ
มี QB Scripts จำนวนมาก
QBCore ได้เปรียบ
ทำ Serious RP ใหม่
ใช้ได้ทั้งคู่
ทำ Economy RP
ใช้ได้ทั้งคู่
ทำ Drift/Freeroam ธรรมดา
Framework อาจไม่จำเป็น
ต้องการย้ายเพราะคิดว่าอีกตัวเบากว่า
วัด Profiler ก่อน
สรุป ESX กับ QBCore ต่างกันอย่างไร
ESX และ QBCore เป็น FiveM Roleplay Framework ที่แก้ปัญหาคล้ายกัน แต่ใช้ Architecture คนละแบบ
ESX ปัจจุบันมี Core
es_extended
และ Player Object แบบ
xPlayer
โดย Current Database users เก็บข้อมูลอย่าง
identifier
accounts
job
job_grade
inventory
metadata
position
ขณะที่ QBCore ใช้
qb-core
และ
PlayerData
ซึ่งมีข้อมูลสำคัญอย่าง
citizenid
money
charinfo
job
gang
metadata
นี่ทำให้ Script APIs และ Database ของทั้งสอง Framework ไม่สามารถสลับกันตรง ๆ ได้
ในด้านการใช้งานจริง ทั้ง ESX และ QBCore เหมาะกับ Serious RP และ Economy RP และทั้งสองมี Third-party Script ecosystem ขนาดใหญ่ จึงไม่มีเหตุผลที่จะประกาศว่า Framework หนึ่งชนะอีก Framework ในทุกสถานการณ์
สิ่งที่ควรใช้ตัดสินคือ
Developer Experience
Existing Scripts
Inventory
Target
Phone
Housing
Jobs
Database
Long-term Maintenance
มากกว่า Benchmark หรือกระแสเพียงอย่างเดียว
แนวทางของ comsiam คือ ถ้ามี Production Server ที่ ESX หรือ QBCore ทำงานดีอยู่แล้ว ไม่ควร Migration เพียงเพื่อเปลี่ยนชื่อ Framework เพราะ Player Data, Vehicles, Inventory, Housing และ Custom Scripts ทำให้ต้นทุนการย้ายสูงกว่าที่เห็นมาก
สำหรับ Server ใหม่ comsiam แนะนำให้เลือก Phone, Inventory, Housing, Target และ Paid Scripts หลักก่อน แล้วดูว่า Resource Stack ทั้งชุดรองรับ ESX หรือ QBCore ตัวใดได้สะอาดกว่า Framework ที่ทำให้ Integration น้อยที่สุดมักเป็นตัวเลือกที่ดีกว่าสำหรับ Server นั้น
Comments
Post a Comment