¿Qué es un "tic" en el contexto del desarrollo del juego?

12

Ok, esta es una pregunta de nivel muy principiante, pero necesito saber esto, ¿a qué se refiere el término "tic" en el contexto del desarrollo del juego? ¿Es lo mismo que FPS? ¡Gracias!

usuario3843164
fuente
1
¿De dónde sacaste esta terminología de BTW? Algunas personas simplemente lo llaman tic porque physics engine update framees demasiado largo para que los jugadores casuales lo recuerden / entiendan.
Bálint

Respuestas:

18

Una marca es una unidad de medida del tiempo, específicamente se refiere a una sola instancia de una acción repetida (generalmente una acción amplia) en un juego, o el período de tiempo que consume esa acción.

Las garrapatas se repiten y (en su mayoría) son regulares; El término proviene de uno de los sonidos que hace un reloj ("tic" y "tock").

Por lo general, una marca es una iteración de un bucle, como el bucle lógico del juego principal. Se puede decir, por ejemplo, que la lógica del juego "hace tictac" una vez por cuadro, o que "durante el tic, las posiciones de los personajes se actualizan".

Sin embargo, también puede referirse a períodos más granulares; se puede decir que "la marca de IA en el juego está limitada a 5 ms de tiempo de procesamiento".

FPS es una medida de la cantidad de cuadros (generalmente cuadros de procesamiento) que un juego procesa en un segundo. Los ticks y los FPS no están necesariamente relacionados, sin embargo, a veces las personas llaman a una sola ejecución del ciclo lógico del juego un "marco lógico", en cuyo caso la tasa de FPS (lógica) sería el número de tics procesados ​​por segundo. Esto es particularmente común para juegos que imponen velocidades de cuadro fijas para la lógica o la física del juego por cualquier razón.


fuente
2

La mayoría de los juegos se implementan en un bucle. Algo como

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

Es una forma bastante estándar de hacer las cosas, y aunque los elementos de representación y UI pueden manejarse en un hilo separado, la lógica del juego real (presione w mover su nave hacia adelante), ocurre dentro de este tic.

Esto también se llama un "marco" y generalmente se lo denomina velocidad de fotogramas (no debe confundirse con el material gráfico). Tick ​​se ha convertido en un sinónimo popular para ayudar a diferenciar a los dos.

Como programador, su objetivo es tener una velocidad de cuadro (tick) constante y estable, pase lo que pase. Esto mantiene las respuestas en su juego suaves y racionales, al tiempo que permite que un modelo (programación, no gráficos) procese las cosas de una manera amigable para la computadora. Los tiempos de marca no son constantes en todos los juegos y no hay un número mágico. Algunos juegos tienen 100 cuadros por segundo, otros son 1 marca cada 3 segundos.

coteyr
fuente
1
Es importante tener en cuenta que no todos los juegos tienen una tasa de tics estática. Screeps y Eve en línea son compatibles con tasas de tics variables. Se supone que Minecraft tiene una tasa de tics estable, pero generalmente no lo logra y lo maneja bien. Dwarf Fortress tiene una velocidad de fotogramas estática y apesta cuando no puede seguir el ritmo, pero aún funciona.
coteyr
Creo que está mezclando demasiado los términos "marco" y "marca". Las marcas también pueden abarcar múltiples cuadros (o ciclos de actualización).
Tyyppi_77
1

Una "marca" puede referirse a dos cosas diferentes. Podría referirse a un tic de cuadro como usted dijo donde se actualizan todos los gráficos visibles en la pantalla. Sin embargo, el término "tic" también puede referirse a un tic del bucle del juego. Ese tipo de tick es donde se ejecuta su código. Por lo general, sus ticks están en un contexto de un ciclo de los mismos tics repetidos que continuarán hasta que el juego se detenga.

Freddy
fuente
1

Una marca generalmente se refiere a una iteración del ciclo del juego en la que se calcula toda la lógica, por lo que los juegos generalmente tienen múltiples marcas por segundo.

Sin embargo, muchos juegos ejecutan tanto los gráficos como el bucle del juego en el mismo hilo porque los gráficos generalmente no tardan tanto en mostrarse para que la lógica se interrumpa, o viceversa (aunque los desarrolladores establecen controles para situaciones como esa, como tomando la diferencia de tiempo entre el último cuadro y el actual y ajustando la velocidad de movimiento en consecuencia).

FPS significa F rames P er S econd, por lo que para muchos juegos, sí, técnicamente hablando, cada cuadro es una marca.

Joshua fuerte
fuente
¿Entonces puedo usar ambos términos indistintamente?
user3843164
2
Yo no lo haría Usaría "FPS" cuando me refiero a los gráficos, y "ticks" cuando me refiero a la lógica, porque algunos juegos, especialmente aquellos con gráficos intensos, tienden a tener dos bucles: uno para los gráficos y otro para la lógica.
StrongJoshua
Una marca no es un hilo.
@JoshPetrie Oooh, veo mi error, gracias por señalarlo. Ya está arreglado.
StrongJoshua
1
Los juegos generalmente tienen múltiples ticks por segundo. "A menudo", tal vez. "Generalmente", no. Los juegos de mesa o los juegos de estrategia pueden funcionar solo cuando el usuario realiza un movimiento, tanto en el sentido de "iteración del bucle principal" como en el sentido de "render".
Anko