Función update (actualizar) en Flutter Flame

02-02-2023 - Andrés Cruz

In english
Función update (actualizar) en Flutter Flame

Los elementos que estén en el juego, necesitan ser redibujados constantemente según el estado actual del juego; para entender esto más claramente, veamos un ejemplo:

Supongamos que un elemento del juego representado por un sprite (una imagen), que en este ejemplo llamaremos cómo "player"; cuando el usuario da un click sobre un botón, entonces el player debe de actualizar su posición; esta actualización, se aplica en el juego mediante una función llamada update().

Al igual que vimos en el ejemplo del círculo en movimiento, es esta función la que se encarga de actualizar la posición del círculo en pantalla.

La función de update() es tal cual indica su nombre, una función de actualización, la cual, recibe un parámetro, llamado "deltatime" (dt) que nos dice 

la hora que ha transcurrido desde que se dibujó el cuadro anterior. Esta variable debe usarla para hacer que su componente se mueva a la misma velocidad en todos los dispositivos.

Al actualizar cualquier aspecto del juego mediante la función de update() es reflejado automáticamente mediante la función de render() y con esto, la actualización del juego a nivel gráfico.

En Flame, el método update() se utiliza para actualizar el estado del juego en cada interacción; como explicamos antes en la publicación del GameLoop, es fundamental para realizar cualquier actualización por pantalla. Este método se llama automáticamente por el motor de juegos de Flame en un tiempo relativamente constante que como mencionamos antes, cada cuanto se llame a esta función, depende de la velocidad de procesamiento del dispositivo usado

La función de update, recibe un parámetro llamado como DeltaTime el cual es el tiempo pasado desde la ultima invocación de dicha función.

Dentro del método update(), se pueden realizar tareas como actualizar la posición, escalado… y en escencia, cualquier operación que quieras realizar en el juego; una validación común es la de verificar colisiones, entre otras operaciones.

A continuación se muestra un ejemplo básico de cómo se puede implementar el método update() en una clase de juego en Flame:

 

import 'package:flame/game.dart';

class MyGame extends FlameGame{
  @override
  void update(double dt) {
    super.update(dt);
  }
}

En este ejemplo, se define una clase MyGame que extiende FlameGame. El método update() se sobrescribe para realizar las operaciones mencioadas antes; es importante acotar que, esta función tambien esta disponible en los componentes en Flame y no solamente a nivel de las clases tipo Game.

Es importante llamar al método super.update(dt) al finalizar el método update(), ya que esto se encarga de actualizar los componentes del juego y renderizarlos en la pantalla.

Espero que esta información te sea útil para entender la función del método update() en Flame.

El Game loop es utilizado por todas las implementaciones de las clases tipo Game y sus componentes:

https://docs.flame-engine.org/1.6.0/flame/game.html

Andrés Cruz

Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter

Andrés Cruz en Udemy

Acepto recibir anuncios de interes sobre este Blog.