Les serveurs FiveM tournent à un tick rate de 64 par seconde (64 FPS). À chaque tick, le serveur calcule les positions des joueurs, des véhicules, des PNJ et la logique de tous vos scripts. Si les FPS descendent sous 30, les joueurs subissent de la désynchronisation : véhicules qui se téléportent, tirs qui ne s'enregistrent pas et interactions qui saccadent.
Vérifier les FPS du serveur
Dans txAdmin, vous voyez les FPS du serveur sur le tableau de bord. La valeur idéale est 64 ; tout ce qui dépasse 50 est acceptable. En dessous de 30, il y a un problème sérieux.
Les causes les plus courantes
1. Trop de scripts ou des scripts mal écrits
La cause numéro un. Chaque ressource exécute du code à chaque tick. Un script qui coûte 0,5 ms par tick semble inoffensif, mais avec 100 scripts, vous êtes déjà à 50 ms, ce qui limite le serveur à 20 FPS.
Solution : utilisez la commande resmon 1 dans la console (ou txAdmin). Cela affiche la consommation CPU par ressource. Triez par consommation et examinez les scripts les plus lourds.
2. Scripts côté client qui tournent côté serveur
Les scripts destinés au client (UI, HUD, rendu PNJ) doivent se trouver dans client.lua, pas dans server.lua. Un spawner de PNJ côté client qui tourne accidentellement côté serveur calcule le PNJ pour chaque joueur connecté, ce qui surcharge le serveur.
3. Requêtes de base de données non optimisées
Les appels de base de données synchrones bloquent le serveur jusqu'à ce que la réponse revienne. Utilisez toujours des requêtes asynchrones via oxmysql. Ajoutez des index aux colonnes sur lesquelles vous faites des recherches (identifier, citizenid). Une requête sans index sur une table de 10 000 lignes est visiblement lente.
4. Trop d'assets streamés
Les véhicules personnalisés, les vêtements, les cartes et les props doivent être envoyés à chaque joueur. Des centaines de véhicules personnalisés et des MLO étendus (intérieurs de carte) augmentent le temps de chargement et l'utilisation de la mémoire.
Solution : supprimez les assets inutilisés. Compressez les textures. Envisagez une liste blanche d'assets.
5. Paramètres OneSync
OneSync est le système réseau de FiveM. Sans OneSync, la limite de joueurs est de 32 et les performances sont moins bonnes. Assurez-vous que OneSync est activé :
set onesync on
Le mode Infinity (désactiver set onesync legacy) gère mieux un grand nombre de joueurs.
Conseils d'optimisation
- Supprimez les scripts que personne n'utilise ou qui ont des fonctionnalités redondantes.
- Utilisez
Wait()ouCitizen.Wait()dans les boucles. Une boucle sans wait s'exécute à chaque tick et gaspille du CPU. - Mettez en cache les valeurs fréquemment utilisées au lieu de les récupérer à chaque tick.
- Utilisez des événements et des callbacks au lieu du polling (vérifier en continu si quelque chose a changé).
- Redémarrez le serveur quotidiennement. Les serveurs FiveM accumulent de la mémoire à cause de fuites dans les scripts.
Combien de scripts, c'est trop ?
Il n'y a pas de nombre fixe. Cela dépend de la qualité. Un serveur avec 50 scripts bien écrits peut mieux performer qu'un avec 20 mauvais. Surveillez avec resmon et concentrez-vous sur les ressources les plus lourdes.
Plus de RAM aide-t-il contre le lag ?
Uniquement si le lag est causé par un manque de mémoire (le serveur swappe sur le disque). Dans la plupart des cas, le CPU est le goulot d'étranglement, pas la RAM. Plus de RAM aide avec beaucoup d'assets streamés, pas avec la performance des scripts.
Puis-je réduire le tick rate ?
Non. FiveM tourne toujours à 64 ticks par seconde. Si le serveur n'y arrive pas, les FPS chutent. La solution est de réduire la charge, pas de baisser les attentes.
Les serveurs FiveM avec CPU garanti tournent sur les forfaits FiveM de HostValues.