Guida

Il limite di 48 giocatori di FiveM e cosa cambia con OneSync

Quasi ogni proprietario di un server FiveM prima o poi si scontra con il numero 48: è il valore predefinito nella configurazione di esempio, e il massimo che un server può accogliere senza un abbonamento Cfx.re a pagamento. Questa guida spiega da dove viene il limite, cosa cambia OneSync nel modo in cui il gioco sincronizza i dati, cosa ti serve per superare i 48 e cosa cambia per i tuoi script e per il tuo server quando lo fai. Segue la documentazione di Cfx.re così come appare a novembre 2026.

Di team EvorxaPubblicata il

Da dove viene il 48

A 48 si incontrano due regole. La prima è tecnica. Il riferimento dei comandi del server dice che sv_maxClients accetta valori da 1 a 2048, ma i valori a partire da 32 richiedono onesync impostato su on o legacy, e i valori sopra 64 lo richiedono impostato su on. Senza OneSync, il gioco usa il suo modello peer-to-peer originale e il server si limita a inoltrare il traffico.

La seconda regola è la licenza. Secondo la documentazione di OneSync, OneSync è gratuito fino a 48 slot. Oltre serve un abbonamento sul Cfx Portal, a partire dal livello chiamato Element Club Argentum. Anche la pagina sui problemi del server di Cfx.re dice lo stesso: più di 48 slot richiedono Element Club Argentum o un livello superiore.

Nota: Il numero di slot consentito da ciascun livello è stabilito da Cfx.re e indicato nella pagina degli abbonamenti del Portal. Controllalo lì prima di acquistare un livello o di scegliere la dimensione di un server, perché può cambiare.

Cosa cambia OneSync

OneSync è il sistema di sincronizzazione sviluppato da Cfx.re per GTA V. Invece di far comunicare i client tra loro sullo stato del mondo, il server mantiene lo stato delle entità (giocatori, veicoli, ped, oggetti) e decide quale client riceve quali dati. La convar onesync ha tre valori:

  • off: nessuna consapevolezza dello stato. I client usano il networking peer-to-peer del gioco e il server fa da relay.
  • on: piena consapevolezza dello stato e routing delle entità deciso dal server. È la modalità da usare.
  • legacy: una modalità di compatibilità per gli script che si aspettano che ogni giocatore esista su ogni client. Cfx.re la sconsiglia per problemi di prestazioni e glitch grafici.

Su FiveM for GTAV Enhanced la scelta non c'è più: usa un modello client-server, e la big mode di OneSync è l'unica modalità.

Infinity e culling

OneSync Infinity è la parte che rende possibili i server grandi, e onesync_enableInfinity è attivo per impostazione predefinita. Cfx.re indica il supporto fino a 2048 giocatori e dice che esistono server con più di 1000 giocatori contemporaneamente. Infinity ha alzato il limite degli ID degli oggetti da 8192 a 65535 e ha aggiunto il culling: i client non creano giocatori o entità al di fuori di una zona di focus di 424 unità intorno al giocatore. Ecco perché è il server, e non il client, a dover conoscere tutti, e perché i cicli sui giocatori devono girare sul server.

Chiavi di licenza e superamento dei 48

Ogni server pubblico ha bisogno di una chiave di licenza da portal.cfx.re, impostata con sv_licenseKey. Se configuri il server con txAdmin, te la chiede il recipe deployer; su un FXServer semplice va in server.cfg. Ecco un blocco minimo per un server fino a 48 giocatori, in linea con il server.cfg di esempio:

server.cfg
# license key from portal.cfx.re
sv_licenseKey "your-license-key"

# server-side state awareness and entity routing
set onesync on

# the free limit
sv_maxclients 48

Per superare i 48, la pagina sui problemi del server indica tre passaggi: usare la build del server più recente, impostare sv_maxclients sopra 48 entro i limiti del tuo livello di abbonamento e riavviare.

server.cfg
# 1. update FXServer to the current recommended build
# 2. raise the slot count to what your subscription tier allows
sv_maxclients 64 # example value
# 3. restart the server

Le guide di installazione segnalano anche un errore comune: se la console dice che non è stata specificata alcuna chiave di licenza, di solito stai avviando il server dalla cartella sbagliata o senza +exec server.cfg, quindi la riga della chiave non è mai stata letta.

Per un server di test privato c'è sv_lan true. Il riferimento dice che rende il server solo LAN: non compare nella lista pubblica dei server e i controlli della chiave di licenza vengono saltati. Va bene per testare gli script sulla tua macchina, non per un server a cui i giocatori si collegano via internet.

Routing bucket

I routing bucket, aggiunti nella pipeline del server 3245, dividono un server in mondi separati. Un giocatore o un'entità in un bucket vede solo giocatori ed entità dello stesso bucket, e ogni bucket ha la propria griglia per la popolazione. Cfx.re li suggerisce per server con più modalità di gioco, sessioni o party e schermate di selezione del personaggio. Dice esplicitamente che non sono pensati per gli interni.

Ogni bucket ha una modalità di lockdown che controlla cosa possono creare i client:

Modalità di lockdown dei routing bucket
ModalitàEffetto
strictI client non possono creare alcuna entità.
relaxedVengono bloccate solo le entità di proprietà degli script create dai client.
inactiveI client possono creare qualsiasi entità.
fullDisattiva anche la creazione di oggetti dummy. Solo GTAV Enhanced.
server.lua
-- server-side Lua: put a player in bucket 1, a separate world
SetRoutingBucketEntityLockdownMode(1, "strict") -- clients cannot create entities
SetRoutingBucketPopulationEnabled(1, false)      -- no ambient population
SetPlayerRoutingBucket(source, 1)

Cosa cambia per i tuoi script

Passare un server da legacy o off a on rompe gli script che presuppongono che ogni client veda ogni giocatore. Questi sono i pattern che Cfx.re consiglia al loro posto:

  • Cicla sui giocatori dal server. Un client conosce solo i giocatori dentro la sua zona di focus, quindi un ciclo lato client su tutti i giocatori, su un server affollato, ne perde la maggior parte.
  • Crea le entità sul server. Veicoli, ped e oggetti creati dal server restano sotto il controllo del server. Imposta l'orphan mode in modo che il server non li elimini.
  • Usa le state bag per condividere dati su un'entità, invece di eventi inviati a ogni client.
  • Evita gli eventi di scope. playerEnteredScope e playerLeftScope scattano una volta per ogni giocatore nello scope a ogni entrata e uscita, quindi il loro costo cresce con il numero di giocatori. Nell'esempio di Cfx.re, 32 giocatori nello scope di un giocatore significano 32 chiamate.
  • Blocca la creazione di entità con un bucket in modalità strict se i client non hanno motivo di generare oggetti. Cfx.re lo presenta come il modo per impedire ai client di generare entità per scopi malevoli.
server.lua
-- server-side Lua: create the vehicle on the server and keep it
local vehicle = CreateVehicleServerSetter(GetHashKey("blista"), "automobile", x, y, z, heading)
SetEntityOrphanMode(vehicle, 2) -- the server will not delete it

Quanto costa al server

Con OneSync attivo, il server fa un lavoro che prima facevano i client: conserva lo stato di ogni entità e decide di cosa ha bisogno ciascun client. Più giocatori significano più lavoro di questo tipo, e più esecuzioni dei tuoi script per ogni giocatore. Cfx.re non pubblica requisiti hardware per numero di giocatori, quindi considera qualsiasi numero trovato online come una stima e misura il tuo server con le tue risorse.

Alcune convar sacrificano un po' di precisione in cambio di meno lavoro. Qui sotto trovi i loro valori predefiniti; cambiane una alla volta e osserva l'effetto:

server.cfg
# OneSync convars with their default values
set onesync_enableInfinity true       # startup only
set onesync_distanceCulling true
set onesync_distanceCullVehicles false
set onesync_population true           # false: no NPCs spawn
  • onesync_distanceCulling rimuove le entità dalla sincronizzazione quando sono lontane e fuori vista. Lascialo attivo.
  • onesync_distanceCullVehicles applica lo stesso culling ai veicoli. Cfx.re fa notare che può migliorare le prestazioni.
  • onesync_population controlla la generazione degli NPC. Disattivalo solo se il tuo server non deve avere traffico ambientale né pedoni. Per disattivare la popolazione in un solo punto, come una schermata di selezione del personaggio, usa SetRoutingBucketPopulationEnabled su quel bucket.
  • Su FiveM for GTAV Enhanced, gli aggiornamenti di sincronizzazione vengono elaborati in parallelo per impostazione predefinita (onesync_multithreadedPacketProcessing), cosa che secondo Cfx.re elimina il limite principale al numero di giocatori che un server può reggere.

Il carico degli script cresce con il numero di giocatori, quindi prima di alzare il numero di slot verifica che il server regga quello attuale nelle ore di punta.

Checklist prima di alzare il limite

  1. Verifica quanti slot consente il tuo livello sul Cfx Portal e abbonati prima di modificare la configurazione.
  2. Aggiorna FXServer alla build consigliata attuale.
  3. Imposta onesync on. È obbligatorio sopra i 64 slot, e legacy è sconsigliato.
  4. Cerca nelle tue risorse i cicli lato client su tutti i giocatori e gli handler di playerEnteredScope o playerLeftScope, e sposta quella logica sul server.
  5. Osserva l'uso di CPU del processo FXServer nell'ora di punta con le tue risorse reali, non su un server di test appena installato.
  6. Alza sv_maxclients, riavvia e controlla il numero di slot mostrato per il tuo server nella lista dei server.

FiveM su Evorxa

La pagina dell'hosting FiveM elenca i piani Evorxa per FXServer: piani VPS con core condivisi e piani VDS con core dedicati ad alta frequenza, adatti a un server con molti giocatori e molti script. Hai accesso root per installare FXServer o txAdmin e per impostare ogni riga di questa guida; la chiave di licenza Cfx.re e l'eventuale abbonamento restano nel tuo account Cfx. I piani partono da $2.99 al mese, prepagati su base mensile, semestrale o annuale, e i server girano in una sola regione, Eygelshoven nei Paesi Bassi.

Fonti

I fatti di questa guida provengono da queste pagine.

  1. Documentazione Cfx.re: OneSync
  2. Documentazione Cfx.re: comandi del server (sv_maxClients, onesync)
  3. Documentazione Cfx.re: problemi del server (48 slot)
  4. Documentazione Cfx.re: configurare un server vanilla
  5. Cfx.re: server.cfg di esempio