Aller au contenu principal
ShadowAcademy

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