0%
Bucle de juego, FPS y delta time — Capítulo 20

Capítulo 20 — Bucle de juego, FPS y delta time

Parte 2A — Los fundamentos del juego 2D · Capítulo 20 de 62 · 6 h

Capítulo 20 — Bucle de juego, FPS y delta time

Nivel: intermedio Duración estimada: 6 h Requisitos previos: capítulo 19 — Flutter acelerado para juegos (runApp, StatefulWidget, setState, Ticker, CustomPainter) Lo que sabrás hacer al final: escribir un bucle de juego completo en Dart y en Flutter puro, medir los FPS y hacer que un objeto se mueva a la misma velocidad real en todas las máquinas gracias al delta time.


20.0 — Objetivos del capítulo

Al final de este capítulo, serás capaz de:

  • explicar qué distingue técnicamente un juego de una aplicación clásica;
  • describir el esquema entradas → actualización → renderizado y redibujarlo de memoria;
  • escribir un primer bucle de juego en Dart de consola;
  • explicar por qué un while (true) congela una aplicación Flutter;
  • definir una imagen (frame) y una tasa de imágenes por segundo (FPS);
  • convertir un número de FPS en duración de frame en milisegundos, y a la inversa;
  • demostrar el bug de un desplazamiento escrito x += 5 por frame;
  • definir el delta time y escribir x += vitesse * dt;
  • razonar en píxeles por segundo en lugar de píxeles por frame;
  • calcular un dt a partir de un Stopwatch;
  • usar un Ticker y SchedulerBinding para controlar un bucle Flutter;
  • mostrar un contador de FPS y suavizarlo con una media móvil;
  • reconocer un dt aberrante tras un pico de lag y limitarlo con clamp;
  • implementar un paso de tiempo fijo con un acumulador;
  • comparar paso fijo y paso variable y elegir con conocimiento de causa;
  • desacoplar la actualización del renderizado e interpolar entre dos estados;
  • poner el juego en pausa, a cámara lenta o acelerado con un factor de tiempo;
  • nombrar con precisión lo que el motor Flame hará por ti a partir del capítulo 27;
  • ensamblar un pequeño motor de bucle reutilizable para todos los capítulos siguientes.

Comentarios

Los comentarios funcionan con GitHub Discussions

Inicia sesión con GitHub para participar en la discusión

¡Enlace copiado!