Qu'est-ce qu'un «tick» dans le contexte du développement de jeux?


12

Ok donc c'est une question de niveau très débutant mais j'ai besoin de savoir, à quoi fait référence le terme "tick" dans le contexte du développement de jeux? Est-ce la même chose que FPS? Merci!


1
Où avez-vous obtenu cette terminologie de BTW? Certaines personnes l'appellent simplement tick parce qu'il physics engine update frameest trop long pour que les joueurs occasionnels s'en souviennent / comprennent.
Bálint

Réponses:


18

Une tique est une unité de mesure du temps, en particulier, elle se réfère à une seule instance d'une action répétée (généralement une action large) dans un jeu, ou à la période de temps que l'action consomme.

Les tiques sont répétées et (surtout) régulières; le terme vient de l'un des sons émis par une horloge ("tick" et "tock").

En règle générale, un tick est une itération d'une boucle, telle que la boucle logique principale du jeu. On peut dire, par exemple, que la logique du jeu "coche" une fois une trame, ou que "pendant la coche, les positions des personnages sont mises à jour".

Cependant, il peut également se référer à des périodes plus granulaires; on peut dire que "le tick AI dans le jeu est limité à 5 ms de temps de traitement".

Le FPS est une mesure du nombre d'images (généralement des images de rendu) qu'un jeu traite en une seconde. Les ticks et les FPS ne sont pas nécessairement liés, mais parfois les gens appellent une seule exécution de la boucle logique du jeu un "cadre logique", auquel cas le taux FPS (logique) serait le nombre de ticks traités par seconde. Ceci est particulièrement courant pour les jeux qui appliquent des fréquences d'images fixes pour la logique ou la physique du jeu pour une raison quelconque.


2

La plupart des jeux sont implémentés en boucle. Quelque chose comme

def main
 setup(a, bunch, of, stuff)
 load(a, bunch, of, stuff)
 while true do {
   // <- A tick starts here
   read(a, bunch, of, inputs)
   call(a, bunch, of, stuff)
   do(a, bunch, of, stuff)
   update(a, bunch, of, stuff)
   // <- A tick ends here
 }
 clean(a, bunch, of, stuff)
 save(a, bunch, of, stuff)
end

C'est une façon assez standard de faire les choses, et bien que le rendu et les éléments de l'interface utilisateur puissent être gérés dans un thread séparé, la logique du jeu (appuyez sur w pour déplacer votre vaisseau vers l'avant) se produit à l'intérieur de cette coche.

Ceci est également appelé "frame" et est généralement considéré comme une fréquence d'images (à ne pas confondre avec les éléments graphiques). Tick ​​est devenu un synonyme populaire pour aider à différencier les deux.

En tant que programmeur, votre objectif est d'avoir un taux de trame (tick) constant et stable, peu importe quoi. Cela permet de garder les réponses dans votre jeu fluides et rationnelles, tout en permettant à un modèle (programmation et non graphique) de traiter les choses de manière informatisée. Les temps de tick ne sont pas constants d'un jeu à l'autre et il n'y a pas de nombre magique. Certains jeux sont à 100 images par seconde, d'autres à 1 tick toutes les 3 secondes.


1
Il est important de noter que tous les jeux n'ont pas un taux de tick statique. Screeps et Eve online prennent tous deux en charge des taux de tick variables. Minecraft est censé être un taux de tick stable mais ne l'atteint généralement pas et le gère bien. Dwarf Fortress a une fréquence d'images statique et aspire quand elle ne peut pas suivre, mais cela fonctionne toujours.
coteyr

Je pense que vous mélangez un peu trop les termes "frame" et "tick". Les tiques peuvent également s'étendre sur plusieurs trames (ou cycles de mise à jour).
Tyyppi_77

1

Un "tick" peut se référer à deux choses différentes. Cela pourrait faire référence à une coche de cadre, comme vous l'avez dit, si tous les graphiques visibles à l'écran étaient mis à jour. Cependant, le terme "tick" peut également faire référence à un tick de boucle de jeu. Ce type de tick est l'endroit où votre code est exécuté. Habituellement, vos ticks sont dans un contexte de boucle des mêmes ticks répétitifs qui se poursuivront jusqu'à la fin du jeu.


1

Un tick se réfère généralement à une itération de la boucle de jeu dans laquelle toute la logique est calculée, donc les jeux ont généralement plusieurs ticks par seconde.

Cependant, de nombreux jeux exécutent à la fois les graphiques et la boucle de jeu sur le même thread, car les graphiques ne prennent généralement pas si longtemps à s'afficher de sorte que la logique est interrompue, ou vice versa (bien que les développeurs mettent en place des contrôles pour des situations comme celle-ci, comme en prenant la différence de temps entre la dernière et la dernière image et en ajustant la vitesse de déplacement en conséquence).

FPS signifie F rames P er S econd, donc pour de nombreux jeux, oui, techniquement parlant, chaque trame est un tick.


Je peux donc utiliser les deux termes de manière interchangeable?
user3843164

2
Je ne le ferais pas. J'utiliserais "FPS" pour les graphiques et "ticks" pour la logique, car certains jeux, en particulier ceux avec des graphismes intenses, ont tendance à avoir deux boucles: une pour les graphiques et une pour la logique.
StrongJoshua

Une tique n'est pas un fil.

@JoshPetrie Oooh, je vois mon erreur, merci de l'avoir signalé. C'est réparé maintenant.
StrongJoshua

1
Les jeux ont généralement plusieurs ticks par seconde. "Souvent", peut-être. "Généralement", non. Les jeux de société ou les jeux de stratégie peuvent cocher uniquement lorsque l'utilisateur effectue un mouvement, à la fois dans le sens "itération de la boucle principale" et dans le sens "rendu".
Anko
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.