Les langages Optimisation FiveM Ce que coûte une boucle
Wait et les frames
Côté joueur, un script tourne dans le même programme que le jeu. Chaque milliseconde qu'il consomme est une milliseconde de moins pour afficher l'image suivante.
Ce que fait Wait
CreateThread(function()
while true do
Wait(0)
-- travail
end
end)
Wait(ms) suspend la boucle et rend la main au jeu. Wait(0) veut dire
« réveille-moi à la prochaine image » : à 60 images par seconde, la boucle
tourne 60 fois par seconde, en permanence. Wait(1000), une fois par
seconde.
Une seule boucle en Wait(0) qui fait peu de chose ne se voit pas. Trente
ressources qui en ont chacune deux, si. Dans la console F8, resmon 1 affiche
le temps que chaque ressource consomme à chaque image : une ressource qui ne
fait rien de visible devrait rester proche de 0,00 ms.
Adapter l'attente à la situation
La règle : ne réveiller la boucle que quand il y a quelque chose à faire.
- Une information qui change lentement (l'heure du jeu, la météo, un métier) se vérifie toutes les quelques secondes, pas à chaque image.
- Un marqueur doit être dessiné à chaque image, sinon il clignote -- mais seulement quand le joueur est assez près pour le voir.
while true do
local proche = -- le joueur est-il près du point ?
if proche then
-- dessiner
Wait(0) -- à chaque image, tant qu'on est près
else
Wait(1000) -- loin : on revérifie dans une seconde
end
end
Le prix : en arrivant près du point, le marqueur peut mettre jusqu'à une seconde à apparaître. C'est imperceptible, et la boucle coûte soixante fois moins cher le reste du temps.
Dans les exercices
La simulation compte combien de fois ta boucle se réveille et combien de fois tu appelles chaque fonction du jeu, sur un temps virtuel : 10 secondes de jeu se simulent instantanément. Une image y dure 16 ms (60 images par seconde).
2 exercices pour cette lecon
Les exercices demandent un compte : il faut bien enregistrer votre progression quelque part. La lecture, elle, reste libre. Creer un compte
-
La boucle qui ne dort jamais facile lecon a valider
-
Dormir loin, dessiner de près moyen lecon a valider