El programador de tareas coordina las tareas realizadas en cada fotograma mientras el juego se ejecuta, incluso cuando está en pausa. Estas tareas incluyen detectar la entrada del jugador, animar personajes, actualizar la simulación física y reanudar scripts en un estado de task.wait().
Aunque puede haber múltiples tareas en ejecución, el programador de tareas puede sobrecargarse potencialmente, especialmente en las siguientes situaciones:
- Usar un rig de personaje o un esquema de entrada personalizado.
- Animar partes tú mismo (en lugar de usar un Animator).
- Depender en gran medida de la física precisa.
- Replicar objetos regularmente.
RunService
La forma más directa de agregar tareas fotograma a fotograma es a través de los siguientes miembros de RunService:
Prioridad del programador
El programador de tareas categoriza y completa las tareas en el siguiente orden. Algunas tareas pueden no realizar trabajo en un fotograma, mientras que otras pueden ejecutarse múltiples veces.
* La ejecución del script durante RunService.Heartbeat difiere según la configuración de Workspace.SignalBehavior de tu juego. Consulta Eventos diferidos.
Mejores prácticas
Para construir juegos eficientes y de alto rendimiento, ten en cuenta lo siguiente:
No conectes/vincules funciones al paso de renderizado a menos que sea absolutamente necesario. Solo las tareas que deben realizarse después de la entrada pero antes de la renderización deben hacerse de tal manera, como el movimiento de la cámara. Para un control estricto sobre el orden, usa BindToRenderStep() en lugar de PreRender.
Gestiona los estados físicos con cuidado. PreSimulation ocurre antes de la física, mientras que PostSimulation ocurre después de la física. Por lo tanto, la lógica de juego que afecta el estado físico debe realizarse en PreSimulation, como establecer la Velocity de las partes. Por el contrario, la lógica de juego que depende de o reacciona al estado físico debe manejarse en PostSimulation, como leer la Position de las partes para detectar cuándo entran en zonas definidas.
Los cambios de transformación de Motor6D deben hacerse en el evento PreSimulation. Si no lo haces, Animators sobrescribirá los cambios en el siguiente fotograma. Incluso sin un Animator, PreSimulation es el último evento de Luau que se activa antes de que se aplique Motor6D.Transform a las posiciones de las partes.