El tiempo delta o sincronización delta es un concepto utilizado entre los programadores en relación con la capacidad de respuesta del hardware y la red. [1] En la programación de gráficos , el término se utiliza generalmente para la actualización variable del escenario en función del tiempo transcurrido desde la última actualización del juego, [2] (es decir, el " cuadro " anterior), que variará según la velocidad de la computadora y la cantidad de trabajo que se necesita realizar en el programa en un momento dado. Esto también permite que los gráficos se calculen por separado si los gráficos se ejecutan en varios subprocesos.
En la programación de redes , debido a la naturaleza impredecible de las conexiones a Internet , la sincronización delta se utiliza de manera similar para actualizar de manera variable la información de movimiento recibida a través de la red informática , independientemente de cuánto tiempo haya tardado en recibir el siguiente paquete de datos de información de movimiento. [3]
Esto se hace a menudo llamando a un temporizador cada cuadro por segundo que registra el tiempo entre el momento actual y la última llamada. A partir de entonces, el número resultante (tiempo delta) se utiliza para calcular qué distancia, por ejemplo, habría recorrido un personaje de un videojuego durante ese tiempo. Esto da como resultado que el personaje tarde la misma cantidad de tiempo real en moverse por la pantalla independientemente de la velocidad de actualización y de si el retraso se debe a la falta de potencia de procesamiento o a una conexión a Internet lenta.
En programación de gráficos, esto evita que el juego se ralentice o acelere dependiendo de la complejidad de lo que está sucediendo en un momento dado, lo que generaría una experiencia inconsistente y discordante (por ejemplo, el tiempo se ralentiza cuanto más personajes aparecen en la pantalla, o corre demasiado rápido porque solo hay un personaje en la pantalla). En programación de redes, esto mantiene el mundo del juego de cada computadora sincronizado con las demás, al asegurarse de que cada cliente vea eventualmente la misma actividad al mismo tiempo, incluso si ha pasado más tiempo desde la última actualización para algunos clientes que para otros.
Los retrasos lo suficientemente grandes eventualmente afectarán negativamente la experiencia de juego , pero el uso de Delta Time mantiene el juego consistente siempre que la computadora y la conexión a Internet cumplan con los requisitos mínimos de hardware del juego.
El tiempo delta se puede utilizar para medir cuánto tiempo tardó en ejecutarse un programa determinado en tiempo real. El fragmento de código de Python que aparece a continuación muestra cómo se puede calcular el tiempo de ejecución de una función de ejemplo utilizando el delta de los tiempos antes y después de la ejecución.
# tiempo()# devuelve los segundos desde la época como un número de punto flotantedesde tiempo importar tiempo# define is_prime(x)def es_primo ( x ): para i en el rango ( 2 , x ): si ( x % i ) == 0 : imprimir ( x , "no es primo" ) devolver imprimir ( x , "es primo" )# medir el tiempo deltat0 = tiempo () # inicio de la mediciónis_prime ( 13 ) # función de llamadat1 = tiempo () # fin de la medicióndeltaTiempo = t1 - t0print ( "is_prime(13) tarda" , deltaTime , "¡segundos en ejecutarse!" )
El tiempo delta y la velocidad de cuadros no siempre están relacionados. Los videojuegos se dividen en dos categorías en cuanto a la velocidad de cuadros: dependientes de la velocidad de cuadros o independientes de la misma. Los juegos dependientes de la velocidad de cuadros tienen una velocidad de cuadros que varía según la computadora en la que se ejecute el software. Por ejemplo, si un juego dependiente de la velocidad de cuadros se ejecuta a 300 cuadros por segundo (fps) en una computadora con una frecuencia de actualización de 120 hercios (Hz), se ejecutará a 150 fps en una computadora con una frecuencia de actualización de 60 Hz. Una expresión de tiempo delta estándar puede crear pantallas de pausa y efectos de cámara lenta intencionales en juegos que dependen de la velocidad de cuadros. Las fórmulas de tiempo delta estándar rara vez se utilizan para juegos estándar porque el tiempo delta entre cuadros varía en gran medida según la frecuencia de actualización de la computadora en la que se ejecuta.
Si un juego es independiente de la velocidad de cuadros, esta se establece de manera predeterminada y se ejecuta de manera idéntica en todas las computadoras independientemente de sus especificaciones. La independencia de la velocidad de cuadros limita la calidad gráfica máxima para que el juego esté disponible para más consumidores. La independencia de la velocidad de cuadros es particularmente popular en juegos móviles y juegos optimizados para computadoras de gama baja, como Chromebooks. En los juegos independientes de la velocidad de cuadros, el tiempo delta entre cuadros es consistente en todo el juego. Esta estandarización significa que una expresión de tiempo delta puede crear una velocidad de cuadros consistente para todos los usuarios en todos los tipos de computadoras. [4]
El delta-timing puede ser excelente en cualquier momento en que la velocidad de cuadros de un juego deba ser independiente de su hardware. Un ejemplo de esto podrían ser los juegos que necesitan ejecutarse en dispositivos móviles o computadoras de gama baja. En algunos casos, los desarrolladores de videojuegos utilizan el delta-timing para estandarizar la velocidad de movimiento de un objeto en la pantalla. Por ejemplo, si un personaje se mueve por la pantalla a una velocidad constante, el delta-timing puede garantizar que esta velocidad de movimiento sea constante y no fluctúe. El uso del delta-timing para el movimiento es particularmente útil para los usuarios que poseen una conexión a Internet inconsistente o un hardware de computadora de gama baja. Este método también puede regular el movimiento de los objetos en pantalla.
Una desventaja de usar delta-time para el movimiento es que puede ser complicado para juegos que incorporan una amplia variedad de movimientos y velocidades de movimiento. Por ejemplo, un juego podría tener una velocidad de caminata y velocidad de carrera especificadas para todos los personajes; sin embargo, los personajes también pueden conducir automóviles, barcos, aviones y otros vehículos. Si el desarrollador quiere que cada una de estas velocidades de movimiento sea diferente (para hacer que el juego sea lo más realista posible), necesitaría una expresión de delta-time separada para cada velocidad de movimiento (eso solo suponiendo que estos movimientos ocurren a una velocidad constante). Si los movimientos no ocurren a una velocidad constante, las expresiones de delta-time se vuelven ineficaces. [5]