En esta entrada conoceremos los elementos claves de Flame, su organización, componentes y estructuras claves; este es un capítulo netamente referencia, no te preocupes si no entendiste todos los términos explicados en este apartado, los siguientes capítulos ofrecen un esquema más práctico en la cual, construimos una aplicación paso a paso; cuando se presenten una de estas clases y funciones, puedes volver a este capítulo para repasar lo explicado en el mismo.
Puedes crear un proyecto llamado "pruebasflame" como se muestra en el capítulo anterior.
Un proyecto en Flame, lo podemos dividir dos partes:
- La clase principal, que es la que permite comunicar todos los módulos de la aplicación al igual que, emplear procesos propios de Flame como el sistema de colisiones y entrada (teclado, gestos...).
- Los componentes, que son los elementos de nuestro juego, un fondo, jugador, enemigo, etc.
Para que la idea quede más más fácil de entender, puedes ver la clase tipo Game de Flame como el MaterialApp de Flutter y los componentes de Flame, como cada una de las páginas que conforman la aplicación en Flutter:
Vamos a conocer cada uno de estos elementos de Flame más en detalle.
Clases tipo Game/FlameGame
La clase Game en Flame es un componente esencial para la creación de juegos en 2D con Flutter. Esta clase es la principal de todo el juego y se encarga de la configuración, renderizado y actualización de los elementos del juego; en pocas palabras, es la clase central y la que gobierna toda la aplicación; esta clase viene siendo el equivalente a la de MaterialApp en Flutter; a partir de esta clase podemos usar todo tipo de funcionalidades que forman parte del API de Flame como los tap, drag and drop, colisiones y un largo etc.
En Flame, tenemos dos tipos de clases principales, las clases Game que nos ofrece un esquema más simplificado que la clase FlameGame; por ejemplo, la clase Game solamente permite definir componentes locales a su misma clase, cosa que es impensable cuando tenemos una aplicación de gran tamaño.
En la clase Game, se define el tamaño de la pantalla, se crean los sprites, se establece la lógica del juego y se cargan los recursos necesarios, como imágenes y sonidos. Además, la clase Game también maneja el ciclo de actualización y renderizado del juego.
Al heredar de la clase Game, se puede personalizar la lógica y la apariencia del juego. Con la ayuda de la clase Game en Flame, se puede crear todo tipo de juegos 2D. Es importante mencionar que Flame también ofrece otros componentes, como Sprite y Animation, que ayudan a construir juegos más complejos y dinámicos.
De los componentes, hablaremos a continuación.
Componentes
Una de las características grandiosas que tiene Flame, es que, podemos usar las distintas características de Flame en componentes en las cuales, un componente pueden ser varias cosas como un jugador (player), un enemigo, un fondo, efectos de partículas, textos, joystick, entre otros; los cuales, podemos incorporar más características como el uso de colisiones, actualizaciones, interacción con teclas, drag and drop, tap, etc; como puedes darte cuenta, tiene un enfoque muy similar al de los widgets de Flutter, pero, en esta caso con componentes y basado en juegos.
En esencia, una entidad del juego, como el jugador, está representada por un componente, que es una clase, y gracias a la clase tipo Game de nuestra aplicación que es la entidad global, podemos comunicar los componentes entre sí; por ejemplo, con las entradas o las colisiones, los que nos da, un entorno muy modular y escalable a la aplicación.
Tenemos muchos tipos de componentes, en este libro, veremos algunos como:
- SpriteComponent
- SpriteAnimationComponent
- PositionComponent
- TextComponent
Puedes ver la lista completa en:
https://docs.flame-engine.org/1.5.0/flame/components.html
Conclusiones
En Flame, los componentes son objetos interactivos que forman parte de un juego 2D y pueden ser de diferentes tipos, como sprites, animaciones, efectos visuales, sonidos, entre otros; estos componentes interactivos pueden tener distintos propósitos como un juegador, un emenigo, un consumible, algun objeto que puede hacer daño a algun jugador y en esencia, cualquier cosa en el juego incluyendo el background del juego; los componentes son la pieza central en Flame y son gobernados por otros componentes o por las clases tipo Game que presentamos anteriormente.
Los componentes en Flame se utilizan para representar elementos visuales y funcionales en el juego, como personajes, obstáculos, objetos y elementos del entorno.
Lo estupendo de los componentes es que, cada componente tiene su propia estructura y comportamiento, y se pueden combinar y personalizar para crear juegos únicos. Al agregar componentes a una escena en Flame, se pueden definir cómo interactúan entre sí y cómo se comportan en el juego. Por ejemplo, se pueden definir las propiedades de un sprite, como su velocidad y su dirección, y cómo debe reaccionar al colisionar con otro objeto.
Los componentes en Flame proporcionan una organización clara del código y una gestión eficiente de recursos, lo que facilita la creación y el mantenimiento de juegos complejos; los componentes al ser clases, pueden heredad de otras clases, o implementar y poder reutilizaslas fácilmente. En resumen, los componentes en Flame son elementos esenciales en la creación de juegos 2D en Flutter, ya que permiten la creación de objetos interactivos y personalizados que componen el juego en sí.
Recuerda que este material forma parte de mi libro y curso completo sobre Flutter Flame.
- Andrés Cruz
![Andrés Cruz Andrés Cruz](/public/images/perfil.jpg)
Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter